zistenie kde je v programe double free

Sekcia: Programovanie 15.01.2007 | 22:05
Avatar nahnevaný mladý muž gNewSense  Používateľ
Mam vacsi program, pri je ho ukonceni mi glibc zahlasi nejaku "double free" chybu. Skompiloval som to s -ggdb, skusal som gdb aj valgrind ale nejak neviem prist na to kde je chyba, co a jak mam v gdb (alebo kde?) nastavit tak aby som to zistil ze kde je chyba? Cislo riadku by bolo super.
    • Re: zistenie kde je v programe double free 15.01.2007 | 22:21
      Avatar borg Arch, Debian jessie  Administrátor
      nevolas este raz free() na pointer ktory si uz raz dealokoval s free()?
    • Re: zistenie kde je v programe double free 15.01.2007 | 22:22
      Avatar uid0 Debian  Používateľ
      je to jednoduche. vyskusaj si na jednoduchom programe, ktory alokuje pamat a dvakrat po sebe da free

      gcc free.c -ggdb -o free
      gdb free

      a teraz

      (gdb) run
      Starting program: ./free
      *** glibc detected *** double free or corruption (top): 0x0804a008 ***

      Program received signal SIGABRT, Aborted.
      0xffffe410 in __kernel_vsyscall ()
      (gdb) bt
      #0 0xffffe410 in __kernel_vsyscall ()
      #1 0xa7e2c811 in raise () from /lib/tls/i686/cmov/libc.so.6
      #2 0xa7e2dfb9 in abort () from /lib/tls/i686/cmov/libc.so.6
      #3 0xa7e61c8a in __fsetlocking () from /lib/tls/i686/cmov/libc.so.6
      #4 0xa7e6951f in mallopt () from /lib/tls/i686/cmov/libc.so.6
      #5 0xa7e695c2 in free () from /lib/tls/i686/cmov/libc.so.6
      #6 0x080483ca in main () at free.c:7
      (gdb)
      Debian. apt-get into it…
    • Re: zistenie kde je v programe double free 26.01.2007 | 23:04
      Avatar lacodomin RedHat,Fedora  Používateľ
      http://www.cs.utexas.edu/users/jpmartin/memCheckers.html - vcelku poucne aj s prikladmi