[logcat-parse] Support repeated handles. #35
Merged
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.
I've come across some log files which would contain several thousand
global references, as per the
grefc
values, but when processing vialogcat-parse
grefs.AlivePeers.Count()
would invariably return11
,or some other ludicrously low value given the input.
On further investigation, a problem is with repeated handle values.
Once a handle has been disposed, there's no reason why it couldn't be
reused again:
Unfortunately,
logcat-parse
would treat the second +g+ as if it werean alias of the originally created instance. As such,
grefs.AlivePeers.Count()
would return 0, not 1, which is wrong.To better support this, keep a separate
alive
list of peers, andonly consult the "alive" list when performing handle lookups. This
prevents the original -- dead! -- PeerInfo from being reused, allowing
us to have (more?) accurate peer information.