fix(build): hide C++ symbols to prevent conflicts with numpy/sklearn#248
Merged
fix(build): hide C++ symbols to prevent conflicts with numpy/sklearn#248
Conversation
21c2714 to
4f54b16
Compare
…247) - Add -fvisibility=hidden and -fvisibility-inlines-hidden compile flags - Add -Wl,--exclude-libs,ALL linker flag for Linux builds - Prevents __cxa_* C++ ABI symbols from being exported - Fixes "free(): invalid size" crash when importing hyperscan before sklearn
4f54b16 to
f9056aa
Compare
The workflow was only fetching the base ref but not the PR head ref, causing git diff to fail silently when comparing commits. This resulted in CMakeLists.txt changes not being detected properly.
d4b6899 to
7407057
Compare
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.
Summary
-fvisibility=hiddenand-fvisibility-inlines-hiddencompile flags-Wl,--exclude-libs,ALLlinker flag for Linux builds__cxa_*C++ ABI symbols from being exportedRoot Cause
When statically linking C++ libraries (vectorscan, libstdc++), internal symbols like
__cxa_allocate_exception,__cxa_throw,__dynamic_cast, etc. were being exported from the shared object. These conflicted with numpy/scipy/sklearn's own C++ code, causing heap corruption andfree(): invalid sizecrashes depending on import order.Changes
-fvisibility=hidden -fvisibility-inlines-hidden-Wl,--exclude-libs,ALL-fvisibility=hidden -fvisibility-inlines-hiddenFixes #247