coredump时的信息:

  1. (gdb) maintenance info program-spaces
  2. *** Error in `gdb': free(): invalid pointer: 0x0000000003c6bcf0 ***
  3. ======= Backtrace: =========
  4. /lib64/libc.so.6(+0x7d1fd)[0x7fc875c0d1fd]
  5. gdb(find_pc_section+0x99)[0x605089]
  6. gdb(lookup_minimal_symbol_by_pc_section+0x1d)[0x60898d]
  7. gdb(find_pc_sect_symtab+0x29)[0x59eba9]
  8. gdb(select_frame+0x71)[0x699a11]
  9. gdb(get_selected_frame+0x39)[0x699a89]
  10. gdb(get_current_arch+0x27)[0x5e5447]
  11. gdb[0x52ba1e]
  12. gdb(registry_clear_data+0x93)[0x6bea63]
  13. gdb(registry_container_free_data+0xf)[0x6beadf]
  14. gdb[0x6ba8b2]
  15. gdb(prune_program_spaces+0x4c)[0x6ba99c]
  16. gdb[0x6ba9de]
  17. gdb(execute_command+0x2aa)[0x6901ba]
  18. gdb[0x5d85d1]
  19. gdb[0x5d8a8c]
  20. /lib64/libreadline.so.6(rl_callback_read_char+0x8e)[0x7fc877b57c6e]
  21. gdb[0x5d8639]
  22. gdb[0x5d71f4]
  23. gdb(gdb_do_one_event+0xa7)[0x5d7587]
  24. gdb(start_event_loop+0x57)[0x5d77b7]
  25. gdb[0x5d0623]
  26. gdb(catch_errors+0x8a)[0x5cee0a]
  27. gdb[0x5d12d6]
  28. gdb(catch_errors+0x8a)[0x5cee0a]
  29. gdb(gdb_main+0x24)[0x5d1f04]
  30. gdb(main+0x3e)[0x4572ee]
  31. /lib64/libc.so.6(__libc_start_main+0xf5)[0x7fc875bb1af5]
  32. gdb[0x457331]
  33. ======= Memory map: ========
  34. 00400000-00a02000 r-xp 00000000 08:01 1969692 /usr/bin/gdb
  35. 00c01000-00c02000 r--p 00601000 08:01 1969692 /usr/bin/gdb
  36. 00c02000-00c19000 rw-p 00602000 08:01 1969692 /usr/bin/gdb
  37. 00c19000-00c3c000 rw-p 00000000 00:00 0
  38. 02aee000-04636000 rw-p 00000000 00:00 0 [heap]
  39. 7fc871e78000-7fc871e7f000 r-xp 00000000 08:01 1964030 /usr/lib64/libthread_db-1.0.so
  40. 7fc871e7f000-7fc87207e000 ---p 00007000 08:01 1964030 /usr/lib64/libthread_db-1.0.so
  41. 7fc87207e000-7fc87207f000 r--p 00006000 08:01 1964030 /usr/lib64/libthread_db-1.0.so
  42. 7fc87207f000-7fc872080000 rw-p 00007000 08:01 1964030 /usr/lib64/libthread_db-1.0.so
  43. 7fc872080000-7fc8722d7000 rw-p 00000000 00:00 0
  44. 7fc872327000-7fc8723a0000 r-xp 00000000 08:01 1998038 /usr/lib64/libfreeblpriv3.so
  45. 7fc8723a0000-7fc87259f000 ---p 00079000 08:01 1998038 /usr/lib64/libfreeblpriv3.so
  46. 7fc87259f000-7fc8725a1000 r--p 00078000 08:01 1998038 /usr/lib64/libfreeblpriv3.so
  47. 7fc8725a1000-7fc8725a2000 rw-p 0007a000 08:01 1998038 /usr/lib64/libfreeblpriv3.so
  48. 7fc8725a2000-7fc8725a6000 rw-p 00000000 00:00 0
  49. 7fc8725a6000-7fc872657000 r-xp 00000000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.6
  50. 7fc872657000-7fc872856000 ---p 000b1000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.6
  51. 7fc872856000-7fc872858000 r--p 000b0000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.6
  52. 7fc872858000-7fc87285b000 rw-p 000b2000 08:01 1964225 /usr/lib64/libsqlite3.so.0.8.6
  53. 7fc87285b000-7fc872897000 r-xp 00000000 08:01 1984568 /usr/lib64/libsoftokn3.so
  54. 7fc872897000-7fc872a96000 ---p 0003c000 08:01 1984568 /usr/lib64/libsoftokn3.so
  55. 7fc872a96000-7fc872a97000 r--p 0003b000 08:01 1984568 /usr/lib64/libsoftokn3.so
  56. 7fc872a97000-7fc872a98000 rw-p 0003c000 08:01 1984568 /usr/lib64/libsoftokn3.so
  57. 7fc872a98000-7fc872aa3000 r-xp 00000000 08:01 1964026 /usr/lib64/libnss_files-2.17.so
  58. 7fc872aa3000-7fc872ca2000 ---p 0000b000 08:01 1964026 /usr/lib64/libnss_files-2.17.so
  59. 7fc872ca2000-7fc872ca3000 r--p 0000a000 08:01 1964026 /usr/lib64/libnss_files-2.17.so
  60. 7fc872ca3000-7fc872ca4000 rw-p 0000b000 08:01 1964026 /usr/lib64/libnss_files-2.17.so
  61. 7fc872ca4000-7fc872cab000 r-xp 00000000 08:01 1964029 /usr/lib64/librt-2.17.so
  62. 7fc872cab000-7fc872eaa000 ---p 00007000 08:01 1964029 /usr/lib64/librt-2.17.so
  63. 7fc872eaa000-7fc872eab000 r--p 00006000 08:01 1964029 /usr/lib64/librt-2.17.so
  64. 7fc872eab000-7fc872eac000 rw-p 00007000 08:01 1964029 /usr/lib64/librt-2.17.so
  65. 7fc872eac000-7fc872eb0000 r-xp 00000000 08:01 1964476 /usr/lib64/libattr.so.1.1.0
  66. 7fc872eb0000-7fc8730af000 ---p 00004000 08:01 1964476 /usr/lib64/libattr.so.1.1.0
  67. 7fc8730af000-7fc8730b0000 r--p 00003000 08:01 1964476 /usr/lib64/libattr.so.1.1.0
  68. 7fc8730b0000-7fc8730b1000 rw-p 00004000 08:01 1964476 /usr/lib64/libattr.so.1.1.0
  69. 7fc8730b1000-7fc8730ea000 r-xp 00000000 08:01 2003551 /usr/lib64/libnspr4.so
  70. 7fc8730ea000-7fc8732ea000 ---p 00039000 08:01 2003551 /usr/lib64/libnspr4.so
  71. 7fc8732ea000-7fc8732eb000 r--p 00039000 08:01 2003551 /usr/lib64/libnspr4.so
  72. 7fc8732eb000-7fc8732ed000 rw-p 0003a000 08:01 2003551 /usr/lib64/libnspr4.so
  73. 7fc8732ed000-7fc8732ef000 rw-p 00000000 00:00 0
  74. 7fc8732ef000-7fc8732f2000 r-xp 00000000 08:01 2003553 /usr/lib64/libplds4.so
  75. 7fc8732f2000-7fc8734f1000 ---p 00003000 08:01 2003553 /usr/lib64/libplds4.so
  76. 7fc8734f1000-7fc8734f2000 r--p 00002000 08:01 2003553 /usr/lib64/libplds4.so
  77. 7fc8734f2000-7fc8734f3000 rw-p 00003000 08:01 2003553 /usr/lib64/libplds4.so
  78. 7fc8734f3000-7fc8734f7000 r-xp 00000000 08:01 2003552 /usr/lib64/libplc4.so
  79. 7fc8734f7000-7fc8736f6000 ---p 00004000 08:01 2003552 /usr/lib64/libplc4.so
  80. 7fc8736f6000-7fc8736f7000 r--p 00003000 08:01 2003552 /usr/lib64/libplc4.so
  81. 7fc8736f7000-7fc8736f8000 rw-p 00004000 08:01 2003552 /usr/lib64/libplc4.so
  82. 7fc8736f8000-7fc87371d000 r-xp 00000000 08:01 1971387 /usr/lib64/libnssutil3.so
  83. 7fc87371d000-7fc87391d000 ---p 00025000 08:01 1971387 /usr/lib64/libnssutil3.so
  84. 7fc87391d000-7fc873923000 r--p 00025000 08:01 1971387 /usr/lib64/libnssutil3.so
  85. 7fc873923000-7fc873924000 rw-p 0002b000 08:01 1971387 /usr/lib64/libnssutil3.so
  86. 7fc873924000-7fc873ad8000 r-xp 00000000 08:01 1964466 /usr/lib64/libdb-5.3.so
  87. 7fc873ad8000-7fc873cd8000 ---p 001b4000 08:01 1964466 /usr/lib64/libdb-5.3.so
  88. 7fc873cd8000-7fc873cdf000 r--p 001b4000 08:01 1964466 /usr/lib64/libdb-5.3.so
  89. 7fc873cdf000-7fc873ce2000 rw-p 001bb000 08:01 1964466 /usr/lib64/libdb-5.3.so
  90. 7fc873ce2000-7fc873d0e000 r-xp 00000000 08:01 1964523 /usr/lib64/liblua-5.1.so
  91. 7fc873d0e000-7fc873f0d000 ---p 0002c000 08:01 1964523 /usr/lib64/liblua-5.1.so
  92. 7fc873f0d000-7fc873f0f000 r--p 0002b000 08:01 1964523 /usr/lib64/liblua-5.1.so
  93. 7fc873f0f000-7fc873f10000 rw-p 0002d000 08:01 1964523 /usr/lib64/liblua-5.1.so
  94. 7fc873f10000-7fc873f17000 r-xp 00000000 08:01 1964490 /usr/lib64/libacl.so.1.1.0
  95. 7fc873f17000-7fc874117000 ---p 00007000 08:01 1964490 /usr/lib64/libacl.so.1.1.0
  96. 7fc874117000-7fc874118000 r--p 00007000 08:01 1964490 /usr/lib64/libacl.so.1.1.0
  97. 7fc874118000-7fc874119000 rw-p 00008000 08:01 1964490 /usr/lib64/libacl.so.1.1.0
  98. 7fc874119000-7fc87411d000 r-xp 00000000 08:01 1964479 /usr/lib64/libcap.so.2.22
  99. 7fc87411d000-7fc87431c000 ---p 00004000 08:01 1964479 /usr/lib64/libcap.so.2.22
  100. 7fc87431c000-7fc87431d000 r--p 00003000 08:01 1964479 /usr/lib64/libcap.so.2.22
  101. 7fc87431d000-7fc87431e000 rw-p 00004000 08:01 1964479 /usr/lib64/libcap.so.2.22
  102. 7fc87431e000-7fc874327000 r-xp 00000000 08:01 1964103 /usr/lib64/libpopt.so.0.0.0
  103. 7fc874327000-7fc874526000 ---p 00009000 08:01 1964103 /usr/lib64/libpopt.so.0.0.0
  104. 7fc874526000-7fc874527000 r--p 00008000 08:01 1964103 /usr/lib64/libpopt.so.0.0.0
  105. 7fc874527000-7fc874528000 rw-p 00009000 08:01 1964103 /usr/lib64/libpopt.so.0.0.0
  106. 7fc874528000-7fc87453d000 r-xp 00000000 08:01 1998086 /usr/lib64/libelf-0.160.so
  107. 7fc87453d000-7fc87473c000 ---p 00015000 08:01 1998086 /usr/lib64/libelf-0.160.so
  108. 7fc87473c000-7fc87473d000 r--p 00014000 08:01 1998086 /usr/lib64/libelf-0.160.so
  109. 7fc87473d000-7fc87473e000 rw-p 00015000 08:01 1998086 /usr/lib64/libelf-0.160.so
  110. 7fc87473e000-7fc87474d000 r-xp 00000000 08:01 1964150 /usr/lib64/libbz2.so.1.0.6
  111. 7fc87474d000-7fc87494c000 ---p 0000f000 08:01 1964150 /usr/lib64/libbz2.so.1.0.6
  112. 7fc87494c000-7fc87494d000 r--p 0000e000 08:01 1964150 /usr/lib64/libbz2.so.1.0.6
  113. 7fc87494d000-7fc87494e000 rw-p 0000f000 08:01 1964150 /usr/lib64/libbz2.so.1.0.6
  114. 7fc87494e000-7fc874a6c000 r-xp 00000000 08:01 1973518 /usr/lib64/libnss3.so
  115. 7fc874a6c000-7fc874c6b000 ---p 0011e000 08:01 1973518 /usr/lib64/libnss3.so
  116. 7fc874c6b000-7fc874c70000 r--p 0011d000 08:01 1973518 /usr/lib64/libnss3.so
  117. 7fc874c70000-7fc874c72000 rw-p 00122000 08:01 1973518 /usr/lib64/libnss3.so
  118. 7fc874c72000-7fc874c74000 rw-p 00000000 00:00 0
  119. 7fc874c74000-7fc874c9c000 r-xp 00000000 08:01 1984636 /usr/lib64/librpmio.so.3.2.0
  120. 7fc874c9c000-7fc874e9b000 ---p 00028000 08:01 1984636 /usr/lib64/librpmio.so.3.2.0
  121. 7fc874e9b000-7fc874e9d000 r--p 00027000 08:01 1984636 /usr/lib64/librpmio.so.3.2.0
  122. 7fc874e9d000-7fc874e9f000 rw-p 00029000 08:01 1984636 /usr/lib64/librpmio.so.3.2.0
  123. 7fc874e9f000-7fc874ea1000 rw-p 00000000 00:00 0
  124. 7fc874ea1000-7fc874f01000 r-xp 00000000 08:01 1967718 /usr/lib64/librpm.so.3.2.0
  125. 7fc874f01000-7fc875101000 ---p 00060000 08:01 1967718 /usr/lib64/librpm.so.3.2.0
  126. 7fc875101000-7fc875104000 r--p 00060000 08:01 1967718 /usr/lib64/librpm.so.3.2.0
  127. 7fc875104000-7fc875107000 rw-p 00063000 08:01 1967718 /usr/lib64/librpm.so.3.2.0
  128. 7fc875107000-7fc875108000 rw-p 00000000 00:00 0
  129. 7fc875108000-7fc87510b000 r-xp 00000000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so
  130. 7fc87510b000-7fc87530a000 ---p 00003000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so
  131. 7fc87530a000-7fc87530b000 r--p 00002000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so
  132. 7fc87530b000-7fc87530d000 rw-p 00003000 08:01 691169 /usr/lib64/python2.7/lib-dynload/_heapq.so
  133. 7fc87530d000-7fc875315000 r-xp 00000000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so
  134. 7fc875315000-7fc875515000 ---p 00008000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so
  135. 7fc875515000-7fc875516000 r--p 00008000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so
  136. 7fc875516000-7fc875518000 rw-p 00009000 08:01 656224 /usr/lib64/python2.7/lib-dynload/operator.so
  137. 7fc875518000-7fc87551e000 r-xp 00000000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so
  138. 7fc87551e000-7fc87571d000 ---p 00006000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so
  139. 7fc87571d000-7fc87571e000 r--p 00005000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so
  140. 7fc87571e000-7fc875720000 rw-p 00006000 08:01 656182 /usr/lib64/python2.7/lib-dynload/_collectionsmodule.so
  141. 7fc875720000-7fc87572a000 r-xp 00000000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so
  142. 7fc87572a000-7fc875929000 ---p 0000a000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so
  143. 7fc875929000-7fc87592a000 r--p 00009000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so
  144. 7fc87592a000-7fc87592f000 rw-p 0000a000 08:01 656219 /usr/lib64/python2.7/lib-dynload/itertoolsmodule.so
  145. 7fc87592f000-7fc87598e000 r-xp 00000000 08:01 1964054 /usr/lib64/libpcre.so.1.2.0
  146. 7fc87598e000-7fc875b8e000 ---p 0005f000 08:01 1964054 /usr/lib64/libpcre.so.1.2.0
  147. 7fc875b8e000-7fc875b8f000 r--p 0005f000 08:01 1964054 /usr/lib64/libpcre.so.1.2.0
  148. 7fc875b8f000-7fc875b90000 rw-p 00060000 08:01 1964054 /usr/lib64/libpcre.so.1.2.0
  149. 7fc875b90000-7fc875d46000 r-xp 00000000 08:01 1963631 /usr/lib64/libc-2.17.so
  150. 7fc875d46000-7fc875f46000 ---p 001b6000 08:01 1963631 /usr/lib64/libc-2.17.so
  151. 7fc875f46000-7fc875f4a000 r--p 001b6000 08:01 1963631 /usr/lib64/libc-2.17.so
  152. 7fc875f4a000-7fc875f4c000 rw-p 001ba000 08:01 1963631 /usr/lib64/libc-2.17.so
  153. 7fc875f4c000-7fc875f51000 rw-p 00000000 00:00 0
  154. 7fc875f51000-7fc875f66000 r-xp 00000000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.1
  155. 7fc875f66000-7fc876165000 ---p 00015000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.1
  156. 7fc876165000-7fc876166000 r--p 00014000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.1
  157. 7fc876166000-7fc876167000 rw-p 00015000 08:01 1975512 /usr/lib64/libgcc_s-4.8.3-20140911.so.1
  158. 7fc876167000-7fc87618b000 r-xp 00000000 08:01 1964052 /usr/lib64/liblzma.so.5.0.99
  159. 7fc87618b000-7fc87638a000 ---p 00024000 08:01 1964052 /usr/lib64/liblzma.so.5.0.99
  160. 7fc87638a000-7fc87638b000 r--p 00023000 08:01 1964052 /usr/lib64/liblzma.so.5.0.99
  161. 7fc87638b000-7fc87638c000 rw-p 00024000 08:01 1964052 /usr/lib64/liblzma.so.5.0.99
  162. 7fc87638c000-7fc8763b3000 r-xp 00000000 08:01 1964215 /usr/lib64/libexpat.so.1.6.0
  163. 7fc8763b3000-7fc8765b3000 ---p 00027000 08:01 1964215 /usr/lib64/libexpat.so.1.6.0
  164. 7fc8765b3000-7fc8765b5000 r--p 00027000 08:01 1964215 /usr/lib64/libexpat.so.1.6.0
  165. 7fc8765b5000-7fc8765b6000 rw-p 00029000 08:01 1964215 /usr/lib64/libexpat.so.1.6.0
  166. 7fc8765b6000-7fc87672e000 r-xp 00000000 08:01 1972073 /usr/lib64/libpython2.7.so.1.0
  167. 7fc87672e000-7fc87692e000 ---p 00178000 08:01 1972073 /usr/lib64/libpython2.7.so.1.0
  168. 7fc87692e000-7fc87692f000 r--p 00178000 08:01 1972073 /usr/lib64/libpython2.7.so.1.0
  169. 7fc87692f000-7fc87696d000 rw-p 00179000 08:01 1972073 /usr/lib64/libpython2.7.so.1.0
  170. 7fc87696d000-7fc87697c000 rw-p 00000000 00:00 0
  171. 7fc87697c000-7fc87697e000 r-xp 00000000 08:01 1963665 /usr/lib64/libutil-2.17.so
  172. 7fc87697e000-7fc876b7d000 ---p 00002000 08:01 1963665 /usr/lib64/libutil-2.17.so
  173. 7fc876b7d000-7fc876b7e000 r--p 00001000 08:01 1963665 /usr/lib64/libutil-2.17.so
  174. 7fc876b7e000-7fc876b7f000 rw-p 00002000 08:01 1963665 /usr/lib64/libutil-2.17.so
  175. 7fc876b7f000-7fc876b95000 r-xp 00000000 08:01 1963657 /usr/lib64/libpthread-2.17.so
  176. 7fc876b95000-7fc876d95000 ---p 00016000 08:01 1963657 /usr/lib64/libpthread-2.17.so
  177. 7fc876d95000-7fc876d96000 r--p 00016000 08:01 1963657 /usr/lib64/libpthread-2.17.so
  178. 7fc876d96000-7fc876d97000 rw-p 00017000 08:01 1963657 /usr/lib64/libpthread-2.17.so
  179. 7fc876d97000-7fc876d9b000 rw-p 00000000 00:00 0
  180. 7fc876d9b000-7fc876d9e000 r-xp 00000000 08:01 1964022 /usr/lib64/libdl-2.17.so
  181. 7fc876d9e000-7fc876f9d000 ---p 00003000 08:01 1964022 /usr/lib64/libdl-2.17.so
  182. 7fc876f9d000-7fc876f9e000 r--p 00002000 08:01 1964022 /usr/lib64/libdl-2.17.so
  183. 7fc876f9e000-7fc876f9f000 rw-p 00003000 08:01 1964022 /usr/lib64/libdl-2.17.so
  184. 7fc876f9f000-7fc8770a0000 r-xp 00000000 08:01 1964023 /usr/lib64/libm-2.17.so
  185. 7fc8770a0000-7fc87729f000 ---p 00101000 08:01 1964023 /usr/lib64/libm-2.17.so
  186. 7fc87729f000-7fc8772a0000 r--p 00100000 08:01 1964023 /usr/lib64/libm-2.17.so
  187. 7fc8772a0000-7fc8772a1000 rw-p 00101000 08:01 1964023 /usr/lib64/libm-2.17.so
  188. 7fc8772a1000-7fc8772b6000 r-xp 00000000 08:01 1964070 /usr/lib64/libz.so.1.2.7
  189. 7fc8772b6000-7fc8774b5000 ---p 00015000 08:01 1964070 /usr/lib64/libz.so.1.2.7
  190. 7fc8774b5000-7fc8774b6000 r--p 00014000 08:01 1964070 /usr/lib64/libz.so.1.2.7
  191. 7fc8774b6000-7fc8774b7000 rw-p 00015000 08:01 1964070 /usr/lib64/libz.so.1.2.7
  192. 7fc8774b7000-7fc8774dc000 r-xp 00000000 08:01 1963963 /usr/lib64/libtinfo.so.5.9
  193. 7fc8774dc000-7fc8776dc000 ---p 00025000 08:01 1963963 /usr/lib64/libtinfo.so.5.9
  194. 7fc8776dc000-7fc8776e0000 r--p 00025000 08:01 1963963 /usr/lib64/libtinfo.so.5.9
  195. 7fc8776e0000-7fc8776e1000 rw-p 00029000 08:01 1963963 /usr/lib64/libtinfo.so.5.9
  196. 7fc8776e1000-7fc877707000 r-xp 00000000 08:01 1963953 /usr/lib64/libncurses.so.5.9
  197. 7fc877707000-7fc877906000 ---p 00026000 08:01 1963953 /usr/lib64/libncurses.so.5.9
  198. 7fc877906000-7fc877907000 r--p 00025000 08:01 1963953 /usr/lib64/libncurses.so.5.9
  199. 7fc877907000-7fc877908000 rw-p 00026000 08:01 1963953 /usr/lib64/libncurses.so.5.9
  200. 7fc877908000-7fc877929000 r-xp 00000000 08:01 1964067 /usr/lib64/libselinux.so.1
  201. 7fc877929000-7fc877b29000 ---p 00021000 08:01 1964067 /usr/lib64/libselinux.so.1
  202. 7fc877b29000-7fc877b2a000 r--p 00021000 08:01 1964067 /usr/lib64/libselinux.so.1
  203. 7fc877b2a000-7fc877b2b000 rw-p 00022000 08:01 1964067 /usr/lib64/libselinux.so.1
  204. 7fc877b2b000-7fc877b2d000 rw-p 00000000 00:00 0
  205. 7fc877b2d000-7fc877b69000 r-xp 00000000 08:01 1964218 /usr/lib64/libreadline.so.6.2
  206. 7fc877b69000-7fc877d69000 ---p 0003c000 08:01 1964218 /usr/lib64/libreadline.so.6.2
  207. 7fc877d69000-7fc877d6b000 r--p 0003c000 08:01 1964218 /usr/lib64/libreadline.so.6.2
  208. 7fc877d6b000-7fc877d71000 rw-p 0003e000 08:01 1964218 /usr/lib64/libreadline.so.6.2
  209. 7fc877d71000-7fc877d73000 rw-p 00000000 00:00 0
  210. 7fc877d73000-7fc877d94000 r-xp 00000000 08:01 1963623 /usr/lib64/ld-2.17.so
  211. 7fc877da8000-7fc877e39000 rw-p 00000000 00:00 0
  212. 7fc877e41000-7fc877f80000 rw-p 00000000 00:00 0
  213. 7fc877f80000-7fc877f89000 r--p 00010000 08:01 786974 /home/xuzhina/code/xerces/sample/new_address
  214. 7fc877f89000-7fc877f91000 r--p 00008000 08:01 786974 /home/xuzhina/code/xerces/sample/new_address
  215. 7fc877f91000-7fc877f94000 rw-p 00000000 00:00 0
  216. 7fc877f94000-7fc877f95000 r--p 00021000 08:01 1963623 /usr/lib64/ld-2.17.so
  217. 7fc877f95000-7fc877f96000 rw-p 00022000 08:01 1963623 /usr/lib64/ld-2.17.so
  218. 7fc877f96000-7fc877f97000 rw-p 00000000 00:00 0
  219. 7ffc6acdc000-7ffc6acfd000 rw-p 00000000 00:00 0 [stack]
  220. 7ffc6adfe000-7ffc6ae00000 r-xp 00000000 00:00 0 [vdso]
  221. ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
  222.  
  223. Aborted (core dumped)

gdb的版本号:

  1. (gdb) show version
  2. GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7
  3. Copyright (C) 2013 Free Software Foundation, Inc.
  4. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  5. This is free software: you are free to change and redistribute it.
  6. There is NO WARRANTY, to the extent permitted by law. Type "show copying"
  7. and "show warranty" for details.
  8. This GDB was configured as "x86_64-redhat-linux-gnu".
  9. For bug reporting instructions, please see:
  10. <http://www.gnu.org/software/gdb/bugs/>.

看一下堆栈:

  1. [xuzhina@localhost sample]$ gdb /usr/bin/gdb core-gdb-4332-1436781341-6
  2. GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-64.el7
  3. Copyright (C) 2013 Free Software Foundation, Inc.
  4. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  5. This is free software: you are free to change and redistribute it.
  6. There is NO WARRANTY, to the extent permitted by law. Type "show copying"
  7. and "show warranty" for details.
  8. This GDB was configured as "x86_64-redhat-linux-gnu".
  9. For bug reporting instructions, please see:
  10. <http://www.gnu.org/software/gdb/bugs/>...
  11. Reading symbols from /usr/bin/gdb...Reading symbols from /usr/bin/gdb...(no debugging symbols found)...done.
  12. (no debugging symbols found)...done.
  13. [New LWP 4332]
  14. [Thread debugging using libthread_db enabled]
  15. Using host libthread_db library "/lib64/libthread_db.so.1".
  16. Core was generated by `gdb new_address'.
  17. Program terminated with signal 6, Aborted.
  18. #0 0x00007fc875bc55d7 in raise () from /lib64/libc.so.6
  19. Missing separate debuginfos, use: debuginfo-install gdb-7.6.1-64.el7.x86_64
  20. (gdb) bt
  21. #0 0x00007fc875bc55d7 in raise () from /lib64/libc.so.6
  22. #1 0x00007fc875bc6cc8 in abort () from /lib64/libc.so.6
  23. #2 0x00007fc875c05e07 in __libc_message () from /lib64/libc.so.6
  24. #3 0x00007fc875c0d1fd in _int_free () from /lib64/libc.so.6
  25. #4 0x0000000000605089 in find_pc_section ()
  26. #5 0x000000000060898d in lookup_minimal_symbol_by_pc_section ()
  27. #6 0x000000000059eba9 in find_pc_sect_symtab ()
  28. #7 0x0000000000699a11 in select_frame ()
  29. #8 0x0000000000699a89 in get_selected_frame ()
  30. #9 0x00000000005e5447 in get_current_arch ()
  31. #10 0x000000000052ba1e in py_free_pspace ()
  32. #11 0x00000000006bea63 in registry_clear_data ()
  33. #12 0x00000000006beadf in registry_container_free_data ()
  34. #13 0x00000000006ba8b2 in release_program_space ()
  35. #14 0x00000000006ba99c in prune_program_spaces ()
  36. #15 0x00000000006ba9de in maintenance_info_program_spaces_command ()
  37. #16 0x00000000006901ba in execute_command ()
  38. #17 0x00000000005d85d1 in command_handler ()
  39. #18 0x00000000005d8a8c in command_line_handler ()
  40. #19 0x00007fc877b57c6e in rl_callback_read_char () from /lib64/libreadline.so.6
  41. #20 0x00000000005d8639 in rl_callback_read_char_wrapper ()
  42. #21 0x00000000005d71f4 in process_event ()
  43. #22 0x00000000005d7587 in gdb_do_one_event ()
  44. #23 0x00000000005d77b7 in start_event_loop ()
  45. #24 0x00000000005d0623 in captured_command_loop ()
  46. #25 0x00000000005cee0a in catch_errors ()
  47. #26 0x00000000005d12d6 in captured_main ()
  48. #27 0x00000000005cee0a in catch_errors ()
  49. #28 0x00000000005d1f04 in gdb_main ()
  50. #29 0x00000000004572ee in main ()

