eth/tracers: avoid using blockCtx concurrently #24286
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.
This is an alternative to #24283, and also closes #23205.
This PR fixes the root cause, which are data-races in the blockhash cache. Although crisp new evm's were used, they all fell back to the same blockhash lookup closure.
This PR produces identical results each time:
Timing-wise, this PR (like master) is still slower than the more simplistic approach in #24283, so I'd prefer that one actually. However, for a custom js-tracer, it's likely that this pr / master is faster, whereas #24283 is overall faster on native tracers.
Example race: