VERS_1.0 { local: _Znwm; # operator new(unsigned long); _ZnwmRKSt9nothrow_t; # operator new(unsigned long, std::nothrow_t const&); _ZdlPv; # operator delete(void*); _ZdlPvRKSt9nothrow_t; # operator delete(void*, std::nothrow_t const&); _Znam; # operator new[](unsigned long); _ZnamRKSt9nothrow_t; # operator new[](unsigned long, std::nothrow_t const&); _ZdaPv; # operator delete[](void*); _ZdaPvRKSt9nothrow_t; # operator delete[](void*, std::nothrow_t const&); extern "C++" { # # Hide everything in std namespace (C++ STL symbols): # # This fixes several intermittent crashes that were happening in the # deep_learning module in different forms on different platforms, due to # tensorflow calling madlib's instantiation of STL template functions, # which circumvents the hiding of madlib's global new and delete symbols # (intended to override the libstdc++ version of these symbols for all # of libmadlib.so, but not for anything outside of it). # # The main crash we looked at was due to the use of std::set in # madlib/src/modules/linalg/metric.cpp. Tensorflow is a python library, # but it loads Google's C++ protobuf library _message.so. The crash was # happening because _message.so also uses std::set for some # things, and it ends up calling madlib's instantiation of them. We were # able to fix it by hiding all madlib symbols associated with the std::set