-
Notifications
You must be signed in to change notification settings - Fork 648
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
valgrind inspired fixes #1693
Merged
pmconrad
merged 4 commits into
bitshares:develop
from
crypto-ape:valgrind-inspired-fixes
Apr 10, 2019
Merged
valgrind inspired fixes #1693
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
c8ce31a
fix referencing local stack variable in async thread
crypto-ape 376f031
explicitly cleanup external library facilities
crypto-ape 53af67e
fix referencing local stack variable in async thread // add missing p…
crypto-ape 3ab22f6
fix referencing local stack variable in async thread // capture share…
crypto-ape File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please remove the
&
and capturethis
instead. Same below.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am sorry, but this won't work.
Strictly speaking, it would be enough to capture by copy only
this->_node_delegate
. But omitting the implicit by-reference capture (i.e.&
) the__VA_ARGS__
won't be captured.Well, the simplest solution is to use the implicit capture by copy (i.e.
=
), which won't compile because the functions used with the macro consume parameters as references (see the interfaceclass node_delegate
), at least one uses such parameter as an additional output parameter.Furthermore, it is not easily seen that the original caller provides these references as of non-stack allocated entities. Thus, to be completely bug-proof, all of these parameters shall be passed in
shared_ptr
.Now, from the valgrind output I have produced, it does not seem this is the case. I suppose the proposed modification to be accepted as is (it provably solves an existing problem), and in the case a strictly complete solution is deemed required, a specific issue to be opened for the required refactor.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missed the VA_ARGS, sorry.
handle_message
, for example, uses a stack-allocatedmessage
(originating frommessage_oriented_connection_impl::read_loop
). Normally this lives longer than thehandle_message
call should take, however, it is re-used when reading the next message (which could lead to data corruption), and it is destroyed when reading fails (e. g. when the connection breaks down). This could even be related to #1256 @jmjatlanta ?I agree that this should be handled in another ticket.