从堆栈能够看到。是在释放内存时出现故障,那么出现故障的地方应该是第4祯,find_pc_section函数里。

跳转到第4祯:

  1. (gdb) frame 4
  2. #4 0x0000000000605089 in find_pc_section ()

看一下汇编:

  1. (gdb) disassemble
  2. Dump of assembler code for function find_pc_section:
  3. 0x0000000000604ff0 <+0>: push %r15
  4. 0x0000000000604ff2 <+2>: push %r14
  5. 0x0000000000604ff4 <+4>: push %r13
  6. 0x0000000000604ff6 <+6>: push %r12
  7. 0x0000000000604ff8 <+8>: push %rbp
  8. 0x0000000000604ff9 <+9>: push %rbx
  9. 0x0000000000604ffa <+10>: sub $0x98,%rsp
  10. 0x0000000000605001 <+17>: mov %rdi,0x88(%rsp)
  11. 0x0000000000605009 <+25>: callq 0x5a8830 <find_pc_mapped_section>
  12. 0x000000000060500e <+30>: test %rax,%rax
  13. 0x0000000000605011 <+33>: je 0x605028 <find_pc_section+56>
  14. 0x0000000000605013 <+35>: add $0x98,%rsp
  15. 0x000000000060501a <+42>: pop %rbx
  16. 0x000000000060501b <+43>: pop %rbp
  17. 0x000000000060501c <+44>: pop %r12
  18. 0x000000000060501e <+46>: pop %r13
  19. 0x0000000000605020 <+48>: pop %r14
  20. 0x0000000000605022 <+50>: pop %r15
  21. 0x0000000000605024 <+52>: retq
  22. 0x0000000000605025 <+53>: nopl (%rax)
  23. 0x0000000000605028 <+56>: mov 0x635fb1(%rip),%rdi # 0xc3afe0 <current_program_space>
  24. 0x000000000060502f <+63>: callq 0x6043e0 <get_objfile_pspace_data>
  25. 0x0000000000605034 <+68>: mov 0x10(%rax),%edi
  26. 0x0000000000605037 <+71>: mov %rax,0x78(%rsp)
  27. 0x000000000060503c <+76>: test %edi,%edi
  28. 0x000000000060503e <+78>: jne 0x60505b <find_pc_section+107>
  29. 0x0000000000605040 <+80>: mov 0xc(%rax),%esi
  30. 0x0000000000605043 <+83>: test %esi,%esi
  31. 0x0000000000605045 <+85>: je 0x60513b <find_pc_section+331>
  32. 0x000000000060504b <+91>: mov 0x78(%rsp),%rax
  33. 0x0000000000605050 <+96>: mov 0x14(%rax),%ecx
  34. 0x0000000000605053 <+99>: test %ecx,%ecx
  35. 0x0000000000605055 <+101>: jne 0x60513b <find_pc_section+331>
  36. 0x000000000060505b <+107>: mov 0x635f7e(%rip),%rbx # 0xc3afe0 <current_program_space>
  37. 0x0000000000605062 <+114>: mov %rbx,%rdi
  38. 0x0000000000605065 <+117>: callq 0x6043e0 <get_objfile_pspace_data>
  39. 0x000000000060506a <+122>: mov 0x10(%rax),%edx
  40. 0x000000000060506d <+125>: test %edx,%edx
  41. 0x000000000060506f <+127>: jne 0x60507c <find_pc_section+140>
  42. 0x0000000000605071 <+129>: mov 0xc(%rax),%eax
  43. 0x0000000000605074 <+132>: test %eax,%eax
  44. ---Type <return> to continue, or q <return> to quit---
  45. 0x0000000000605076 <+134>: je 0x6055d5 <find_pc_section+1509>
  46. 0x000000000060507c <+140>: mov 0x78(%rsp),%rax
  47. 0x0000000000605081 <+145>: mov (%rax),%rdi
  48. 0x0000000000605084 <+148>: callq 0x6bd1b0 <xfree>
  49. => 0x0000000000605089 <+153>: mov 0x40(%rbx),%r8
  50. 0x000000000060508d <+157>: test %r8,%r8
  51. 0x0000000000605090 <+160>: je 0x60510f <find_pc_section+287>
  52. 0x0000000000605092 <+162>: mov 0x61bbd4(%rip),%edi # 0xc20c6c <overlay_debugging>
  53. 0x0000000000605098 <+168>: xor %ecx,%ecx
  54. 0x000000000060509a <+170>: nopw 0x0(%rax,%rax,1)
  55. 0x00000000006050a0 <+176>: mov 0x80d8(%r8),%rax
  56. 0x00000000006050a7 <+183>: mov 0x80e0(%r8),%r9
  57. 0x00000000006050ae <+190>: cmp %r9,%rax
  58. 0x00000000006050b1 <+193>: jae 0x6050f8 <find_pc_section+264>
  59. 0x00000000006050b3 <+195>: mov 0x48(%r8),%r10
  60. 0x00000000006050b7 <+199>: nopw 0x0(%rax,%rax,1)
  61. 0x00000000006050c0 <+208>: mov (%rax),%rdx
  62. 0x00000000006050c3 <+211>: test %edi,%edi
  63. 0x00000000006050c5 <+213>: mov 0x30(%rdx),%rsi
  64. 0x00000000006050c9 <+217>: je 0x6050e0 <find_pc_section+240>
  65. 0x00000000006050cb <+219>: test %rsi,%rsi
  66. 0x00000000006050ce <+222>: je 0x6050e0 <find_pc_section+240>
  67. 0x00000000006050d0 <+224>: cmp 0x28(%rdx),%rsi
  68. 0x00000000006050d4 <+228>: je 0x6050e0 <find_pc_section+240>
  69. 0x00000000006050d6 <+230>: testb $0x8,0x55(%r10)
  70. 0x00000000006050db <+235>: je 0x6050ef <find_pc_section+255>
  71. 0x00000000006050dd <+237>: nopl (%rax)
  72. 0x00000000006050e0 <+240>: mov 0x20(%rdx),%edx
  73. 0x00000000006050e3 <+243>: and $0x400,%edx
  74. 0x00000000006050e9 <+249>: cmp $0x1,%edx
  75. 0x00000000006050ec <+252>: adc $0x0,%ecx
  76. 0x00000000006050ef <+255>: add $0x18,%rax
  77. 0x00000000006050f3 <+259>: cmp %r9,%rax
  78. 0x00000000006050f6 <+262>: jb 0x6050c0 <find_pc_section+208>
  79. 0x00000000006050f8 <+264>: mov (%r8),%r8
  80. 0x00000000006050fb <+267>: test %r8,%r8
  81. 0x00000000006050fe <+270>: jne 0x6050a0 <find_pc_section+176>
  82. 0x0000000000605100 <+272>: test %ecx,%ecx
  83. 0x0000000000605102 <+274>: mov %ecx,0x84(%rsp)
  84. 0x0000000000605109 <+281>: jne 0x6051b0 <find_pc_section+448>
  85. 0x000000000060510f <+287>: mov 0x78(%rsp),%rax
  86. 0x0000000000605114 <+292>: xor %ebx,%ebx

coredump位置在这一段汇编:

  1. 0x000000000060507c <+140>: mov 0x78(%rsp),%rax
  2. 0x0000000000605081 <+145>: mov (%rax),%rdi
  3. 0x0000000000605084 <+148>: callq 0x6bd1b0 <xfree>
  4. => 0x0000000000605089 <+153>: mov 0x40(%rbx),%r8

看一下代码,下载gdb-7.6.1代码来看,在objfiles.c里有定义find_pc_section

  1. struct obj_section *
  2. find_pc_section (CORE_ADDR pc)
  3. {
  4. struct objfile_pspace_info *pspace_info;
  5. struct obj_section *s, **sp;
  6.  
  7. /* Check for mapped overlay section first. */
  8. s = find_pc_mapped_section (pc);
  9. if (s)
  10. return s;
  11.  
  12. pspace_info = get_objfile_pspace_data (current_program_space);
  13. if (pspace_info->objfiles_changed_p != 0)
  14. {
  15. update_section_map (current_program_space,
  16. &pspace_info->sections,
  17. &pspace_info->num_sections);
  18.  
  19. /* Don't need updates to section map until objfiles are added,
  20. removed or relocated. */
  21. pspace_info->objfiles_changed_p = 0;
  22. }
  23.  
  24. /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to
  25. bsearch be non-NULL. */
  26. if (pspace_info->sections == NULL)
  27. {
  28. gdb_assert (pspace_info->num_sections == 0);
  29. return NULL;
  30. }
  31.  
  32. sp = (struct obj_section **) bsearch (&pc,
  33. pspace_info->sections,
  34. pspace_info->num_sections,
  35. sizeof (*pspace_info->sections),
  36. bsearch_cmp);
  37. if (sp != NULL)
  38. return *sp;
  39. return NULL;
  40. }

