aws-taylor commented on issue #17589:
URL: 
https://github.com/apache/incubator-mxnet/issues/17589#issuecomment-680287164


   ```_ZN4dmlc14RecordIOReader10NextRecordEPSs``` corresponds to  
```dmlc::RecordIOReader::NextRecord(std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >*)```
   
   I ran into this problem because I was compiling MxNet with GCC 8 but linking 
to a 4.9 libstdc++. Somewhere between 4.9 and 8, there was an ABI change to 
std::string in order to comply with C++11 requirements that resulted in 
std::string being moved into the **std::__cxx11** namespace. You can see this 
below (T ~= 'defined', 'U' ~= missing):
   
   ```
   >> nm -C libmxnet.so | grep 'dmlc::RecordIOReader::NextRecord'
   
   000000000471cc60 T 
dmlc::RecordIOReader::NextRecord(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> >*)
   0000000000cd897c t 
dmlc::RecordIOReader::NextRecord(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> >*) [clone .cold.54]
                    U dmlc::RecordIOReader::NextRecord(std::string*)
   ```
   
   If you look in libmxnet.so, you'll find tons of similarly missing symbols. 
For whatever reason, NextRecord(...) just happens to be the first in the 
compilation.
   
   Normally it is possible to force GCC to compile using the old, pre-C++11 
namespace by compiling with ```-D_GLIBCXX_USE_CXX11_ABI=0```, however there 
appears to have been a bug in MxNet that didn't forward CXX_FLAGS to the build 
correctly. I haven't tracked down precisely which commit fixed the problem, but 
if you run into this issue, try using a newer commit or make sure that your GCC 
and libstdc++ versions are compatible.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to