Anzeige:
Ergebnis 1 bis 8 von 8

Thema: c++ - corrupted double-linked list

  1. #1
    Registrierter Benutzer Avatar von buchwaldj
    Registriert seit
    02.08.2003
    Ort
    Leipzig
    Beiträge
    18

    c++ - corrupted double-linked list

    hi,
    ich hab ein mpi(mpich) programm in dem ich arrays mit dynamisch allokiertem speicher definiert hab. wenn ich den speicher am ende mit delete freigeben möchte, bekomm ich immer den fehler das ich den speicher doppelt freigebe(auch wenn ich es threadweise probiere...) und wenn sich das programm beendet ohne das vorher der speicher freigegeben wurde, kommt seltsamerweise immer am ende nach dem ausführen folgender felher:

    Code:
    *** glibc detected *** ./akinhor_mpi: corrupted double-linked list: 0x000000000081ea00 ***
    *** glibc detected *** ./akinhor_mpi: corrupted double-linked list: 0x000000000081ea00 ***
    ======= Backtrace: =========
    /lib/libc.so.6[0x7fefe43e0928]
    /lib/libc.so.6[0x7fefe43e0bf0]
    ======= Backtrace: =========
    /lib/libc.so.6[0x7fefe43e26e8]
    *** glibc detected *** ./akinhor_mpi: corrupted double-linked list: 0x000000000081ea00 ***
    /lib/libc.so.6(cfree+0x76)[0x7fefe43e2a36]
    /lib/libc.so.6[0x7feef011fbf0]
    /usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv+0x1e)[0x7fefe4947a8e]
    /lib/libc.so.6(cfree+0x76)[0x7feef0121a36]
    /usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv+0x64)[0x7fefe4949024]
    ======= Backtrace: =========
    /usr/lib/libstdc++.so.6/usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv./akinhor_mpi[0x40780a]
    *** glibc detected *** ./akinhor_mpi: corrupted double-linked list: 0x000000000081ea00 ***
    /lib/libc.so.6/usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv./akinhor_mpi(__gxx_personality_v0+0x119)[0x4035b9]
    ======= Memory map: ========
    /lib/libc.so.6[0x7fb25ad15bf0]
    /usr/lib/libstdc++.so.6(_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev+0x4a)[0x7feef068cefa]
    ./akinhor_mpi[0x40780a]
    /lib/libc.so.6[0x7fb25ad176e8]
    /lib/libc.so.6(__libc_start_main+0xe6)[0x7feef00ca1a6]
    ./akinhor_mpi(__gxx_personality_v0+0x119)[0x4035b9]
    ======= Memory map: ========
    /lib/libc.so.6(cfree+0x76)[0x7fb25ad17a36]
    ======= Backtrace: =========
    00400000-00591000 r-xp 00000000 08:13 1527170                            /home/joerg/akinhor_mpi
    00790000-00797000 rw-p 00190000 08:13 1527170                            /home/joerg/akinhor_mpi
    00797000-102cf000 rw-p 00797000 00:00 0                                  [heap]
    7feee8000000-7feee8021000 rw-p 7feee8000000 00:00 0
    7feee8021000-7feeec000000 ---p 7feee8021000 00:00 0
    7feeefea8000-7feeefeaa000 r-xp 00000000 08:11 1599629                    /lib/libdl-2.7.so
    7feeefeaa000-7feef00aa000 ---p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7feef00aa000-7feef00ac000 rw-p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7feef00ac000-7feef01f6000 r-xp 00000000 08:11 1599637                    /lib/libc-2.7.so
    7feef01f6000-7feef03f5000 ---p 0014a000 08:11 1599637                    /lib/libc-2.7.so
    7feef03f5000-7feef03f8000 r--p 00149000 08:11 1599637                    /lib/libc-2.7.so
    7feef03f8000-7feef03fa000 rw-p 0014c000 08:11 1599637                    /lib/libc-2.7.so
    7feef03fa00/lib/libc.so.60-7feef03ff000 rw-p 7feef03fa000 00:00 0
    7feef03ff000-7feef0415000 r-xp 00000000 08:11 1572998                    /lib/libgcc_s.so.1
    7feef0415000-7feef0615000 ---p 00016000 08:11 1572998                    /lib/libgcc_s.so.1
    7feef0615000-7feef0616000 rw-p 00016000 08:11 1572998                    /lib/libgcc_s.so.1
    7feef0616000-7feef0707000 r-xp 00000000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7feef0707000-7feef0906000 ---p 000f1000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7feef0906000-7feef090c000 r--p 000f0000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7feef090c000-7feef090f000 rw-p 000f6000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7feef090f000-7feef0922000 rw-p 7feef090f000 00:00 0
    7feef0922000-7feef09a4000 r-xp 00000000 08:11 1599645                    /lib/libm-2.7.so
    7feef09a4000-7feef0ba3000 ---p 00082000 08:11 1599645                    /lib/libm-2.7.so
    7feef0ba3000-7feef0ba5000 rw-p 00081000 08:11 1599645            /usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv+0x64)[0x7fb25b27e024]
    /lib/libc.so.6[0x7fbf5574fbf0]
    /usr/lib/libstdc++.so.6(_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev+0x4a)[0x7fb25b282efa]
    ./akinhor_mpi[0x40780a]
    /lib/libc.so.6[0x7fbf557516e8]
    *** glibc detected *** ======= Memory map: ========
    /lib/libc.so.6(cfree+0x76)[0x7fbf55751a36]
    /usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv+0x1e)[0x7fbf55cb6a8e]
    00400000-00591000 r-xp 00000000 08:13 1527170                            /home/joerg/akinhor_mpi
    00790000-00797000 rw-p 00190000 08:13 1527170                            /home/joerg/akinhor_mpi
    00797000-102cf000 rw-p 00797000 00:00 0                                  [heap]
    7fb254000000-7fb254021000 rw-p 7fb254000000 00:00 0
    7fb254021000-7fb258000000 ---p 7fb254021000 00:00 0
    7fb25aa9e000-7fb25aaa0000 r-xp 00000000 08:11 1599629                    /lib/libdl-2.7.so
    7fb25aaa0000-7fb25aca0000 ---p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7fb25aca0000-7fb25aca2000 rw-p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7fb25aca2000-7fb25adec000 r-xp 00000000 08:11 1599637                    /lib/libc-2.7.so
    7fb25adec000-7fb25afeb000 ---p 0014a000 08:11 1599637                    /lib/libc-2.7.so
    7fb25afeb000-7fb25afee000 r--p 00149000 08:11 1599637                    /lib/libc-2.7.so
    7fb25afee000-7fb25aff0000 rw-p 0014c000 08:11 1599637                    /lib/libc-2.7.so
    7fb25aff000/usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv+0x64)[0x7fbf55cb8024]
    0-7fb25aff5000 rw-p 7fb25aff0000 00:00 0
    7fb25aff5000-7fb25b00b000 r-xp 00000000 08:11 1572998                    /lib/libgcc_s.so.1
    7fb25b00b000-7fb25b20b000 ---p 00016000 08:11 1572998                    /lib/libgcc_s.so.1
    7fb25b20b000-7fb25b20c000 rw-p 00016000 08:11 1572998                    /lib/libgcc_s.so.1
    7fb25b20c000-7fb25b2fd000 r-xp 00000000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7fb25b2fd000-7fb25b4fc000 ---p 000f1000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7fb25b4fc000-7fb25b502000 r--p 000f0000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7fb25b502000-7fb25b505000 rw-p 000f6000 08:04 2703468                    /usr/lib/libstdc++.so.6.0.10
    7fb25b505000-7fb25b518000 rw-p 7fb25b505000 00:00 0
    7fb25b518000-7fb25b59a000 r-xp 00000000 08:11 1599645                    /lib/libm-2.7.so
    7fb25b59a000-7fb25b799000 ---p 00082000 08:11 1599645                    /lib/libm-2.7.so
    7fb25b799000-7fb25b79b000 rw-p 00081000 08:11 1599645            /usr/lib/libstdc++.so.6(_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev+0x4a)[0x7fbf55cbcefa]
            /lib/libm-2.7.so
    7fb25b79b000-7fb25b7a3000 r-xp 00000000 08:11 1599628                    /lib/librt-2.7.so
    7fb25b7a3000-7fb25b9a2000 ---p 00008000 08:11 1599628                    /lib/librt-2.7.so
    7fb25b9a2000-7fb25b9a4000 rw-p 00007*** glibc detected *** ./akinhor_mpi: corrupted double-linked list: 0x000000000081ea00 ***
    00400000-00591000 r-xp 00000000 08:13 1527170                            /home/joerg/akinhor_mpi
    00790000-00797000 rw-p 00190000 08:13 1527170                            /home/joerg/akinhor_mpi
    00797000-102cf000 rw-p 00797000 00:00 0                                  [heap]
    7fbf50000000-7fbf50021000 rw-p 7fbf50000000 00:00 0
    7fbf50021000-7fbf54000000 ---p 7fbf50021000 00:00 0
    7fbf554d8000-7fbf554da000 r-xp 00000000 08:11 1599629                    /lib/libdl-2.7.so
    7fbf554da000-7fbf556da000 ---p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7fbf556da000-7fbf556dc000 rw-p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7fbf556dc000-7fbf55826000 r-xp 00000000 08:11 1599637                    /lib/libc-2.7.so
    7fbf55826000-7fbf55a25000 ---p 0014a000 08:11 1599637                    /lib/libc-2.7.so
    7fbf55a25000-7fbf55a28000 r--p 00149000 08:11 1599637                    /lib/libc-2.7.so/lib/libc.so.6[0x7feef11bb928]
    /lib/libc.so.6[0x7feef11bbbf0]
    /lib/libc.so.6[0x7feef11bd6e8]
    /lib/libc.so.6(cfree+0x76)[0x7feef11bda36]
    /usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv+0x1e)[0x7feef1722a8e]
    /usr/lib/libstdc++.so.6(_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv+0x64)[0x7feef1724024]
    /usr/lib/libstdc++.so.6(_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev+0x4a)[0x7feef1728efa]
    ./akinhor_mpi[0x40780a]
    /lib/libc.so.6(__libc_start_main+0xe6)[0x7feef11661a6]
    ./akinhor_mpi(__gxx_personality_v0+0x119)[0x4035b9]
    ======= Memory map: ========
    00400000-00591000 r-xp 00000000 08:13 1527170                            /home/joerg/akinhor_mpi
    00790000-00797000 rw-p 00190000 08:13 1527170                            /home/joerg/akinhor_mpi
    00797000-102cf000 rw-p 00797000 00:00 0                                  [heap]
    7feeec000000-7feeec021000 rw-p 7feeec000000 00:00 0
    7feeec021000-7feef0000000 ---p 7feeec021000 00:00 0
    7feef0f44000-7feef0f46000 r-xp 00000000 08:11 1599629                    /lib/libdl-2.7.so
    7feef0f46000-7feef1146000 ---p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7feef1146000-7feef1148000 rw-p 00002000 08:11 1599629                    /lib/libdl-2.7.so
    7feef1148000-7feef1292000 r-xp 00000000 08:11 1599637                    /lib/libc-2.7.so
    7feef1292000-7feef1491000 ---p 0014a000 08:11 1599637                    /lib/libc-2.7.so
    7feef1491000-7feef1494000 r--p 00149000 08:11 1599637                    /lib/libc-2.7.so
    7feef1494000-7feef1496000 rw-p 0014c000 08:11 1599637                    /lib/libc-2.7.so
    7feef1496000-7feef149b000 rw-p 7feef1496000 00:00 0
    7feef149b000-7feef14b1000 r-xp 00000000 08:11 1572998                    /lib/libgcc_s.so.1
    7feef14b1000-7feef16b1000 ---p 00016000 08:11 1572998                    /lib/libgcc_s.so.1
    7feef16b1000-7feef16b2000 rw-p 00016000 08:11 1572998                    /lib/libgcc_s.so.1
    7feef16b2000-7feef17a3000 r-xp 00000000 08:04 2703468
    vieleicht kann mir da jmd helfen, thx.

  2. #2
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    Wo ist der Source?

  3. #3
    Registrierter Benutzer Avatar von buchwaldj
    Registriert seit
    02.08.2003
    Ort
    Leipzig
    Beiträge
    18
    allokieren tu ich den speicher folgendermaszen:

    Code:
      double ***v;
      v=new double** [mx+1];
      for(int i=0; i<=mx+1;i++){
    	v[i]=new double* [mz+1];
    	for(int j=0; j<=mz+1;j++){
    		v[i][j]=new double[4];
    	}
      }
      double **zeta;
      zeta=new double* [mx+1];
      for(int i=0; i<=mx+1;i++){
    	zeta[i]=new double[mz+1];
      }
    der obige fehler tritt auf wenn ich den speicher nicht wieder freigebe.
    wenn ich ihn mit
    Code:
    MPI::Finalize ( );
    for(int i=0; i<=(mx+1); i++){
    	for(int j=0;j<=(mz+1);j++){
    		delete[] v[i][j];
    		
    	}
    	delete[] v[i];
    	delete[] v;
    	delete[] zeta[i];
    	delete[] zeta; 
    }
    freigebe bekomm ich dann einen "double free or corruption" error.

  4. #4
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    Hast du mal versucht, "delete[] v;" und "delete[] zeta;" aus der äußeren Schleife rauszunehmen (außerhalb der Schleife ausführen)?
    Nur so ein Verdacht.

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Die Abbruchbedingung in den Schleifen ist nicht richtig, daher werden die Puffergrenzen nicht eingehalten.

    Bedenke auch, dass Speicheranforderungen mal schiefgehen können. Das könnte bei dir dazu führen, dass du versuchst ungültige Zeiger freizugeben, oder Speicher verlierst. Letzteres ist vielleicht nicht ganz so schlimm, ersteres schon.

  6. #6
    Registrierter Benutzer Avatar von buchwaldj
    Registriert seit
    02.08.2003
    Ort
    Leipzig
    Beiträge
    18
    Zitat Zitat von John W Beitrag anzeigen
    Hast du mal versucht, "delete[] v;" und "delete[] zeta;" aus der äußeren Schleife rauszunehmen (außerhalb der Schleife ausführen)?
    Nur so ein Verdacht.
    ja, hab ich; selbes problem.

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Und die Schleifenköpfe zu verändern, gemäß meiner "Diagnose", bringt das nichts?

  8. #8
    Registrierter Benutzer Avatar von buchwaldj
    Registriert seit
    02.08.2003
    Ort
    Leipzig
    Beiträge
    18
    jep, ganz dummer off by one error, ich war da einfach gedanklich auf der falschen fährte....
    thx.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •