[LLVMbugs] [Bug 11899] New: Double-running of global dtors in shared build

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jan 31 13:11:22 PST 2012


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

             Bug #: 11899
           Summary: Double-running of global dtors in shared build
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: fischman at chromium.org
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


In the clang & the shared_library build of chromium browser_tests (setup
described in bug 11898), running the browser_tests binary like:
./out/Debug/browser_tests --gtest_filter=InProcessBrowserTest.Empty
runs a test, forks a browser, concludes the test, tears down the browser, and
the browser crashes with:

[25190:25190:0131/131308:431338029426:ERROR:process_util_posix.cc(142)]
Received signal 11
        base::debug::StackTrace::StackTrace() [0x7f9666f43ffe]
        base::(anonymous namespace)::StackDumpSignalHandler() [0x7f9666facfd4]
        0x7f965c08caf0
        DieFromDoubleFree() [0x7f96699578fe]
        ValidateAllocatedRegion() [0x7f9669957872]
        (anonymous namespace)::do_free_with_callback() [0x7f966995760b]
        (anonymous namespace)::do_free() [0x7f966995588c]
        operator delete[]() [0x7f9669da25fe]
        testing::internal::String::~String() [0x51db0d]
        testing::internal::String::~String() [0x51d755]
        std::_Destroy<>() [0x1d21505]
        std::_Destroy_aux<>::__destroy<>() [0x1d214d7]
        std::_Destroy<>() [0x1d2149d]
        std::_Destroy<>() [0x1d21331]
        std::vector<>::~vector() [0x7f96633997fe]
        std::vector<>::~vector() [0x7f96633994c5]
        0x7f965c092630
        0x7f966304bc56

This doesn't happen with the gcc/shared_library build, or with
clang/static_library build.

I'd be happy to provide more info but not sure how to dig into this further.
It *feels* like there's a global std::vector<testing::internal::String> that's
being destroyed more than once.
I suspect this one:
http://code.google.com/codesearch#OAMlx_jo-ck/src/testing/gtest/src/gtest-port.cc&exact_package=chromium&q=vector%3C%5Ba-z:%5D*String%20case:yes%20file:gtest&ct=rc&cd=2&sq=&l=631

Any ideas on how to dig further?
(gdb-based attempts are likely to be stymied by bug 11898, unless they don't
require symbol inspection)

-- 
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