但似乎没看到哪里有调用xfree.

再看一下出问题的地址上面的汇编:

  1. 0x0000000000604ff0 <+0>: push %r15
  2. 0x0000000000604ff2 <+2>: push %r14
  3. 0x0000000000604ff4 <+4>: push %r13
  4. 0x0000000000604ff6 <+6>: push %r12
  5. 0x0000000000604ff8 <+8>: push %rbp
  6. 0x0000000000604ff9 <+9>: push %rbx
  7. 0x0000000000604ffa <+10>: sub $0x98,%rsp
  8. 0x0000000000605001 <+17>: mov %rdi,0x88(%rsp)
  9. 0x0000000000605009 <+25>: callq 0x5a8830 <find_pc_mapped_section>
  10. 0x000000000060500e <+30>: test %rax,%rax
  11. 0x0000000000605011 <+33>: je 0x605028 <find_pc_section+56>
  12. 0x0000000000605013 <+35>: add $0x98,%rsp
  13. 0x000000000060501a <+42>: pop %rbx
  14. 0x000000000060501b <+43>: pop %rbp
  15. 0x000000000060501c <+44>: pop %r12
  16. 0x000000000060501e <+46>: pop %r13
  17. 0x0000000000605020 <+48>: pop %r14
  18. 0x0000000000605022 <+50>: pop %r15
  19. 0x0000000000605024 <+52>: retq
  20. 0x0000000000605025 <+53>: nopl (%rax)
  21. 0x0000000000605028 <+56>: mov 0x635fb1(%rip),%rdi # 0xc3afe0 <current_program_space>
  22. 0x000000000060502f <+63>: callq 0x6043e0 <get_objfile_pspace_data>
  23. 0x0000000000605034 <+68>: mov 0x10(%rax),%edi
  24. 0x0000000000605037 <+71>: mov %rax,0x78(%rsp)
  25. 0x000000000060503c <+76>: test %edi,%edi
  26. 0x000000000060503e <+78>: jne 0x60505b <find_pc_section+107>
  27. 0x0000000000605040 <+80>: mov 0xc(%rax),%esi
  28. 0x0000000000605043 <+83>: test %esi,%esi
  29. 0x0000000000605045 <+85>: je 0x60513b <find_pc_section+331>
  30. 0x000000000060504b <+91>: mov 0x78(%rsp),%rax
  31. 0x0000000000605050 <+96>: mov 0x14(%rax),%ecx
  32. 0x0000000000605053 <+99>: test %ecx,%ecx
  33. 0x0000000000605055 <+101>: jne 0x60513b <find_pc_section+331>
  34. 0x000000000060505b <+107>: mov 0x635f7e(%rip),%rbx # 0xc3afe0 <current_program_space>
  35. 0x0000000000605062 <+114>: mov %rbx,%rdi
  36. 0x0000000000605065 <+117>: callq 0x6043e0 <get_objfile_pspace_data>
  37. 0x000000000060506a <+122>: mov 0x10(%rax),%edx
  38. 0x000000000060506d <+125>: test %edx,%edx
  39. 0x000000000060506f <+127>: jne 0x60507c <find_pc_section+140>
  40. 0x0000000000605071 <+129>: mov 0xc(%rax),%eax
  41. 0x0000000000605074 <+132>: test %eax,%eax

