stl::multimap macht auf einmal ärger :-(



  • Hey Leute,

    ich habe schon lange in einem Programm eine multimap benutzt und nie Probleme gehabt. Doch seit einer Woche mach das Ding imma ärger wenn die Klasse die die multimap benutzt in den deconstruktor läuft.

    *** glibc detected *** ./Debug/TaskDebug: free(): invalid pointer: 0xb4a34000 ***
    ======= Backtrace: =========
    /lib/tls/i686/cmov/libc.so.6[0xb7b30a85]
    /lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7b344f0]
    /usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7cfbb11]
    ./Debug/TaskDebug[0x8066104]
    ./Debug/TaskDebug[0x8057e86]
    /lib/tls/i686/cmov/libc.so.6(exit+0xd4)[0xb7af3084]
    /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe8)[0xb7adb458]
    ./Debug/TaskDebug(__gxx_personality_v0+0x219)[0x804aab1]
    ======= Memory map: ========
    08048000-08072000 r-xp 00000000 08:01 8159745    /home/dwal/Workspace/source/ITask/Debug/TaskDebug
    08072000-08073000 rw-p 00029000 08:01 8159745    /home/dwal/Workspace/source/ITask/Debug/TaskDebug
    08073000-08239000 rw-p 08073000 00:00 0          [heap]
    b3800000-b3821000 rw-p b3800000 00:00 0 
    b3821000-b3900000 ---p b3821000 00:00 0 
    b39df000-b39e8000 r-xp 00000000 08:01 3876171    /lib/tls/i686/cmov/libnss_files-2.7.so
    b39e8000-b39ea000 rw-p 00008000 08:01 3876171    /lib/tls/i686/cmov/libnss_files-2.7.so
    b39fd000-b3a09000 rw-s 00000000 00:09 3113035    /SYSV00001fb4 (deleted)
    b3a09000-b3a12000 rw-s 00000000 00:09 3080266    /SYSV00001fac (deleted)
    b3a12000-b3a16000 rw-s 00000000 00:09 3047497    /SYSV00001fb0 (deleted)
    b3a16000-b3a1f000 rw-s 00000000 00:09 3014728    /SYSV00001fa8 (deleted)
    b3a1f000-b3a24000 rw-s 00000000 00:09 2981959    /SYSV00001fa4 (deleted)
    b3a24000-b3a32000 rw-s 00000000 00:09 2949190    /SYSV00001fa0 (deleted)
    b3a32000-b3a33000 ---p b3a32000 00:00 0 
    b3a33000-b4233000 rw-p b3a33000 00:00 0 
    b4233000-b4234000 ---p b4233000 00:00 0 
    b4234000-b4a34000 rw-p b4234000 00:00 0 
    b4a34000-b4a35000 rw-s 00000000 00:09 3178573    /SYSV00001fb8 (deleted)
    b4a35000-b4a36000 ---p b4a35000 00:00 0 
    b4a36000-b5236000 rw-p b4a36000 00:00 0 
    b5236000-b5237000 ---p b5236000 00:00 0 
    b5237000-b5a38000 rw-p b5237000 00:00 0 
    b5a38000-b5a39000 ---p b5a38000 00:00 0 
    b5a39000-b6239000 rw-p b5a39000 00:00 0 
    b6239000-b623a000 ---p b6239000 00:00 0 
    b623a000-b6a3a000 rw-p b623a000 00:00 0 
    b6a3a000-b6a3b000 ---p b6a3a000 00:00 0 
    b6a3b000-b723b000 rw-p b6a3b000 00:00 0 
    b723b000-b723c000 ---p b723b000 00:00 0 
    b723c000-b7a3c000 rw-p b723c000 00:00 0 
    b7a3c000-b7a3d000 rw-s 00000000 00:09 3145804    /SYSV00001fc0 (deleted)
    b7a3d000-b7a49000 rw-s 00000000 00:09 3113035    /SYSV00001fb4 (deleted)
    b7a49000-b7a52000 rw-s 00000000 00:09 3080266    /SYSV00001fac (deleted)
    b7a52000-b7a56000 rw-s 00000000 00:09 3047497    /SYSV00001fb0 (deleted)
    b7a56000-b7a5f000 rw-s 00000000 00:09 3014728    /SYSV00001fa8 (deleted)
    b7a5f000-b7a64000 rw-s 00000000 00:09 2981959    /SYSV00001fa4 (deleted)
    b7a64000-b7a65000 rw-p b7a64000 00:00 0 
    b7a65000-b7a79000 r-xp 00000000 08:01 2132382    /usr/lib/libz.so.1.2.3.3
    b7a79000-b7a7a000 rw-p 00013000 08:01 2132382    /usr/lib/libz.so.1.2.3.3
    b7a7a000-b7a7b000 rw-p b7a7a000 00:00 0 
    b7a7b000-b7a8f000 r-xp 00000000 08:01 3876165    /lib/tls/i686/cmov/libnsl-2.7.so
    b7a8f000-b7a91000 rw-p 00013000 08:01 3876165    /lib/tls/i686/cmov/libnsl-2.7.so
    b7a91000-b7a93000 rw-p b7a91000 00:00 0 
    b7a93000-b7a9c000 r-xp 00000000 08:01 3876158    /lib/tls/i686/cmov/libcrypt-2.7.so
    b7a9c000-b7a9e000 rw-p 00008000 08:01 3876158    /lib/tls/i686/cmov/libcrypt-2.7.so
    b7a9e000-b7ac5000 rw-p b7a9e000 00:00 0 
    b7ac5000-b7c0e000 r-xp 00000000 08:01 3876154    /lib/tls/i686/cmov/libc-2.7.so
    b7c0e000-b7c0f000 r--p 00149000 08:01 3876154    /lib/tls/i686/cmov/libc-2.7.so
    b7c0f000-b7c11000 rw-p 0014a000 08:01 3876154    /lib/tls/i686/cmov/libc-2.7.so
    b7c11000-b7c14000 rw-p b7c11000 00:00 0 
    b7c14000-b7c1e000 r-xp 00000000 08:01 3858496    /lib/libgcc_s.so.1
    b7c1e000-b7c1f000 rw-p 0000a000 08:01 3858496    /lib/libgcc_s.so.1
    b7c1f000-b7c42000 r-xp 00000000 08:01 3876162    /lib/tls/i686/cmov/libm-2.7.so
    b7c42000-b7c44000 rw-p 00023000 08:01 3876162    /lib/tls/i686/cmov/libm-2.7.so
    b7c44000-b7d2c000 r-xp 00000000 08:01 2132307    /usr/lib/libstdc++.so.6.0.9
    b7d2c000-b7d2f000 r--p 000e8000 08:01 2132307    /usr/lib/libstdc++.so.6.0.9
    b7d2f000-b7d31000 rw-p 000eb000 08:01 2132307    /usr/lib/libstdc++.so.6.0.9
    b7d31000-b7d38000 rw-p b7d31000 00:00 0 
    b7d38000-b7d4c000 r-xp 00000000 08:01 3876180    /lib/tls/i686/cmov/libpthread-2.7.so
    b7d4c000-b7d4e000 rw-p 00013000 08:01 3876180    /lib/tls/i686/cmov/libpthread-2.7.so
    b7d4e000-b7d50000 rw-p b7d4e000 00:00 0 
    b7d50000-b7eec000 r-xp 00000000 08:01 2134730    /usr/lib/libmysqlclient.so.15.0.0
    b7eec000-b7f2f000 rw-p 0019b000 08:01 2134730    /usr/lib/libmysqlclient.so.15.0.0
    b7f2f000-b7f30000 rw-p b7f2f000 00:00 0 
    b7f30000-b7f3e000 rw-s 00000000 00:09 2949190    /SYSV00001fa0 (deleted)
    b7f3e000-b7f3f000 rw-p b7f3e000 00:00 0 
    b7f3f000-b7f43000 rw-s 00000000 00:09 2916421    /SYSV00001fbc (deleted)
    b7f43000-b7f45000 rw-p b7f43000 00:00 0 
    b7f45000-b7f46000 r-xp b7f45000 00:00 0          [vdso]
    b7f46000-b7f60000 r-xp 00000000 08:01 3858451    /lib/ld-2.7.so
    b7f60000-b7f62000 rw-p 00019000 08:01 3858451    /lib/ld-2.7.so
    bfb8d000-bfba2000 rw-p bffeb000 00:00 0          [stack]
    

    Was läuft da wo schief oda wie komm ich am besten an den Fehler.
    lg davidwal



  • davidwal schrieb:

    deconstruktor

    Was ist das? Wenn du die Methode, die eine Klasse zerstört, meinst, dann heisst das Destruktor.

    Was läuft da wo schief oda wie komm ich am besten an den Fehler.

    Indem du mit einem Debugger schrittweise durchgehst und relevante Variablen überprüfst. Dein Auszug bringt uns übrigens rein gar nichts.



  • davidwal schrieb:

    Doch seit einer Woche mach das Ding imma ärger wenn die Klasse die die multimap benutzt in den deconstruktor läuft.

    Reiner Verdacht: Vor etwa einer Woche wurde etwas eingebaut das den Stack zerlegt, und erst beim Destruktor wirkt sich das negativ aus... Es gibt manchmal Fehler die sich erst an anderer Stelle zeigen. Und ich bezweifel das die std::multimap die direkte Fehlerursache ist.

    cu André


Anmelden zum Antworten