[cfe-dev] libc++ and libc++abi problem with stdexcept on linux

Ben Pope benpope81 at gmail.com
Tue Jan 28 23:31:38 PST 2014


On 11/01/14 02:20, Howard Hinnant wrote:
> It looks like the __libcpp_nmstr from libcxxabi/src/stdexcept.cpp needs to be copied/substituted in to the libcxx/src/stdexcept.cpp.  I haven't had a chance to confirm that with full test suite runs.

The results (from libcxx/test/testit) before and after the modification 
look like this:

****************************************************
Results for /home/ben/development/llvm/trunk/libcxx/test:
using clang version 3.4 (tags/RELEASE_34/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
with -std=c++11 -stdlib=libc++ -pthread -lc++abi 
-I/home/ben/development/llvm/trunk/libcxx/test/support 
-I/home/ben/development/llvm/trunk/libcxx/include 
-L/home/ben/development/llvm/trunk/libcxx/lib
----------------------------------------------------
sections without tests   : 0
sections with failures   : 22
sections without failures: 1086
                        +   ----
total number of sections : 1108
----------------------------------------------------
number of tests failed   : 78
number of tests passed   : 4565
                        +   ----
total number of tests    : 4643
****************************************************

53 of those failures are locale related (e.g., moneypunct_byname failed 
to construct for ru_RU.UTF-8), is this expected?

However, with ASAN, the results look this before the modification:

****************************************************
Results for /home/ben/development/llvm/trunk/libcxx/test:
using clang version 3.4 (tags/RELEASE_34/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
with -fsanitize=address -std=c++11 -stdlib=libc++ -pthread -lc++abi 
-I/home/ben/development/llvm/trunk/libcxx/test/support 
-I/home/ben/development/llvm/trunk/libcxx/include 
-L/home/ben/development/llvm/trunk/libcxx/lib
----------------------------------------------------
sections without tests   : 0
sections with failures   : 75
sections without failures: 1033
                        +   ----
total number of sections : 1108
----------------------------------------------------
number of tests failed   : 203
number of tests passed   : 4440
                        +   ----
total number of tests    : 4643
****************************************************

And after:

****************************************************
Results for /home/ben/development/llvm/trunk/libcxx/test:
using clang version 3.4 (tags/RELEASE_34/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
with -fsanitize=address -std=c++11 -stdlib=libc++ -pthread -lc++abi 
-I/home/ben/development/llvm/trunk/libcxx/test/support 
-I/home/ben/development/llvm/trunk/libcxx/include 
-L/home/ben/development/llvm/trunk/libcxx/lib
----------------------------------------------------
sections without tests   : 0
sections with failures   : 46
sections without failures: 1062
                        +   ----
total number of sections : 1108
----------------------------------------------------
number of tests failed   : 123
number of tests passed   : 4520
                        +   ----
total number of tests    : 4643
****************************************************

Which is a big improvement.

I'll look into some of the other errors later, but I seem to have 78 
errors of either
multiple definition of `operator new(unsigned long)
multiple definition of `operator delete(void*)

When compiling with ASAN turned on, so I'll have to fix that before 
analysing further, but I'm seeing these additional errors:
AddressSanitizer: heap-use-after-free on address 0x60400000dfe8

And these are probably intentional:
AddressSanitizer failed to allocate 0xffffffffffffffff bytes

Ben




More information about the cfe-dev mailing list