Improve mutex handling when generating stacktraces with NANO_TIMED_LOCKS/txn tracker #2685
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.
A new CMake variable is introduced, which can be used like so:
-DNANO_TIMED_LOCKS_IGNORE_BLOCKED=ON
Which turns off the timings with NANO_TIMED_LOCKS for mutexes which are blocked while waiting for other thread to release the mutex. This necessarily needs to be done after acquiring the mutex so cannot avoid generating a stacktrace while holding the mutex (which is slow on Windows). With the database transaction tracker it can avoid generating the stacktrace while acquiring the track mutex, so this is now done (TSAN ran with the
rpc.database_txn_tracker
test).It does not help in the case where an unrelated mutex has been acquired prior to these operations.
Updated some comments