Fixes for glibc bug around locale and TLS crashes #121
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 user reported spindle crashes, which came from the get_nprocs routine called under spindle malloc usage.
Upon investigation this was https://sourceware.org/bugzilla/show_bug.cgi?id=32483. The application created a thread that reached spindle and called get_nprocs(). That routine called 'isspace' routine, which access locale, and triggered the bug described above and crashed.
This PR checks for new threads using a safe version of TLS, then manually resets the locale for any new threads. That works around the latter sigsegv that would come under spindle malloc usage.
This PR also adds a set of heap debugging routines (which are currently off) that were used while diagnosing this.
We also added a test. The test doesn't reproduce the original fault and could use more work, but is still a useful test.