Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Strano errore e segmentation fault con G++

    Salve a tutti,

    Dopo aver compilato con g++ un programma che fa intenso uso di librerie scritte da altri, la sua esecuzione termina con un segmentation fault e con il seguente messaggio d'errore:




    *** glibc detected *** ./software: corrupted double-linked list: 0x0000000004bf0310 ***
    ======= Backtrace: =========
    /lib/x86_64-linux-gnu/libc.so.6(+0x76bb6)[0x7fedbacb9bb6]
    /lib/x86_64-linux-gnu/libc.so.6(+0x7a931)[0x7fedbacbd931]
    /lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x6e)[0x7fedbacbf31e]
    /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_Znwm+0x1d)[0x7fedbb52be0d]
    /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_Znam+0x9)[0x7fedbb52bf29]
    ./reggio[0x40b415]
    ./reggio[0x4023e3]
    ./reggio[0x403eab]
    /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff)[0x7fedbac61eff]
    ./reggio[0x401569]
    ======= Memory map: ========
    00400000-00411000 r-xp 00000000 08:07 9704765 /home/ubuntu/develop/software
    00610000-00611000 r--p 00010000 08:07 9704765 /home/ubuntu/develop/software
    00611000-00612000 rw-p 00011000 08:07 9704765 /home/ubuntu/develop/software
    00612000-00ada000 rw-p 00000000 00:00 0
    0167a000-05c79000 rw-p 00000000 00:00 0 [heap]
    7fed48000000-7fed48021000 rw-p 00000000 00:00 0
    7fed48021000-7fed4c000000 ---p 00000000 00:00 0
    7fed4da47000-7fedbac43000 rw-p 00000000 00:00 0
    7fedbac43000-7fedbadcd000 r-xp 00000000 08:07 11538055 /lib/x86_64-linux-gnu/libc-2.13.so
    7fedbadcd000-7fedbafcc000 ---p 0018a000 08:07 11538055 /lib/x86_64-linux-gnu/libc-2.13.so
    7fedbafcc000-7fedbafd0000 r--p 00189000 08:07 11538055 /lib/x86_64-linux-gnu/libc-2.13.so
    7fedbafd0000-7fedbafd1000 rw-p 0018d000 08:07 11538055 /lib/x86_64-linux-gnu/libc-2.13.so
    7fedbafd1000-7fedbafd7000 rw-p 00000000 00:00 0
    7fedbafd7000-7fedbafec000 r-xp 00000000 08:07 11538083 /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fedbafec000-7fedbb1eb000 ---p 00015000 08:07 11538083 /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fedbb1eb000-7fedbb1ec000 r--p 00014000 08:07 11538083 /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fedbb1ec000-7fedbb1ed000 rw-p 00015000 08:07 11538083 /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fedbb1ed000-7fedbb271000 r-xp 00000000 08:07 11538092 /lib/x86_64-linux-gnu/libm-2.13.so
    7fedbb271000-7fedbb470000 ---p 00084000 08:07 11538092 /lib/x86_64-linux-gnu/libm-2.13.so
    7fedbb470000-7fedbb471000 r--p 00083000 08:07 11538092 /lib/x86_64-linux-gnu/libm-2.13.so
    7fedbb471000-7fedbb472000 rw-p 00084000 08:07 11538092 /lib/x86_64-linux-gnu/libm-2.13.so
    7fedbb472000-7fedbb55a000 r-xp 00000000 08:07 10231999 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14
    7fedbb55a000-7fedbb759000 ---p 000e8000 08:07 10231999 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14
    7fedbb759000-7fedbb761000 r--p 000e7000 08:07 10231999 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14
    7fedbb761000-7fedbb763000 rw-p 000ef000 08:07 10231999 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14
    7fedbb763000-7fedbb778000 rw-p 00000000 00:00 0
    7fedbb778000-7fedbb799000 r-xp 00000000 08:07 11538042 /lib/x86_64-linux-gnu/ld-2.13.so
    7fedbb799000-7fedbb977000 rw-p 00000000 00:00 0
    7fedbb977000-7fedbb998000 rw-p 00000000 00:00 0
    7fedbb998000-7fedbb999000 r--p 00020000 08:07 11538042 /lib/x86_64-linux-gnu/ld-2.13.so
    7fedbb999000-7fedbb99b000 rw-p 00021000 08:07 11538042 /lib/x86_64-linux-gnu/ld-2.13.so
    7fff92101000-7fff92168000 rw-p 00000000 00:00 0 [stack]
    7fff92174000-7fff92175000 r-xp 00000000 00:00 0 [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
    Errore di segmentazione



    Sapete cosa significa "corrupted double-linked list" ?

  2. #2
    E' un errore di segmentation fault: esegui qualche operazione di memoria non consentita. Quindi, ad esempio, deallochi memoria non allocata (per qualche errore), oppure accedi a memoria non allocata ecc...
    In ogni caso devi ricontrollare il codice per trovare il bug. Prova a debuggare.
    lolide
    Java Programmer

    Informati

  3. #3
    So cos'è un segmentation faul, chiedevo nello specifico cosa fosse il "corrupted double-linked list". L'errore sembra venir fuori da una new di un array che è dentro un ciclo for. Il fatto strano è che ilprogramma va in titl dopo numerose iterazioni.....

  4. #4
    Esattamente come si traduce, cioè "la double-linked list è corrotta", ma non ti affidare a quest'errore, non sono messaggi precisi. Il fatto sicuro è che c'è un segmentation fault, vedi un po' se magari l'array che allochi è troppo piccolo oppure controlla che, dopo new, il puntatore sia diverso da 0.
    lolide
    Java Programmer

    Informati

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    controlla anche che per sbaglio non deallochi 2 volte la stessa locazione di memoria (non ridete, ma questa roba mi ha dato non pochi problemi)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.