workaround: MinGW thread_local use-after-free in ThreadContext#318
Open
ryanofsky wants to merge 1 commit into
Open
workaround: MinGW thread_local use-after-free in ThreadContext#318ryanofsky wants to merge 1 commit into
ryanofsky wants to merge 1 commit into
Conversation
MinGW has a bug where thread_local destructors can run on already-freed memory at thread exit, causing heap corruption. MSVC builds and non-Windows platforms are unaffected. This caused intermittent STATUS_HEAP_CORRUPTION in MinGW CI builds when ~ThreadContext walked freed memory at thread exit. See GThreadContext() in proxy-io.h for the full explanation and upstream bug references. Workaround: replace g_thread_context with a GThreadContext() accessor that on MinGW returns a heap-allocated object held by a trivially-destructible pointer, skipping destructor registration at thread exit. The object is deliberately leaked. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline and AI policy for information on the review process. |
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Work around mingw bug
thread_localbug https://sourceforge.net/p/mingw-w64/bugs/527/ that causes failures in windows "test cross-built" CI jobs in bitcoin/bitcoin#32387 by skippingthread_localdestructors in mingw.The workaround will result in resource leaks in mingw builds, that might be noticeable if a lot of threads are created and destroyed, but should not be a significant problem in practice.
This change is just a refactoring in other builds (including MSVC) not affected by this bug.