Debugging the ZDB debugger.

Zaphod Beeblebrox zbeeble at gmail.com
Fri Nov 21 06:25:29 UTC 2014


Ok... that advice got me somewhere... now my stack is:

(gdb) bt
#0  0x00000000004098a9 in dump_dir (os=0x80d302000)
    at
/usr/src/cddl/usr.sbin/zdb/../../../cddl/contrib/opensolaris/cmd/zdb/zdb.c:1464
#1  0x0000000000406222 in main (argc=0, argv=<value optimized out>)
    at
/usr/src/cddl/usr.sbin/zdb/../../../cddl/contrib/opensolaris/cmd/zdb/zdb.c:3604

and we got here on a segmentation fault.  Now ... I'm a little confused:

(gdb) frame 0
#0  0x00000000004098a9 in dump_dir (os=0x80d302000)
    at
/usr/src/cddl/usr.sbin/zdb/../../../cddl/contrib/opensolaris/cmd/zdb/zdb.c:1464
1464            zdb_nicenum(dl->dl_phys->dl_used, bytes);
(gdb) p dl
No symbol "dl" in current context.
(gdb) p *dl
No symbol "dl" in current context.

I thought for a second that I was using gdb wrong (it's been awhile), but:

(gdb) frame 1
#1  0x0000000000406222 in main (argc=0, argv=<value optimized out>)
    at
/usr/src/cddl/usr.sbin/zdb/../../../cddl/contrib/opensolaris/cmd/zdb/zdb.c:3604
3604                            dump_dir(os);
(gdb) p os
$3 = (objset_t *) 0x80d302000

... my first thought was "is the stack trashed"? ... but shouldn't gdb know
what 'dl' is regardless of the process state?

Then I realized that line 1464 isn't in dump_dir() ... it's in dump_dead()

help?


More information about the freebsd-hackers mailing list