[LLVMbugs] [Bug 13997] New: boost test crashes on exit with clang 4.1 (llvm 3.1svn)

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Oct 2 11:47:38 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=13997

             Bug #: 13997
           Summary: boost test crashes on exit with clang 4.1 (llvm
                    3.1svn)
           Product: clang
           Version: 3.1
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: joelr1 at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


http://stackoverflow.com/questions/12695625/boost-test-crashes-on-exit-with-clang-4-1-llvm-3-1svn

Consider this simple program:

    #include <string>
    #include <iostream>

    #define BOOST_TEST_DYN_LINK
    #define BOOST_TEST_MODULE "MyTest"
    #include <boost/test/unit_test.hpp>

    using namespace std;

    template<char* S>
    void Test()
    {
        BOOST_REQUIRE("Boom!" != string(S));
    }

    char bang[] = "Bang!";

    BOOST_AUTO_TEST_CASE(Boom)
    {
        char boom[] = "Boom!";
        Test<bang>();
    }

I'm on Mac OSX 10.8.2 (Mountain Lion) and have XCode 4.5 installed.

The program works when compiled with gcc, e.g. 

    gcc test.cpp -lboost_unit_test_framework-mt -lstdc++

but crashes when compiled with Apple clang 4.1 (tags/Apple/clang-421.11.65)
(based on LLVM 3.1svn)

    clang -std=c++11 -stdlib=libc++ -lc++ test.cpp
-lboost_unit_test_framework-mt

I'm using Boost 1.51.0, installed using BREW. Recompiling Boost using clang
does not help.

Any solutions to this mystery?

    ./a.out
    Running 1 test case...

    *** No errors detected
    Segmentation fault: 11

    gdb ./a.out
    GNU gdb 6.3.50-20050815 (Apple version gdb-1822) (Sun Aug  5 03:00:42 UTC
2012)
    ...
    This GDB was configured as "x86_64-apple-darwin"...Reading symbols for
shared libraries .... done

    (gdb) r
    Starting program: /private/tmp/xx/a.out 
    Reading symbols for shared libraries +++............................. done
    Running 1 test case...

    *** No errors detected

    Program received signal EXC_BAD_ACCESS, Could not access memory.
    Reason: 13 at address: 0x0000000000000000
    0x0000000100056c56 in boost::unit_test::test_unit::~test_unit ()
    (gdb) where
    #0  0x0000000100056c56 in boost::unit_test::test_unit::~test_unit ()
    #1  0x000000010002435f in
boost::unit_test::master_test_suite_t::~master_test_suite_t ()
    #2  0x00000001000244dd in boost::unit_test::framework_impl::~framework_impl
()
    #3  0x00007fff96179307 in __cxa_finalize ()
    #4  0x00007fff9617af57 in exit ()
    #5  0x00007fff944897e8 in start ()

    lldb a.out
    Current executable set to 'a.out' (x86_64).
    (lldb) r
    Process 71553 launched: '/private/tmp/xx/a.out' (x86_64)
    Running 1 test case...

    *** No errors detected
    Process 71553 stopped
    * thread #1: tid = 0x1c03, 0x0000000100056c56
libboost_unit_test_framework.dylib`boost::unit_test::test_unit::~test_unit() +
86, stop reason = EXC_BAD_ACCESS (code=13, address=0x0)
        frame #0: 0x0000000100056c56
libboost_unit_test_framework.dylib`boost::unit_test::test_unit::~test_unit() +
86
   
libboost_unit_test_framework.dylib`boost::unit_test::test_unit::~test_unit() +
86:
    -> 0x100056c56:  lock   
       0x100056c57:  xaddl  %ecx, -8(%rax)
       0x100056c5b:  testl  %ecx, %ecx
       0x100056c5d:  jg     0x100056c68               ;
boost::unit_test::test_unit::~test_unit() + 104

    clang --version
    Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
    Target: x86_64-apple-darwin12.2.0
    Thread model: posix

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list