Public bug reported:

Binary package hint: gcc-4.1


Using: Ubuntu 7.10
Default g++ installation.


following program crushes in ::free() from std::string destructor

\code

// file: main.cc

#include <iostream>
#include <string>
#include <typeinfo>
#include <cstdlib>
#include <cxxabi.h>

using namespace std;

std::string
demangle (const char* s)
{
        int status = 0;

        char* demangled = abi::__cxa_demangle(s, 0, 0, &status);

        if (!demangled)
                return "__demangle_failed";

        std::string ans (demangled);

        ::free(demangled);

        return ans;
}

template <class T>
std::string print_class_name (const T& t)
{
        cout << demangle(typeid(t).name()).c_str() << endl;
}

class A {};

int main (int argc, char* argv[])
{
        print_class_name((size_t)1);
        print_class_name((int)1);
        print_class_name((unsigned int)1);
        print_class_name(A());

        return 0;
}

\endcode

generating executable via: 'g++ -o test -g main.cc'

after running the generated executable the program crushes with
following printed in the console:

unsigned int
*** glibc detected *** ./test: free(): invalid pointer: 0x0804a17c ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7d6ad65]
/lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7d6e800]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7f33d81]
/usr/lib/libstdc++.so.6(_ZNSs4_Rep10_M_destroyERKSaIcE+0x1d)[0xb7f0f90d]
/usr/lib/libstdc++.so.6(_ZNSsD1Ev+0x51)[0xb7f117b1]
./test(__gxx_personality_v0+0x288)[0x8048b50]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7d17050]
./test(__gxx_personality_v0+0x49)[0x8048911]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 08:14 2518389    /home/rafi/tmp/test
0804a000-0804b000 rw-p 00001000 08:14 2518389    /home/rafi/tmp/test
0804b000-0806c000 rw-p 0804b000 00:00 0          [heap]
b7b00000-b7b21000 rw-p b7b00000 00:00 0 
b7b21000-b7c00000 ---p b7b21000 00:00 0 
b7d00000-b7d01000 rw-p b7d00000 00:00 0 
b7d01000-b7e45000 r-xp 00000000 08:14 3989915    
/lib/tls/i686/cmov/libc-2.6.1.so
b7e45000-b7e46000 r--p 00143000 08:14 3989915    
/lib/tls/i686/cmov/libc-2.6.1.so
b7e46000-b7e48000 rw-p 00144000 08:14 3989915    
/lib/tls/i686/cmov/libc-2.6.1.so
b7e48000-b7e4b000 rw-p b7e48000 00:00 0 
b7e4b000-b7e55000 r-xp 00000000 08:14 3989955    /lib/libgcc_s.so.1
b7e55000-b7e56000 rw-p 0000a000 08:14 3989955    /lib/libgcc_s.so.1
b7e56000-b7e57000 rw-p b7e56000 00:00 0 
b7e57000-b7e7a000 r-xp 00000000 08:14 3989947    
/lib/tls/i686/cmov/libm-2.6.1.so
b7e7a000-b7e7c000 rw-p 00023000 08:14 3989947    
/lib/tls/i686/cmov/libm-2.6.1.so
b7e7c000-b7f64000 r-xp 00000000 08:14 4155725    /usr/lib/libstdc++.so.6.0.9
b7f64000-b7f67000 r--p 000e8000 08:14 4155725    /usr/lib/libstdc++.so.6.0.9
b7f67000-b7f69000 rw-p 000eb000 08:14 4155725    /usr/lib/libstdc++.so.6.0.9
b7f69000-b7f6f000 rw-p b7f69000 00:00 0 
b7f7e000-b7f81000 rw-p b7f7e000 00:00 0 
b7f81000-b7f9b000 r-xp 00000000 08:14 3989901    /lib/ld-2.6.1.so
b7f9b000-b7f9d000 rw-p 00019000 08:14 3989901    /lib/ld-2.6.1.so
bf9a5000-bf9bb000 rw-p bf9a5000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
Aborted (core dumped)

I have tried to debug via gdb plus dbg packages for libstdc++ and libc
It seems that ::free() gets a null pointer.

** Affects: gcc-4.1 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
segmentation fault in std::string destructor
https://bugs.launchpad.net/bugs/185918
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to