能够看到,在这几行汇编里:

  1. 0x0000000000605009 <+25>: callq 0x5a8830 <find_pc_mapped_section>
  1. 0x000000000060502f <+63>: callq 0x6043e0 <get_objfile_pspace_data>
  1. 0x0000000000605065 <+117>: callq 0x6043e0 <get_objfile_pspace_data>

依次调用了find_pc_mapped_section,get_objfile_pspace_data。get_objfile_pspace_data

再看一下第一次调用get_objfile_pspace_data的汇编片段:

  1.  0x000000000060502f <+63>:    callq  0x6043e0 <get_objfile_pspace_data>
  2.    0x0000000000605034 <+68>:    mov    0x10(%rax),%edi
  3.    0x0000000000605037 <+71>:    mov    %rax,0x78(%rsp)
  4.    0x000000000060503c <+76>:    test   %edi,%edi
  5.    0x000000000060503e <+78>:    jne    0x60505b <find_pc_section+107>
  6.    0x0000000000605040 <+80>:    mov    0xc(%rax),%esi
  7.    0x0000000000605043 <+83>:    test   %esi,%esi
  8.    0x0000000000605045 <+85>:    je     0x60513b <find_pc_section+331>
  9.    0x000000000060504b <+91>:    mov    0x78(%rsp),%rax
  10.    0x0000000000605050 <+96>:    mov    0x14(%rax),%ecx
  11.    0x0000000000605053 <+99>:    test   %ecx,%ecx
  12.    0x0000000000605055 <+101>:    jne    0x60513b <find_pc_section+331>
  13.    0x000000000060505b <+107>:    mov    0x635f7e(%rip),%rbx        # 0xc3afe0 <current_program_space>

可见,

  1. => 0x0000000000605089 <+153>: mov 0x40(%rbx),%r8

不是由

  1.    0x0000000000605045 <+85>:    je     0x60513b <find_pc_section+331>
  1.    0x0000000000605055 <+101>:    jne    0x60513b <find_pc_section+331>

跳转过去的。

那么。coredump地址应该是位于这一段代码里:

  1. if (pspace_info->objfiles_changed_p != 0)
  2. {
  3. update_section_map (current_program_space,
  4. &pspace_info->sections,
  5. &pspace_info->num_sections);
  6.  
  7. /* Don't need updates to section map until objfiles are added,
  8. removed or relocated. */
  9. pspace_info->objfiles_changed_p = 0;
  10. }

考虑到编译器可能会进行代码优化,把一些仅仅调用一次的static函数内联。

看一下update_section_map(假设用source insight看,这个函数确实仅仅被find_pc_section调用。并且仅仅调用一次。

)

  1. static void
  2. update_section_map (struct program_space *pspace,
  3. struct obj_section ***pmap, int *pmap_size)
  4. {
  5. int alloc_size, map_size, i;
  6. struct obj_section *s, **map;
  7. struct objfile *objfile;
  8.  
  9. gdb_assert (get_objfile_pspace_data (pspace)->objfiles_changed_p != 0);
  10.  
  11. map = *pmap;
  12. xfree (map);
  13.  
  14. alloc_size = 0;
  15. ALL_PSPACE_OBJFILES (pspace, objfile)
  16. ALL_OBJFILE_OSECTIONS (objfile, s)
  17. if (insert_section_p (objfile->obfd, s->the_bfd_section))
  18. alloc_size += 1;
  19.  
  20. /* This happens on detach/attach (e.g. in gdb.base/attach.exp). */
  21. if (alloc_size == 0)
  22. {
  23. *pmap = NULL;
  24. *pmap_size = 0;
  25. return;
  26. }
  27.  
  28. map = xmalloc (alloc_size * sizeof (*map));
  29.  
  30. i = 0;
  31. ALL_PSPACE_OBJFILES (pspace, objfile)
  32. ALL_OBJFILE_OSECTIONS (objfile, s)
  33. if (insert_section_p (objfile->obfd, s->the_bfd_section))
  34. map[i++] = s;
  35.  
  36. qsort (map, alloc_size, sizeof (*map), qsort_cmp);
  37. map_size = filter_debuginfo_sections(map, alloc_size);
  38. map_size = filter_overlapping_sections(map, map_size);
  39.  
  40. if (map_size < alloc_size)
  41. /* Some sections were eliminated. Trim excess space. */
  42. map = xrealloc (map, map_size * sizeof (*map));
  43. else
  44. gdb_assert (alloc_size == map_size);
  45.  
  46. *pmap = map;
  47. *pmap_size = map_size;
  48. }

在这里。有这么一段代码:

  1. map = *pmap;
  2. xfree (map);

可见,coredump是发生在这一行代码。

那么,到底是什么原因导致coredump。

看一下coredump的那段汇编:

  1. 0x000000000060507c <+140>: mov 0x78(%rsp),%rax
  2. 0x0000000000605081 <+145>: mov (%rax),%rdi
  3. 0x0000000000605084 <+148>: callq 0x6bd1b0 <xfree>
  4. => 0x0000000000605089 <+153>: mov 0x40(%rbx),%r8

因为在x86 64-bit,非常多时候为了安全和高速,传參数是用rdi寄存器来传。但在这里。rdi,rax可能会变。所以看一下rsp的内容:

  1. (gdb) x /gx $rsp+0x78
  2. 0x7ffc6acfb3d8: 0x0000000003019e60
  3. (gdb) x /gx 0x0000000003019e60
  4. 0x3019e60: 0x0000000003c6bcf0

PS:用/gx是由于要查看64地址的原因。

能够看到,0x0000000003c6bcf0和

  1. (gdb) maintenance info program-spaces
  2. *** Error in `gdb': free(): invalid pointer: 0x0000000003c6bcf0 ***

的地址是一样的。

那么,先看一下0x0000000003c6bcf0的内容:

  1. (gdb) x /gx 0x0000000003c6bcf0
  2. 0x3c6bcf0: 0x000000000003ca90

有内容。说明地址是有效啊。为什么无法释放呢?

依据最開始的coredump信息来看:

  1. (gdb) maintenance info program-spaces
  2. *** Error in `gdb': free(): invalid pointer: 0x0000000003c6bcf0 ***

它所信息打印的代码是在glibc里malloc.c的_int_free函数里的这一段:

  1. if (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0)
  2. || __builtin_expect (misaligned_chunk (p), 0))
  3. {
  4. errstr = "free(): invalid pointer";

在malloc.c里面,一个内存块的定义是这种:

  1. struct malloc_chunk {
  2.  
  3. INTERNAL_SIZE_T prev_size; /* Size of previous chunk (if free). */
  4. INTERNAL_SIZE_T size; /* Size in bytes, including overhead. */
  5.  
  6. struct malloc_chunk* fd; /* double links -- used only if free. */
  7. struct malloc_chunk* bk;
  8.  
  9. /* Only used for large blocks: pointer to next larger size. */
  10. struct malloc_chunk* fd_nextsize; /* double links -- used only if free. */
  11. struct malloc_chunk* bk_nextsize;
  12. };

当中INTERNAL_SIZE_T的定义例如以下:

  1. #define INTERNAL_SIZE_T size_t

在x86 64位Linux系统里,size_t是8个字节。也就是说,0x0000000003c6bcf0地址向前-16,才是真实内存块地址。

  1. (gdb) x /4gx 0x0000000003c6bcf0-16
  2. 0x3c6bce0: 0x0000000000000000 0x0000000000000000
  3. 0x3c6bcf0: 0x000000000003ca90 0x0000000000000020

可见,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;

};

而唯一初始化这个结构体对象的函数是:

  1. static struct objfile_pspace_info *
  2. get_objfile_pspace_data (struct program_space *pspace)
  3. {
  4. struct objfile_pspace_info *info;
  5.  
  6. info = program_space_data (pspace, objfiles_pspace_data);
  7. if (info == NULL)
  8. {
  9. info = XZALLOC (struct objfile_pspace_info);
  10. set_program_space_data (pspace, objfiles_pspace_data, info);
  11. }
  12.  
  13. return info;
  14. }

中的

  1. 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的更多相关文章

  1. gdb调试运行时的程序小技巧

    使用gdb调试运行时的程序小技巧 标签: 未分类 gdb pstack | 发表时间:2012-10-15 04:32 | 作者:士豪 分享到: 出处:http://rdc.taobao.com/bl ...

  2. 执行Spark运行在yarn上的命令报错 spark-shell --master yarn-client

    1.执行Spark运行在yarn上的命令报错 spark-shell --master yarn-client,错误如下所示: // :: ERROR SparkContext: Error init ...

  3. gdb调试运行程序带参数(调用动态链接库),debug过程记录

    library多线程file1.gdb (运行程序名称) 例如 gdb cbenchmark 2.设置运行参数 set args -c 1 -n 1 -F ./libaliww.so -l 1 3.如 ...

  4. Jenkins服务使用 宿主机的docker、docker-compose (Jenkins 执行sudo命令时出现“sudo: no tty present and no askpass program specified”,以及 docker-compose command not found解决办法)

    若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11681474.html 原因: 本人最近正在尝试CI/CD,所以就使用了 Jen ...

  5. 震惊,当我运行了这条Linux命令后,服务器竟然... (Linux中的删除命令)

    震惊,当我运行了这条Linux命令后,服务器竟然... 0X00 写在前面 大家都听说过删库命令rm -rf /*,但是谁又真正实践过呢?但作为一个程序员,不看看这条命令执行后会发生什么,怎么能甘心呢 ...

  6. 解决Docker运行命令时提示"Got permission denied while trying to connect to the Docker daemon socket"类情况

    Docker安装命令: 解决Docker运行命令时提示"Got permission denied while trying to connect to the Docker daemon ...

  7. 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案

    今天同事问了我一件很怪异的事情,说她的office打不开了,如打开word或excel时,突然出现错误提示错误窗口"向程序发送命令时出现问题",分析原因才知道她安装了 AVG pc ...

  8. excel2003出现“向程序发送命令时出现错误”解决方法

    电脑已经预装了office2010,因为想要学习 <Excel 图标之道>,安装了Excel2003,刚刚安装好,打开出现“向程序发送命令时出现错误”,虽然点击确定就可以用了,可总是觉得不 ...

  9. cmd中用PING命令时,出现'Ping' 不是内部或外部命令 解决方案

    在cmd中用PING命令时,出现'Ping' 不是内部或外部命令,也不是可运行的程序或批处理文件.先了解一下内容:1.可执行文件.命令文件和批处理文件以.exe或者.com或者.bat为扩展名的文件分 ...

随机推荐

  1. [Everyday Mathematics]20150114

    设 $a_0$, $d$ 给定, $a_k=a_0+kd$, $k=0,1,\cdots,n$. 试求如下 $n+1$ 阶行列式的值: $$\bex \sev{\ba{ccccc} a_0&a ...

  2. Android主题theme和风格style总结

    用到了Android的主题和风格,感觉很多地方需要总结和记录下来.其实主题和风格是有很大的作用的,特别是界面要求比较高的客户端. Style:是一个包含一种或者多种格式化属性的集合,我们可以将其用为一 ...

  3. <转>Python 参数知识(变量前加星号的意义)

    csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...

  4. uC/OS-II 移植笔记

    用过51.AVR.Freescale.STM32,但是写程序一直没有用过实时操作系统,一是因为写的项目不大,二是不太想去看手册学东西.现在写的项目也算比较大,因为需要,所以就学一下,这样也不至于每次的 ...

  5. 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇05:角色中弹》

    5.角色中弹 概述: 为了使游戏具有挑战性,大部分游戏设定中,游戏角色都有生命限制.即在游戏中,由于玩家的操控操控不当,导致游戏角色死亡游戏终止.打飞机游戏也不例外,当敌人击中角色的时候,角色宣判死亡 ...

  6. 微信分享,使用js,分享给朋友,朋友圈,QQ微博

    <script> var imgUrl = "http://www.baidu.com/img/bdlogo.gif"; var lineLink = "ht ...

  7. web.py处理文件上传

    #coding=utf8 import web urls = ('/','Home', '/upload', 'Upload') app = web.application(urls, globals ...

  8. 应用数据存储到sdcard上一定要规范,android4.4.2有新规范

    如果你的android设备有内部存储空间,即通常所说的机身存储(这就是指主要外部存储),那么你从外部插入SD卡就是一个二级外部存储设备. 最新的Android 4.4系统中,外置存储卡(SD卡)被称为 ...

  9. bzoj 2190 仪仗队(欧拉函数)

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2245  Solved: 1413[Submit][Statu ...

  10. java数字保留两位小数四舍五入

    import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public c ...