다음 C 오류를 이해해야 합니다.
*** glibc detected *** /path/readnbn: double free or corruption (!prev): 0x00000000007bed40 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x76508)[0x7f12d024e508]
/lib64/libc.so.6(cfree+0x6c)[0x7f12d025354c]
/path/readnbn[0x405e2c]
/path/readnbn[0x406712]
/path/readnbn[0x40758e]
/lib64/libc.so.6(__libc_start_main+0xe6)[0x7f12d01f6c16]
/path/readnbn[0x401629]
======= Memory map: ========
00400000-0041a000 r-xp 00000000 fd:00 537221975 /path/readnbn
00619000-0061a000 r--p 00019000 fd:00 537221975 /path/readnbn
0061a000-0061b000 rw-p 0001a000 fd:00 537221975 /path/readnbn
0061b000-007d3000 rw-p 00000000 00:00 0 [heap]
7f12cbdea000-7f12cbdff000 r-xp 00000000 68:05 792 /lib64/libgcc_s.so.1
7f12cbdff000-7f12cbffe000 ---p 00015000 68:05 792 /lib64/libgcc_s.so.1
7f12cbffe000-7f12cbfff000 r--p 00014000 68:05 792 /lib64/libgcc_s.so.1
7f12cbfff000-7f12cc000000 rw-p 00015000 68:05 792 /lib64/libgcc_s.so.1
7f12cc000000-7f12cc021000 rw-p 00000000 00:00 0
7f12cc021000-7f12d0000000 ---p 00000000 00:00 0
7f12d01d8000-7f12d0347000 r-xp 00000000 68:05 544 /lib64/libc-2.11.3.so
7f12d0347000-7f12d0546000 ---p 0016f000 68:05 544 /lib64/libc-2.11.3.so
7f12d0546000-7f12d054a000 r--p 0016e000 68:05 544 /lib64/libc-2.11.3.so
7f12d054a000-7f12d054b000 rw-p 00172000 68:05 544 /lib64/libc-2.11.3.so
7f12d054b000-7f12d0550000 rw-p 00000000 00:00 0
7f12d0550000-7f12d056f000 r-xp 00000000 68:05 537 /lib64/ld-2.11.3.so
7f12d075b000-7f12d075e000 rw-p 00000000 00:00 0
7f12d076c000-7f12d076e000 rw-p 00000000 00:00 0
7f12d076e000-7f12d076f000 r--p 0001e000 68:05 537 /lib64/ld-2.11.3.so
7f12d076f000-7f12d0770000 rw-p 0001f000 68:05 537 /lib64/ld-2.11.3.so
7f12d0770000-7f12d0771000 rw-p 00000000 00:00 0
7fff4e78c000-7fff4e7ad000 rw-p 00000000 00:00 0 [stack]
7fff4e7e0000-7fff4e7e1000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
답변1
그것은역추적: 분명히 readnbn
프로그램이 이전에 해제된 메모리 블록을 해제했거나(두 방법 free()
중 하나를 사용하여) 힙이 어떤 방식으로 손상되었습니다. 다만, 사용할 수 있는 디버그 기호가 없기 때문에 함수 이름도 없으므로 따로 말씀드릴 수는 없습니다. 오류를 추적해야 합니다. 디버깅 기호가 있기를 바랍니다(또는 재컴파일할 수 있음). 코어 덤프가 있으면그걸로 분석해봐gdb
.