-
Notifications
You must be signed in to change notification settings - Fork 4k
ARROW-5130: [C++][Python] Limit exporting of std::* symbols #4232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@pitrou, I saw in #1953 (comment) that What's a good way to test whether this change allows them to co-exist without such reuse (in a hope that they both use symbols from libstdc++)? |
|
Thanks for working on this. This is obviously a complex issue that we've invested a lot of time in trying to fix and haven't succeeded yet. There are a lot of build and system configurations we'll have to test out to see whether this causes issues Would you mind using our preferred PR titling style (which is needed for our changelog management tools)? "ARROW-5130: [C++][Python] ..." |
Codecov Report
@@ Coverage Diff @@
## master #4232 +/- ##
=========================================
+ Coverage 88.04% 89.2% +1.16%
=========================================
Files 758 617 -141
Lines 92803 82345 -10458
Branches 1251 0 -1251
=========================================
- Hits 81708 73457 -8251
+ Misses 10982 8888 -2094
+ Partials 113 0 -113Continue to review full report at Codecov.
|
|
@wesm, I've updated the title and the PR. Now it passes both Travis integration tests & my internal tests mentioned in the description. What would be a good next step? |
xhochy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
@alsrgv The symptom was crashes in Plasma. If there are no crashes on CI it should be good. |
| # a system with an older libstdc++ which doesn't include the necessary | ||
| # c++11 symbols. | ||
| std::*; | ||
| *std::__once_call*; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Out of curiosity, why the leading asterisk?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's this symbol that was causing issues, and it starts with void std::...:
void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_base::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>&, bool&)> (std::__future_base::_State_base*, std::reference_wrapper<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()> >, std::reference_wrapper<bool>)> >()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see, thanks.
This patch addresses the incompatibility of
pyarrowandtensorflowwheels provided by Google.It has been tested with:
As well as more complicated examples such as https://github.com/horovod/horovod/blob/master/examples/keras_spark_rossmann.py which uses PyArrow + Petastorm to read the data.
Fixes https://issues.apache.org/jira/browse/ARROW-5130