gdb在执行maintenance info program-spaces命令时coredump
来源:互联网 发布:淘宝进入卖家中心页面 编辑:程序博客网 时间:2024/05/21 15:42
coredump时的信息:
(gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0000000003c6bcf0 ***======= Backtrace: =========/lib64/libc.so.6(+0x7d1fd)[0x7fc875c0d1fd]gdb(find_pc_section+0x99)[0x605089]gdb(lookup_minimal_symbol_by_pc_section+0x1d)[0x60898d]gdb(find_pc_sect_symtab+0x29)[0x59eba9]gdb(select_frame+0x71)[0x699a11]gdb(get_selected_frame+0x39)[0x699a89]gdb(get_current_arch+0x27)[0x5e5447]gdb[0x52ba1e]gdb(registry_clear_data+0x93)[0x6bea63]gdb(registry_container_free_data+0xf)[0x6beadf]gdb[0x6ba8b2]gdb(prune_program_spaces+0x4c)[0x6ba99c]gdb[0x6ba9de]gdb(execute_command+0x2aa)[0x6901ba]gdb[0x5d85d1]gdb[0x5d8a8c]/lib64/libreadline.so.6(rl_callback_read_char+0x8e)[0x7fc877b57c6e]gdb[0x5d8639]gdb[0x5d71f4]gdb(gdb_do_one_event+0xa7)[0x5d7587]gdb(start_event_loop+0x57)[0x5d77b7]gdb[0x5d0623]gdb(catch_errors+0x8a)[0x5cee0a]gdb[0x5d12d6]gdb(catch_errors+0x8a)[0x5cee0a]gdb(gdb_main+0x24)[0x5d1f04]gdb(main+0x3e)[0x4572ee]/lib64/libc.so.6(__libc_start_main+0xf5)[0x7fc875bb1af5]gdb[0x457331]======= Memory map: ========00400000-00a02000 r-xp 00000000 08:01 1969692 /usr/bin/gdb00c01000-00c02000 r--p 00601000 08:01 1969692 /usr/bin/gdb00c02000-00c19000 rw-p 00602000 08:01 1969692 /usr/bin/gdb00c19000-00c3c000 rw-p 00000000 00:00 0 02aee000-04636000 rw-p 00000000 00:00 0 [heap]7fc871e78000-7fc871e7f000 r-xp 00000000 08:01 1964030 /usr/lib64/libthread_db-1.0.so7fc871e7f000-7fc87207e000 ---p 00007000 08:01 1964030 /usr/lib64/libthread_db-1.0.so7fc87207e000-7fc87207f000 r--p 00006000 08:01 1964030 /usr/lib64/libthread_db-1.0.so7fc87207f000-7fc872080000 rw-p 00007000 08:01 1964030 /usr/lib64/libthread_db-1.0.so7fc872080000-7fc8722d7000 rw-p 00000000 00:00 0 7fc872327000-7fc8723a0000 r-xp 00000000 08:01 1998038 /usr/lib64/libfreeblpriv3.so7fc8723a0000-7fc87259f000 ---p 00079000 08:01 1998038 /usr/lib64/libfreeblpriv3.so7fc87259f000-7fc8725a1000 r--p 00078000 08:01 1998038 /usr/lib64/libfreeblpriv3.so7fc8725a1000-7fc8725a2000 rw-p 0007a000 08:01 1998038 /usr/lib64/libfreeblpriv3.so7fc8725a2000-7fc8725a6000 rw-p 00000000 00:00 0 7fc8725a6000-7fc872657000 r-xp 00000000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.67fc872657000-7fc872856000 ---p 000b1000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.67fc872856000-7fc872858000 r--p 000b0000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.67fc872858000-7fc87285b000 rw-p 000b2000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.67fc87285b000-7fc872897000 r-xp 00000000 08:01 1984568 /usr/lib64/libsoftokn3.so7fc872897000-7fc872a96000 ---p 0003c000 08:01 1984568 /usr/lib64/libsoftokn3.so7fc872a96000-7fc872a97000 r--p 0003b000 08:01 1984568 /usr/lib64/libsoftokn3.so7fc872a97000-7fc872a98000 rw-p 0003c000 08:01 1984568 /usr/lib64/libsoftokn3.so7fc872a98000-7fc872aa3000 r-xp 00000000 08:01 1964026 /usr/lib64/libnss_files-2.17.so7fc872aa3000-7fc872ca2000 ---p 0000b000 08:01 1964026 /usr/lib64/libnss_files-2.17.so7fc872ca2000-7fc872ca3000 r--p 0000a000 08:01 1964026 /usr/lib64/libnss_files-2.17.so7fc872ca3000-7fc872ca4000 rw-p 0000b000 08:01 1964026 /usr/lib64/libnss_files-2.17.so7fc872ca4000-7fc872cab000 r-xp 00000000 08:01 1964029 /usr/lib64/librt-2.17.so7fc872cab000-7fc872eaa000 ---p 00007000 08:01 1964029 /usr/lib64/librt-2.17.so7fc872eaa000-7fc872eab000 r--p 00006000 08:01 1964029 /usr/lib64/librt-2.17.so7fc872eab000-7fc872eac000 rw-p 00007000 08:01 1964029 /usr/lib64/librt-2.17.so7fc872eac000-7fc872eb0000 r-xp 00000000 08:01 1964476 /usr/lib64/libattr.so.1.1.07fc872eb0000-7fc8730af000 ---p 00004000 08:01 1964476 /usr/lib64/libattr.so.1.1.07fc8730af000-7fc8730b0000 r--p 00003000 08:01 1964476 /usr/lib64/libattr.so.1.1.07fc8730b0000-7fc8730b1000 rw-p 00004000 08:01 1964476 /usr/lib64/libattr.so.1.1.07fc8730b1000-7fc8730ea000 r-xp 00000000 08:01 2003551 /usr/lib64/libnspr4.so7fc8730ea000-7fc8732ea000 ---p 00039000 08:01 2003551 /usr/lib64/libnspr4.so7fc8732ea000-7fc8732eb000 r--p 00039000 08:01 2003551 /usr/lib64/libnspr4.so7fc8732eb000-7fc8732ed000 rw-p 0003a000 08:01 2003551 /usr/lib64/libnspr4.so7fc8732ed000-7fc8732ef000 rw-p 00000000 00:00 0 7fc8732ef000-7fc8732f2000 r-xp 00000000 08:01 2003553 /usr/lib64/libplds4.so7fc8732f2000-7fc8734f1000 ---p 00003000 08:01 2003553 /usr/lib64/libplds4.so7fc8734f1000-7fc8734f2000 r--p 00002000 08:01 2003553 /usr/lib64/libplds4.so7fc8734f2000-7fc8734f3000 rw-p 00003000 08:01 2003553 /usr/lib64/libplds4.so7fc8734f3000-7fc8734f7000 r-xp 00000000 08:01 2003552 /usr/lib64/libplc4.so7fc8734f7000-7fc8736f6000 ---p 00004000 08:01 2003552 /usr/lib64/libplc4.so7fc8736f6000-7fc8736f7000 r--p 00003000 08:01 2003552 /usr/lib64/libplc4.so7fc8736f7000-7fc8736f8000 rw-p 00004000 08:01 2003552 /usr/lib64/libplc4.so7fc8736f8000-7fc87371d000 r-xp 00000000 08:01 1971387 /usr/lib64/libnssutil3.so7fc87371d000-7fc87391d000 ---p 00025000 08:01 1971387 /usr/lib64/libnssutil3.so7fc87391d000-7fc873923000 r--p 00025000 08:01 1971387 /usr/lib64/libnssutil3.so7fc873923000-7fc873924000 rw-p 0002b000 08:01 1971387 /usr/lib64/libnssutil3.so7fc873924000-7fc873ad8000 r-xp 00000000 08:01 1964466 /usr/lib64/libdb-5.3.so7fc873ad8000-7fc873cd8000 ---p 001b4000 08:01 1964466 /usr/lib64/libdb-5.3.so7fc873cd8000-7fc873cdf000 r--p 001b4000 08:01 1964466 /usr/lib64/libdb-5.3.so7fc873cdf000-7fc873ce2000 rw-p 001bb000 08:01 1964466 /usr/lib64/libdb-5.3.so7fc873ce2000-7fc873d0e000 r-xp 00000000 08:01 1964523 /usr/lib64/liblua-5.1.so7fc873d0e000-7fc873f0d000 ---p 0002c000 08:01 1964523 /usr/lib64/liblua-5.1.so7fc873f0d000-7fc873f0f000 r--p 0002b000 08:01 1964523 /usr/lib64/liblua-5.1.so7fc873f0f000-7fc873f10000 rw-p 0002d000 08:01 1964523 /usr/lib64/liblua-5.1.so7fc873f10000-7fc873f17000 r-xp 00000000 08:01 1964490 /usr/lib64/libacl.so.1.1.07fc873f17000-7fc874117000 ---p 00007000 08:01 1964490 /usr/lib64/libacl.so.1.1.07fc874117000-7fc874118000 r--p 00007000 08:01 1964490 /usr/lib64/libacl.so.1.1.07fc874118000-7fc874119000 rw-p 00008000 08:01 1964490 /usr/lib64/libacl.so.1.1.07fc874119000-7fc87411d000 r-xp 00000000 08:01 1964479 /usr/lib64/libcap.so.2.227fc87411d000-7fc87431c000 ---p 00004000 08:01 1964479 /usr/lib64/libcap.so.2.227fc87431c000-7fc87431d000 r--p 00003000 08:01 1964479 /usr/lib64/libcap.so.2.227fc87431d000-7fc87431e000 rw-p 00004000 08:01 1964479 /usr/lib64/libcap.so.2.227fc87431e000-7fc874327000 r-xp 00000000 08:01 1964103 /usr/lib64/libpopt.so.0.0.07fc874327000-7fc874526000 ---p 00009000 08:01 1964103 /usr/lib64/libpopt.so.0.0.07fc874526000-7fc874527000 r--p 00008000 08:01 1964103 /usr/lib64/libpopt.so.0.0.07fc874527000-7fc874528000 rw-p 00009000 08:01 1964103 /usr/lib64/libpopt.so.0.0.07fc874528000-7fc87453d000 r-xp 00000000 08:01 1998086 /usr/lib64/libelf-0.160.so7fc87453d000-7fc87473c000 ---p 00015000 08:01 1998086 /usr/lib64/libelf-0.160.so7fc87473c000-7fc87473d000 r--p 00014000 08:01 1998086 /usr/lib64/libelf-0.160.so7fc87473d000-7fc87473e000 rw-p 00015000 08:01 1998086 /usr/lib64/libelf-0.160.so7fc87473e000-7fc87474d000 r-xp 00000000 08:01 1964150 /usr/lib64/libbz2.so.1.0.67fc87474d000-7fc87494c000 ---p 0000f000 08:01 1964150 /usr/lib64/libbz2.so.1.0.67fc87494c000-7fc87494d000 r--p 0000e000 08:01 1964150 /usr/lib64/libbz2.so.1.0.67fc87494d000-7fc87494e000 rw-p 0000f000 08:01 1964150 /usr/lib64/libbz2.so.1.0.67fc87494e000-7fc874a6c000 r-xp 00000000 08:01 1973518 /usr/lib64/libnss3.so7fc874a6c000-7fc874c6b000 ---p 0011e000 08:01 1973518 /usr/lib64/libnss3.so7fc874c6b000-7fc874c70000 r--p 0011d000 08:01 1973518 /usr/lib64/libnss3.so7fc874c70000-7fc874c72000 rw-p 00122000 08:01 1973518 /usr/lib64/libnss3.so7fc874c72000-7fc874c74000 rw-p 00000000 00:00 0 7fc874c74000-7fc874c9c000 r-xp 00000000 08:01 1984636 /usr/lib64/librpmio.so.3.2.07fc874c9c000-7fc874e9b000 ---p 00028000 08:01 1984636 /usr/lib64/librpmio.so.3.2.07fc874e9b000-7fc874e9d000 r--p 00027000 08:01 1984636 /usr/lib64/librpmio.so.3.2.07fc874e9d000-7fc874e9f000 rw-p 00029000 08:01 1984636 /usr/lib64/librpmio.so.3.2.07fc874e9f000-7fc874ea1000 rw-p 00000000 00:00 0 7fc874ea1000-7fc874f01000 r-xp 00000000 08:01 1967718 /usr/lib64/librpm.so.3.2.07fc874f01000-7fc875101000 ---p 00060000 08:01 1967718 /usr/lib64/librpm.so.3.2.07fc875101000-7fc875104000 r--p 00060000 08:01 1967718 /usr/lib64/librpm.so.3.2.07fc875104000-7fc875107000 rw-p 00063000 08:01 1967718 /usr/lib64/librpm.so.3.2.07fc875107000-7fc875108000 rw-p 00000000 00:00 0 7fc875108000-7fc87510b000 r-xp 00000000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so7fc87510b000-7fc87530a000 ---p 00003000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so7fc87530a000-7fc87530b000 r--p 00002000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so7fc87530b000-7fc87530d000 rw-p 00003000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so7fc87530d000-7fc875315000 r-xp 00000000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so7fc875315000-7fc875515000 ---p 00008000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so7fc875515000-7fc875516000 r--p 00008000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so7fc875516000-7fc875518000 rw-p 00009000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so7fc875518000-7fc87551e000 r-xp 00000000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so7fc87551e000-7fc87571d000 ---p 00006000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so7fc87571d000-7fc87571e000 r--p 00005000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so7fc87571e000-7fc875720000 rw-p 00006000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so7fc875720000-7fc87572a000 r-xp 00000000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so7fc87572a000-7fc875929000 ---p 0000a000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so7fc875929000-7fc87592a000 r--p 00009000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so7fc87592a000-7fc87592f000 rw-p 0000a000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so7fc87592f000-7fc87598e000 r-xp 00000000 08:01 1964054 /usr/lib64/libpcre.so.1.2.07fc87598e000-7fc875b8e000 ---p 0005f000 08:01 1964054 /usr/lib64/libpcre.so.1.2.07fc875b8e000-7fc875b8f000 r--p 0005f000 08:01 1964054 /usr/lib64/libpcre.so.1.2.07fc875b8f000-7fc875b90000 rw-p 00060000 08:01 1964054 /usr/lib64/libpcre.so.1.2.07fc875b90000-7fc875d46000 r-xp 00000000 08:01 1963631 /usr/lib64/libc-2.17.so7fc875d46000-7fc875f46000 ---p 001b6000 08:01 1963631 /usr/lib64/libc-2.17.so7fc875f46000-7fc875f4a000 r--p 001b6000 08:01 1963631 /usr/lib64/libc-2.17.so7fc875f4a000-7fc875f4c000 rw-p 001ba000 08:01 1963631 /usr/lib64/libc-2.17.so7fc875f4c000-7fc875f51000 rw-p 00000000 00:00 0 7fc875f51000-7fc875f66000 r-xp 00000000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.17fc875f66000-7fc876165000 ---p 00015000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.17fc876165000-7fc876166000 r--p 00014000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.17fc876166000-7fc876167000 rw-p 00015000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.17fc876167000-7fc87618b000 r-xp 00000000 08:01 1964052 /usr/lib64/liblzma.so.5.0.997fc87618b000-7fc87638a000 ---p 00024000 08:01 1964052 /usr/lib64/liblzma.so.5.0.997fc87638a000-7fc87638b000 r--p 00023000 08:01 1964052 /usr/lib64/liblzma.so.5.0.997fc87638b000-7fc87638c000 rw-p 00024000 08:01 1964052 /usr/lib64/liblzma.so.5.0.997fc87638c000-7fc8763b3000 r-xp 00000000 08:01 1964215 /usr/lib64/libexpat.so.1.6.07fc8763b3000-7fc8765b3000 ---p 00027000 08:01 1964215 /usr/lib64/libexpat.so.1.6.07fc8765b3000-7fc8765b5000 r--p 00027000 08:01 1964215 /usr/lib64/libexpat.so.1.6.07fc8765b5000-7fc8765b6000 rw-p 00029000 08:01 1964215 /usr/lib64/libexpat.so.1.6.07fc8765b6000-7fc87672e000 r-xp 00000000 08:01 1972073 /usr/lib64/libpython2.7.so.1.07fc87672e000-7fc87692e000 ---p 00178000 08:01 1972073 /usr/lib64/libpython2.7.so.1.07fc87692e000-7fc87692f000 r--p 00178000 08:01 1972073 /usr/lib64/libpython2.7.so.1.07fc87692f000-7fc87696d000 rw-p 00179000 08:01 1972073 /usr/lib64/libpython2.7.so.1.07fc87696d000-7fc87697c000 rw-p 00000000 00:00 0 7fc87697c000-7fc87697e000 r-xp 00000000 08:01 1963665 /usr/lib64/libutil-2.17.so7fc87697e000-7fc876b7d000 ---p 00002000 08:01 1963665 /usr/lib64/libutil-2.17.so7fc876b7d000-7fc876b7e000 r--p 00001000 08:01 1963665 /usr/lib64/libutil-2.17.so7fc876b7e000-7fc876b7f000 rw-p 00002000 08:01 1963665 /usr/lib64/libutil-2.17.so7fc876b7f000-7fc876b95000 r-xp 00000000 08:01 1963657 /usr/lib64/libpthread-2.17.so7fc876b95000-7fc876d95000 ---p 00016000 08:01 1963657 /usr/lib64/libpthread-2.17.so7fc876d95000-7fc876d96000 r--p 00016000 08:01 1963657 /usr/lib64/libpthread-2.17.so7fc876d96000-7fc876d97000 rw-p 00017000 08:01 1963657 /usr/lib64/libpthread-2.17.so7fc876d97000-7fc876d9b000 rw-p 00000000 00:00 0 7fc876d9b000-7fc876d9e000 r-xp 00000000 08:01 1964022 /usr/lib64/libdl-2.17.so7fc876d9e000-7fc876f9d000 ---p 00003000 08:01 1964022 /usr/lib64/libdl-2.17.so7fc876f9d000-7fc876f9e000 r--p 00002000 08:01 1964022 /usr/lib64/libdl-2.17.so7fc876f9e000-7fc876f9f000 rw-p 00003000 08:01 1964022 /usr/lib64/libdl-2.17.so7fc876f9f000-7fc8770a0000 r-xp 00000000 08:01 1964023 /usr/lib64/libm-2.17.so7fc8770a0000-7fc87729f000 ---p 00101000 08:01 1964023 /usr/lib64/libm-2.17.so7fc87729f000-7fc8772a0000 r--p 00100000 08:01 1964023 /usr/lib64/libm-2.17.so7fc8772a0000-7fc8772a1000 rw-p 00101000 08:01 1964023 /usr/lib64/libm-2.17.so7fc8772a1000-7fc8772b6000 r-xp 00000000 08:01 1964070 /usr/lib64/libz.so.1.2.77fc8772b6000-7fc8774b5000 ---p 00015000 08:01 1964070 /usr/lib64/libz.so.1.2.77fc8774b5000-7fc8774b6000 r--p 00014000 08:01 1964070 /usr/lib64/libz.so.1.2.77fc8774b6000-7fc8774b7000 rw-p 00015000 08:01 1964070 /usr/lib64/libz.so.1.2.77fc8774b7000-7fc8774dc000 r-xp 00000000 08:01 1963963 /usr/lib64/libtinfo.so.5.97fc8774dc000-7fc8776dc000 ---p 00025000 08:01 1963963 /usr/lib64/libtinfo.so.5.97fc8776dc000-7fc8776e0000 r--p 00025000 08:01 1963963 /usr/lib64/libtinfo.so.5.97fc8776e0000-7fc8776e1000 rw-p 00029000 08:01 1963963 /usr/lib64/libtinfo.so.5.97fc8776e1000-7fc877707000 r-xp 00000000 08:01 1963953 /usr/lib64/libncurses.so.5.97fc877707000-7fc877906000 ---p 00026000 08:01 1963953 /usr/lib64/libncurses.so.5.97fc877906000-7fc877907000 r--p 00025000 08:01 1963953 /usr/lib64/libncurses.so.5.97fc877907000-7fc877908000 rw-p 00026000 08:01 1963953 /usr/lib64/libncurses.so.5.97fc877908000-7fc877929000 r-xp 00000000 08:01 1964067 /usr/lib64/libselinux.so.17fc877929000-7fc877b29000 ---p 00021000 08:01 1964067 /usr/lib64/libselinux.so.17fc877b29000-7fc877b2a000 r--p 00021000 08:01 1964067 /usr/lib64/libselinux.so.17fc877b2a000-7fc877b2b000 rw-p 00022000 08:01 1964067 /usr/lib64/libselinux.so.17fc877b2b000-7fc877b2d000 rw-p 00000000 00:00 0 7fc877b2d000-7fc877b69000 r-xp 00000000 08:01 1964218 /usr/lib64/libreadline.so.6.27fc877b69000-7fc877d69000 ---p 0003c000 08:01 1964218 /usr/lib64/libreadline.so.6.27fc877d69000-7fc877d6b000 r--p 0003c000 08:01 1964218 /usr/lib64/libreadline.so.6.27fc877d6b000-7fc877d71000 rw-p 0003e000 08:01 1964218 /usr/lib64/libreadline.so.6.27fc877d71000-7fc877d73000 rw-p 00000000 00:00 0 7fc877d73000-7fc877d94000 r-xp 00000000 08:01 1963623 /usr/lib64/ld-2.17.so7fc877da8000-7fc877e39000 rw-p 00000000 00:00 0 7fc877e41000-7fc877f80000 rw-p 00000000 00:00 0 7fc877f80000-7fc877f89000 r--p 00010000 08:01 786974 /home/xuzhina/code/xerces/sample/new_address7fc877f89000-7fc877f91000 r--p 00008000 08:01 786974 /home/xuzhina/code/xerces/sample/new_address7fc877f91000-7fc877f94000 rw-p 00000000 00:00 0 7fc877f94000-7fc877f95000 r--p 00021000 08:01 1963623 /usr/lib64/ld-2.17.so7fc877f95000-7fc877f96000 rw-p 00022000 08:01 1963623 /usr/lib64/ld-2.17.so7fc877f96000-7fc877f97000 rw-p 00000000 00:00 0 7ffc6acdc000-7ffc6acfd000 rw-p 00000000 00:00 0 [stack]7ffc6adfe000-7ffc6ae00000 r-xp 00000000 00:00 0 [vdso]ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]Aborted (core dumped)
gdb的版本:
(gdb) show version GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7Copyright (C) 2013 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-redhat-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>.
看一下堆栈:
[xuzhina@localhost sample]$ gdb /usr/bin/gdb core-gdb-4332-1436781341-6 GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7Copyright (C) 2013 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-redhat-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>...Reading symbols from /usr/bin/gdb...Reading symbols from /usr/bin/gdb...(no debugging symbols found)...done.(no debugging symbols found)...done.[New LWP 4332][Thread debugging using libthread_db enabled]Using host libthread_db library "/lib64/libthread_db.so.1".Core was generated by `gdb new_address'.Program terminated with signal 6, Aborted.#0 0x00007fc875bc55d7 in raise () from /lib64/libc.so.6Missing separate debuginfos, use: debuginfo-install gdb-7.6.1-64.el7.x86_64(gdb) bt#0 0x00007fc875bc55d7 in raise () from /lib64/libc.so.6#1 0x00007fc875bc6cc8 in abort () from /lib64/libc.so.6#2 0x00007fc875c05e07 in __libc_message () from /lib64/libc.so.6#3 0x00007fc875c0d1fd in _int_free () from /lib64/libc.so.6#4 0x0000000000605089 in find_pc_section ()#5 0x000000000060898d in lookup_minimal_symbol_by_pc_section ()#6 0x000000000059eba9 in find_pc_sect_symtab ()#7 0x0000000000699a11 in select_frame ()#8 0x0000000000699a89 in get_selected_frame ()#9 0x00000000005e5447 in get_current_arch ()#10 0x000000000052ba1e in py_free_pspace ()#11 0x00000000006bea63 in registry_clear_data ()#12 0x00000000006beadf in registry_container_free_data ()#13 0x00000000006ba8b2 in release_program_space ()#14 0x00000000006ba99c in prune_program_spaces ()#15 0x00000000006ba9de in maintenance_info_program_spaces_command ()#16 0x00000000006901ba in execute_command ()#17 0x00000000005d85d1 in command_handler ()#18 0x00000000005d8a8c in command_line_handler ()#19 0x00007fc877b57c6e in rl_callback_read_char () from /lib64/libreadline.so.6#20 0x00000000005d8639 in rl_callback_read_char_wrapper ()#21 0x00000000005d71f4 in process_event ()#22 0x00000000005d7587 in gdb_do_one_event ()#23 0x00000000005d77b7 in start_event_loop ()#24 0x00000000005d0623 in captured_command_loop ()#25 0x00000000005cee0a in catch_errors ()#26 0x00000000005d12d6 in captured_main ()#27 0x00000000005cee0a in catch_errors ()#28 0x00000000005d1f04 in gdb_main ()#29 0x00000000004572ee in main ()
从堆栈可以看到,是在释放内存时出现问题,那么出现问题的地方应该是第4祯,find_pc_section函数里。
跳转到第4祯:
(gdb) frame 4#4 0x0000000000605089 in find_pc_section ()
看一下汇编:
(gdb) disassemble Dump of assembler code for function find_pc_section: 0x0000000000604ff0 <+0>:push %r15 0x0000000000604ff2 <+2>:push %r14 0x0000000000604ff4 <+4>:push %r13 0x0000000000604ff6 <+6>:push %r12 0x0000000000604ff8 <+8>:push %rbp 0x0000000000604ff9 <+9>:push %rbx 0x0000000000604ffa <+10>:sub $0x98,%rsp 0x0000000000605001 <+17>:mov %rdi,0x88(%rsp) 0x0000000000605009 <+25>:callq 0x5a8830 <find_pc_mapped_section> 0x000000000060500e <+30>:test %rax,%rax 0x0000000000605011 <+33>:je 0x605028 <find_pc_section+56> 0x0000000000605013 <+35>:add $0x98,%rsp 0x000000000060501a <+42>:pop %rbx 0x000000000060501b <+43>:pop %rbp 0x000000000060501c <+44>:pop %r12 0x000000000060501e <+46>:pop %r13 0x0000000000605020 <+48>:pop %r14 0x0000000000605022 <+50>:pop %r15 0x0000000000605024 <+52>:retq 0x0000000000605025 <+53>:nopl (%rax) 0x0000000000605028 <+56>:mov 0x635fb1(%rip),%rdi # 0xc3afe0 <current_program_space> 0x000000000060502f <+63>:callq 0x6043e0 <get_objfile_pspace_data> 0x0000000000605034 <+68>:mov 0x10(%rax),%edi 0x0000000000605037 <+71>:mov %rax,0x78(%rsp) 0x000000000060503c <+76>:test %edi,%edi 0x000000000060503e <+78>:jne 0x60505b <find_pc_section+107> 0x0000000000605040 <+80>:mov 0xc(%rax),%esi 0x0000000000605043 <+83>:test %esi,%esi 0x0000000000605045 <+85>:je 0x60513b <find_pc_section+331> 0x000000000060504b <+91>:mov 0x78(%rsp),%rax 0x0000000000605050 <+96>:mov 0x14(%rax),%ecx 0x0000000000605053 <+99>:test %ecx,%ecx 0x0000000000605055 <+101>:jne 0x60513b <find_pc_section+331> 0x000000000060505b <+107>:mov 0x635f7e(%rip),%rbx # 0xc3afe0 <current_program_space> 0x0000000000605062 <+114>:mov %rbx,%rdi 0x0000000000605065 <+117>:callq 0x6043e0 <get_objfile_pspace_data> 0x000000000060506a <+122>:mov 0x10(%rax),%edx 0x000000000060506d <+125>:test %edx,%edx 0x000000000060506f <+127>:jne 0x60507c <find_pc_section+140> 0x0000000000605071 <+129>:mov 0xc(%rax),%eax 0x0000000000605074 <+132>:test %eax,%eax---Type <return> to continue, or q <return> to quit--- 0x0000000000605076 <+134>:je 0x6055d5 <find_pc_section+1509> 0x000000000060507c <+140>:mov 0x78(%rsp),%rax 0x0000000000605081 <+145>:mov (%rax),%rdi 0x0000000000605084 <+148>:callq 0x6bd1b0 <xfree>=> 0x0000000000605089 <+153>:mov 0x40(%rbx),%r8 0x000000000060508d <+157>:test %r8,%r8 0x0000000000605090 <+160>:je 0x60510f <find_pc_section+287> 0x0000000000605092 <+162>:mov 0x61bbd4(%rip),%edi # 0xc20c6c <overlay_debugging> 0x0000000000605098 <+168>:xor %ecx,%ecx 0x000000000060509a <+170>:nopw 0x0(%rax,%rax,1) 0x00000000006050a0 <+176>:mov 0x80d8(%r8),%rax 0x00000000006050a7 <+183>:mov 0x80e0(%r8),%r9 0x00000000006050ae <+190>:cmp %r9,%rax 0x00000000006050b1 <+193>:jae 0x6050f8 <find_pc_section+264> 0x00000000006050b3 <+195>:mov 0x48(%r8),%r10 0x00000000006050b7 <+199>:nopw 0x0(%rax,%rax,1) 0x00000000006050c0 <+208>:mov (%rax),%rdx 0x00000000006050c3 <+211>:test %edi,%edi 0x00000000006050c5 <+213>:mov 0x30(%rdx),%rsi 0x00000000006050c9 <+217>:je 0x6050e0 <find_pc_section+240> 0x00000000006050cb <+219>:test %rsi,%rsi 0x00000000006050ce <+222>:je 0x6050e0 <find_pc_section+240> 0x00000000006050d0 <+224>:cmp 0x28(%rdx),%rsi 0x00000000006050d4 <+228>:je 0x6050e0 <find_pc_section+240> 0x00000000006050d6 <+230>:testb $0x8,0x55(%r10) 0x00000000006050db <+235>:je 0x6050ef <find_pc_section+255> 0x00000000006050dd <+237>:nopl (%rax) 0x00000000006050e0 <+240>:mov 0x20(%rdx),%edx 0x00000000006050e3 <+243>:and $0x400,%edx 0x00000000006050e9 <+249>:cmp $0x1,%edx 0x00000000006050ec <+252>:adc $0x0,%ecx 0x00000000006050ef <+255>:add $0x18,%rax 0x00000000006050f3 <+259>:cmp %r9,%rax 0x00000000006050f6 <+262>:jb 0x6050c0 <find_pc_section+208> 0x00000000006050f8 <+264>:mov (%r8),%r8 0x00000000006050fb <+267>:test %r8,%r8 0x00000000006050fe <+270>:jne 0x6050a0 <find_pc_section+176> 0x0000000000605100 <+272>:test %ecx,%ecx 0x0000000000605102 <+274>:mov %ecx,0x84(%rsp) 0x0000000000605109 <+281>:jne 0x6051b0 <find_pc_section+448> 0x000000000060510f <+287>:mov 0x78(%rsp),%rax 0x0000000000605114 <+292>:xor %ebx,%ebx
coredump位置在这一段汇编:
0x000000000060507c <+140>:mov 0x78(%rsp),%rax 0x0000000000605081 <+145>:mov (%rax),%rdi 0x0000000000605084 <+148>:callq 0x6bd1b0 <xfree>=> 0x0000000000605089 <+153>:mov 0x40(%rbx),%r8
看一下代码,下载gdb-7.6.1代码来看,在objfiles.c里有定义find_pc_section
struct obj_section *find_pc_section (CORE_ADDR pc){ struct objfile_pspace_info *pspace_info; struct obj_section *s, **sp; /* Check for mapped overlay section first. */ s = find_pc_mapped_section (pc); if (s) return s; pspace_info = get_objfile_pspace_data (current_program_space); if (pspace_info->objfiles_changed_p != 0) { update_section_map (current_program_space, &pspace_info->sections, &pspace_info->num_sections); /* Don't need updates to section map until objfiles are added, removed or relocated. */ pspace_info->objfiles_changed_p = 0; } /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to bsearch be non-NULL. */ if (pspace_info->sections == NULL) { gdb_assert (pspace_info->num_sections == 0); return NULL; } sp = (struct obj_section **) bsearch (&pc,pspace_info->sections,pspace_info->num_sections,sizeof (*pspace_info->sections),bsearch_cmp); if (sp != NULL) return *sp; return NULL;}
但似乎没看到哪里有调用xfree.
再看一下出问题的地址上面的汇编:
0x0000000000604ff0 <+0>:push %r15 0x0000000000604ff2 <+2>:push %r14 0x0000000000604ff4 <+4>:push %r13 0x0000000000604ff6 <+6>:push %r12 0x0000000000604ff8 <+8>:push %rbp 0x0000000000604ff9 <+9>:push %rbx 0x0000000000604ffa <+10>:sub $0x98,%rsp 0x0000000000605001 <+17>:mov %rdi,0x88(%rsp) 0x0000000000605009 <+25>:callq 0x5a8830 <find_pc_mapped_section> 0x000000000060500e <+30>:test %rax,%rax 0x0000000000605011 <+33>:je 0x605028 <find_pc_section+56> 0x0000000000605013 <+35>:add $0x98,%rsp 0x000000000060501a <+42>:pop %rbx 0x000000000060501b <+43>:pop %rbp 0x000000000060501c <+44>:pop %r12 0x000000000060501e <+46>:pop %r13 0x0000000000605020 <+48>:pop %r14 0x0000000000605022 <+50>:pop %r15 0x0000000000605024 <+52>:retq 0x0000000000605025 <+53>:nopl (%rax) 0x0000000000605028 <+56>:mov 0x635fb1(%rip),%rdi # 0xc3afe0 <current_program_space> 0x000000000060502f <+63>:callq 0x6043e0 <get_objfile_pspace_data> 0x0000000000605034 <+68>:mov 0x10(%rax),%edi 0x0000000000605037 <+71>:mov %rax,0x78(%rsp) 0x000000000060503c <+76>:test %edi,%edi 0x000000000060503e <+78>:jne 0x60505b <find_pc_section+107> 0x0000000000605040 <+80>:mov 0xc(%rax),%esi 0x0000000000605043 <+83>:test %esi,%esi 0x0000000000605045 <+85>:je 0x60513b <find_pc_section+331> 0x000000000060504b <+91>:mov 0x78(%rsp),%rax 0x0000000000605050 <+96>:mov 0x14(%rax),%ecx 0x0000000000605053 <+99>:test %ecx,%ecx 0x0000000000605055 <+101>:jne 0x60513b <find_pc_section+331> 0x000000000060505b <+107>:mov 0x635f7e(%rip),%rbx # 0xc3afe0 <current_program_space> 0x0000000000605062 <+114>:mov %rbx,%rdi 0x0000000000605065 <+117>:callq 0x6043e0 <get_objfile_pspace_data> 0x000000000060506a <+122>:mov 0x10(%rax),%edx 0x000000000060506d <+125>:test %edx,%edx 0x000000000060506f <+127>:jne 0x60507c <find_pc_section+140> 0x0000000000605071 <+129>:mov 0xc(%rax),%eax 0x0000000000605074 <+132>:test %eax,%eax
可以看到,在这几行汇编里:
0x0000000000605009 <+25>:callq 0x5a8830 <find_pc_mapped_section>
0x000000000060502f <+63>:callq 0x6043e0 <get_objfile_pspace_data>
0x0000000000605065 <+117>:callq 0x6043e0 <get_objfile_pspace_data>
依次调用了find_pc_mapped_section,get_objfile_pspace_data,get_objfile_pspace_data
再看一下第一次调用get_objfile_pspace_data的汇编片段:
0x000000000060502f <+63>: callq 0x6043e0 <get_objfile_pspace_data> 0x0000000000605034 <+68>: mov 0x10(%rax),%edi 0x0000000000605037 <+71>: mov %rax,0x78(%rsp) 0x000000000060503c <+76>: test %edi,%edi 0x000000000060503e <+78>: jne 0x60505b <find_pc_section+107> 0x0000000000605040 <+80>: mov 0xc(%rax),%esi 0x0000000000605043 <+83>: test %esi,%esi 0x0000000000605045 <+85>: je 0x60513b <find_pc_section+331> 0x000000000060504b <+91>: mov 0x78(%rsp),%rax 0x0000000000605050 <+96>: mov 0x14(%rax),%ecx 0x0000000000605053 <+99>: test %ecx,%ecx 0x0000000000605055 <+101>: jne 0x60513b <find_pc_section+331> 0x000000000060505b <+107>: mov 0x635f7e(%rip),%rbx # 0xc3afe0 <current_program_space>
可见,
=> 0x0000000000605089 <+153>: mov 0x40(%rbx),%r8
不是由
0x0000000000605045 <+85>: je 0x60513b <find_pc_section+331>
0x0000000000605055 <+101>: jne 0x60513b <find_pc_section+331>跳转过去的。
那么,coredump地址应该是位于这一段代码里:
if (pspace_info->objfiles_changed_p != 0) { update_section_map (current_program_space, &pspace_info->sections, &pspace_info->num_sections); /* Don't need updates to section map until objfiles are added, removed or relocated. */ pspace_info->objfiles_changed_p = 0; }
考虑到编译器可能会进行代码优化,把一些只调用一次的static函数内联。
看一下update_section_map(如果用source insight看,这个函数确实只被find_pc_section调用,而且只调用一次。)
static voidupdate_section_map (struct program_space *pspace, struct obj_section ***pmap, int *pmap_size){ int alloc_size, map_size, i; struct obj_section *s, **map; struct objfile *objfile; gdb_assert (get_objfile_pspace_data (pspace)->objfiles_changed_p != 0); map = *pmap; xfree (map); alloc_size = 0; ALL_PSPACE_OBJFILES (pspace, objfile) ALL_OBJFILE_OSECTIONS (objfile, s) if (insert_section_p (objfile->obfd, s->the_bfd_section))alloc_size += 1; /* This happens on detach/attach (e.g. in gdb.base/attach.exp). */ if (alloc_size == 0) { *pmap = NULL; *pmap_size = 0; return; } map = xmalloc (alloc_size * sizeof (*map)); i = 0; ALL_PSPACE_OBJFILES (pspace, objfile) ALL_OBJFILE_OSECTIONS (objfile, s) if (insert_section_p (objfile->obfd, s->the_bfd_section))map[i++] = s; qsort (map, alloc_size, sizeof (*map), qsort_cmp); map_size = filter_debuginfo_sections(map, alloc_size); map_size = filter_overlapping_sections(map, map_size); if (map_size < alloc_size) /* Some sections were eliminated. Trim excess space. */ map = xrealloc (map, map_size * sizeof (*map)); else gdb_assert (alloc_size == map_size); *pmap = map; *pmap_size = map_size;}
在这里,有这么一段代码:
map = *pmap; xfree (map);
可见,coredump是发生在这一行代码。
那么,究竟是什么原因导致coredump。
看一下coredump的那段汇编:
0x000000000060507c <+140>:mov 0x78(%rsp),%rax 0x0000000000605081 <+145>:mov (%rax),%rdi 0x0000000000605084 <+148>:callq 0x6bd1b0 <xfree>=> 0x0000000000605089 <+153>:mov 0x40(%rbx),%r8
由于在x86 64-bit,很多时候为了安全和快速,传参数是用rdi寄存器来传,但在这里,rdi,rax可能会变。所以看一下rsp的内容:
(gdb) x /gx $rsp+0x780x7ffc6acfb3d8:0x0000000003019e60(gdb) x /gx 0x0000000003019e600x3019e60:0x0000000003c6bcf0
PS:用/gx是因为要查看64地址的原因。
可以看到,0x0000000003c6bcf0和
(gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0000000003c6bcf0 ***
的地址是一样的。
那么,先看一下0x0000000003c6bcf0的内容:
(gdb) x /gx 0x0000000003c6bcf00x3c6bcf0:0x000000000003ca90
有内容,说明地址是有效啊。为什么无法释放呢?
根据最开始的coredump信息来看:
(gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0000000003c6bcf0 ***它所打印信息的代码是在glibc里malloc.c的_int_free函数里的这一段:
if (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0) || __builtin_expect (misaligned_chunk (p), 0)) { errstr = "free(): invalid pointer";
在malloc.c里面,一个内存块的定义是这样的:
struct malloc_chunk { INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */ INTERNAL_SIZE_T size; /* Size in bytes, including overhead. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; /* Only used for large blocks: pointer to next larger size. */ struct malloc_chunk* fd_nextsize; /* double links -- used only if free. */ struct malloc_chunk* bk_nextsize;};
其中INTERNAL_SIZE_T的定义如下:
#define INTERNAL_SIZE_T size_t
在x86 64位Linux系统里,size_t是8个字节。也就是说,0x0000000003c6bcf0地址向前-16,才是真实内存块地址。
(gdb) x /4gx 0x0000000003c6bcf0-160x3c6bce0:0x00000000000000000x00000000000000000x3c6bcf0:0x000000000003ca900x0000000000000020可见,0x0000000003c6bcf0所在的内存块的头部已经被抹掉了。究竟是哪里被抹掉。
由update_section_map可知,是pmap的问题,而pmap又是由&pspace_info->sections得来的。
也就是说,sections的内容有可能是由于pspace的上一个或上几个元素使用memset之类给覆盖了。
而pspace_info对象所属的结构体objfile_pspace_info只定义在objfiles.c:
struct objfile_pspace_info
{
int objfiles_changed_p;
struct obj_section **sections;
int num_sections;
};
而唯一初始化这个结构体对象的函数是:
static struct objfile_pspace_info *get_objfile_pspace_data (struct program_space *pspace){ struct objfile_pspace_info *info; info = program_space_data (pspace, objfiles_pspace_data); if (info == NULL) { info = XZALLOC (struct objfile_pspace_info); set_program_space_data (pspace, objfiles_pspace_data, info); } return info;}
中的
set_program_space_data (pspace, objfiles_pspace_data, info);也就是说,sections的内容应该是在set_program_space_data里面分配,由它的分配和初始化,有可能会找到sections所指向的内存块的上一块内存块所使用的程序。
但由于在gdb的代码中,找不到set_program_space_data的定义。
由于问题比较难重现,对gdb代码也不熟悉,否则,可以在sections分配之后打数据断点,watchpoint来跟踪。
- gdb在执行maintenance info program-spaces命令时coredump
- gdb之info/show命令
- gdb coredump
- gdb coredump
- GDB info
- gdb info
- 用gdb在正常状态下生成coredump (转)
- GDB(四):gdb coredump
- GDB 看 coredump
- gdb 调试 coredump
- GDB + CoreDump 调试记录
- gdb coredump 问号
- GDB coredump调试
- GDB + CoreDump 调试记录
- GDB---coredump分析
- gdb 使用 coredump
- GDB的使用+coredump
- gdb调试coredump文件
- 对MySql的dql和dml操作进行封装,成为固定的工具类
- android中的surfaceSurface、SurfaceHolder及SurfaceHolder.Callback
- 关于UIButton的title后的自动宽
- 悟空学Linux专栏----第41篇
- Eclipse加载源码
- gdb在执行maintenance info program-spaces命令时coredump
- 数据分析师与数据分析的恩怨
- iOS常用的第三方库以及XCode插件集锦
- Opencv2 imread() 读取图片失败
- [数据结构]树状数组
- CXF生成调用webservice的客户端
- 阿里云服务器部署架构
- 未能找到类型“Microsoft.VisualBasic.PowerPacks.ShapeContainer”和“Microsoft.VisualBasic.PowerPacks.LineShape”
- 内存溢出的分类以及实现方法