Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] mem leak #585

Open
gaokun2 opened this issue Sep 11, 2024 · 0 comments
Open

[BUG] mem leak #585

gaokun2 opened this issue Sep 11, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@gaokun2
Copy link

gaokun2 commented Sep 11, 2024

Error

In scratch.h class ScratchStoreManager,
in member function destroy:
<<<<<<
while (!_scratch_pool.empty()) {
auto scratch = _scratch_pool.pop();
while (scratch == nullptr) {
_scratch_pool.wait_for_push_notify();
scratch = _scratch_pool.pop();
}
delete scratch;
}
the bellowing codes should be replaced by following codes

    _scratch_pool.push(_scratch);
    _scratch_pool.push_notify_all();
    while (!_scratch_pool.empty())
    {
        auto scratch = _scratch_pool.pop();
        while (scratch == nullptr)
        {
            _scratch_pool.wait_for_push_notify();
            scratch = _scratch_pool.pop();
        }
        delete scratch;
    }
    _scratch = nullptr;

=====================
in deconstructor function:
<<<<<<
_scratch->clear();
_scratch_pool.push(_scratch);
_scratch_pool.push_notify_all();
the bellowing codes should be replaced by following codes

    if (_scratch) 
    {
        _scratch->clear();
        _scratch_pool.push(_scratch);
        _scratch_pool.push_notify_all();
    }

=====================

Additional Details

origin code will cause one object in multithread-queue does not deconstruct, which object is member "_scratch"

@gaokun2 gaokun2 added the bug Something isn't working label Sep 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant