TritonDataCenter / mdb_v8

postmortem debugging for Node.js and other V8-based programs
Mozilla Public License 2.0
240 stars 18 forks source link

Segfault while using `findjsobjects -r' #90

Open melloc opened 7 years ago

melloc commented 7 years ago

While looking through a node core, I had mdb segfault on me:

> 8093a3d1::findjsobjects -r
*** mdb: received signal SEGV at:
[1] libc.so.1`strlen+0xb()
[2] mdb`mdb_iob_vprintf+0x22()
[3] mdb`mdb_printf+0x18()
[4] v8.so`dcmd_findjsobjects+0x58c()
[5] mdb`dcmd_invoke+0x40()
[6] mdb`mdb_call_idcmd+0x128()
[7] mdb`mdb_call+0x325()
[8] mdb`yyparse+0x41b()
[9] mdb`mdb_run+0x26d()
[10] mdb`main+0x154c()
[11] mdb`_start+0x83()
mdb: (c)ore dump, (q)uit, (r)ecover, or (s)top for debugger [cqrs]?
mdb: attempting to dump core ...
Segmentation Fault (core dumped)

Looking at the stack of the core file, it looks like strlen was called with NULL:

> ::stack
libc.so.1`strlen+0xb(8168f88, fc529103, 80466a8, 0)
mdb_iob_vprintf+0x22(8168f88, fc529103, 80466e4, fc539f20)
mdb_printf+0x18(fc529103, 31643361, 33393038, 0)
v8.so`dcmd_findjsobjects+0x58c(8093a3d1, 1, 1, a3d9700, 0, 1)
dcmd_invoke+0x40(8cce100, 8093a3d1, 1, 1, a3d9700, 0)
mdb_call_idcmd+0x128(8cce100, 8093a3d1, 0, 1, 0, 1)
mdb_call+0x325(8093a3d1, 0, 1, 0, 1, 80469e8)
yyparse+0x41b(feee2000, 80469c0, 80469a8, 0, fed72a40, 8160ee0)
mdb_run+0x26d(0, 804786c, 0, 0, 0, 0)
main+0x154c(804771c, feeef348, 8047750, 8063f97, 2, 804775c)
_start+0x83(2, 8047868, 804786c, 0, 8047877, 8047883) 

I haven't dug into it much further, but the node core I was debugging is in thoth as 0c7f4666bd9c5f9da44219692ca4c61a, and the mdb core is in thoth as 5ad08f03852899633c96364dbebe6155.