Re: kgdb crashing on a vmcore with dumptid = 0
On 5/4/18 10:49 PM, Eitan Adler wrote: > gdb$ bt > #0 thr_kill () at thr_kill.S:3 > #1 0x0008035046b4 in __raise (s=0x6) at /usr/src/lib/libc/gen/raise.c:54 > #2 0x000803504629 in abort () at /usr/src/lib/libc/stdlib/abort.c:67 > #3 0x00c805c6 in dump_core () at utils.c:284 > #4 0x00c81920 in internal_vproblem (problem=0x24bd890 > , file=0x15c560e "inferior.c", line=0x135, > fmt=0x15780ac "%s: Assertion > `%s' failed.", ap=0x7fffb9e0) at utils.c:493 > #5 0x00c806d8 in internal_verror (file=0x15c560e > "inferior.c", line=0x135, fmt=0x15780ac "%s: Assertion `%s' failed.", > ap=0x7fffb9e0) at utils.c: > 518 > #6 0x008363a8 in internal_error (file=0x15c560e "inferior.c", > line=0x135, fmt=0x15780ac "%s: Assertion `%s' failed.") at > common/errors.c:55 > #7 0x00a8397e in find_inferior_pid (pid=0x0) at inferior.c:309 > #8 0x00a83d54 in find_inferior_ptid (ptid=...) at inferior.c:323 > #9 0x00c10049 in default_thread_architecture (ops=0x2702d90 > , ptid=...) at target.c:3131 > #10 0x00bfec2b in delegate_thread_architecture (self=0x2702d90 > , arg1=...) at ./target-delegates.c:2525 > #11 0x00bfec2b in delegate_thread_architecture (self=0x26eedd0 > , arg1=...) at ./target-delegates.c:2525 > #12 0x00bfec2b in delegate_thread_architecture (self=0x26ec280 > , arg1=...) at ./target-delegates.c:2525 > #13 0x00b53cba in get_thread_regcache (ptid=...) at regcache.c:439 > #14 0x00b53d5e in get_current_regcache () at regcache.c:448 > #15 0x00713077 in kgdb_trgt_open (arg=0x80410900e "vmcore.2", > from_tty=0x1) at fbsd-kvm.c:335 > #16 0x00bf3980 in open_target (args=0x80410900e "vmcore.2", > from_tty=0x1, command=0x8041c8f40) at target.c:356 > #17 0x00722c35 in do_sfunc (c=0x8041c8f40, args=0x80410900e > "vmcore.2", from_tty=0x1) at cli/cli-decode.c:122 > #18 0x00726b5a in cmd_func (cmd=0x8041c8f40, args=0x80410900e > "vmcore.2", from_tty=0x1) at cli/cli-decode.c:1886 > #19 0x00c450c7 in execute_command (p=0x804109015 "2", > from_tty=0x1) at top.c:630 > #20 0x00acd4a8 in catch_command_errors (command=0xc445f0 > , arg=0x804109000 "target vmcore > vmcore.2", from_tty=0x1) > at main.c:378 > #21 0x00accdf2 in captured_main_1 (context=0x7fffcfe8) at > main.c:1124 > #22 0x00aca62d in captured_main (data=0x7fffcfe8) at main.c:1146 > #23 0x00aca508 in gdb_main (args=0x7fffcfe8) at main.c:1172 > #24 0x0050bd5b in main (argc=0x3, argv=0x7fffd558) at > kgdb-main.c:410 > > gdb$ up 7 > #7 0x00a8397e in find_inferior_pid (pid=0x0) at inferior.c:309 > 309 gdb_assert (pid != 0); > gdb$ frame > Stack level 7, frame at 0x7fffba50: > rip = 0xa8397e in find_inferior_pid (inferior.c:309); saved rip = 0xa83d54 > called by frame at 0x7fffba60, caller of frame at 0x7fffba20 > source language c++. > Arglist at 0x7fffba40, args: pid=0x0 > Locals at 0x7fffba40, Previous frame's sp is 0x7fffba50 > Saved registers: > rbp at 0x7fffba40, rip at 0x7fffba48 > pid = 0x0 > inf = 0x8415d5 > > > gdb$ list > 304 struct inferior *inf; > 305 > 306 /* Looking for inferior pid == 0 is always wrong, and indicative of > 307 a bug somewhere else. There may be more than one with pid == 0, > 308 for instance. */ > 309 gdb_assert (pid != 0); > 310 > 311 for (inf = inferior_list; inf; inf = inf->next) > 312 if (inf->pid == pid) > 313 return inf; > > > gdb$ p pid > $1 = 0x0 > > > gdb$ p ptid > $2 = { > m_pid = 0x0, > m_lwp = 0x0, > m_tid = 0x0 > } > > gdb$ up > #9 0x00c10049 in default_thread_architecture (ops=0x2702d90 > , ptid=...) at target.c:3131 > 3131 inferior *inf = find_inferior_ptid (ptid); > gdb$ list > 3126} > 3127 > 3128static struct gdbarch * > 3129default_thread_architecture (struct target_ops *ops, ptid_t ptid) > 3130{ > 3131 inferior *inf = find_inferior_ptid (ptid); > 3132 gdb_assert (inf != NULL); > 3133 return inf->gdbarch; > 3134} > 3135 > gdb$ p ops > $4 = (target_ops *) 0x2702d90 > > gdb$ up > #14 0x00b53d5e in get_current_regcache () at regcache.c:448 > 448 return get_thread_regcache (inferior_ptid); > gdb$ list > 443 } > 444 > 445 struct regcache * > 446 get_current_regcache (void) > 447 { > 448 return get_thread_regcache (inferior_ptid); > 449 } > 450 > 451 /* See common/common-regcache.h. */ > 452 > gdb$ p inferior_ptid > $13 = { > m_pid = 0x0, > m_lwp = 0x0, > m_tid = 0x0 > } > > > gdb$ up > #15 0x00713077 in kgdb_trgt_open (arg=0x80410900e "vmcore.2", > from_tty=0x1) at fbsd-kvm.c:335 > 335 target_fetch_registers (get_current_regcache (), -1); > gdb$ list > 330 kt = kgdb_thr_next(kt); > 331 } > 332 if (curkthr != 0) > 333
kgdb crashing on a vmcore with dumptid = 0
gdb$ bt #0 thr_kill () at thr_kill.S:3 #1 0x0008035046b4 in __raise (s=0x6) at /usr/src/lib/libc/gen/raise.c:54 #2 0x000803504629 in abort () at /usr/src/lib/libc/stdlib/abort.c:67 #3 0x00c805c6 in dump_core () at utils.c:284 #4 0x00c81920 in internal_vproblem (problem=0x24bd890 , file=0x15c560e "inferior.c", line=0x135, fmt=0x15780ac "%s: Assertion `%s' failed.", ap=0x7fffb9e0) at utils.c:493 #5 0x00c806d8 in internal_verror (file=0x15c560e "inferior.c", line=0x135, fmt=0x15780ac "%s: Assertion `%s' failed.", ap=0x7fffb9e0) at utils.c: 518 #6 0x008363a8 in internal_error (file=0x15c560e "inferior.c", line=0x135, fmt=0x15780ac "%s: Assertion `%s' failed.") at common/errors.c:55 #7 0x00a8397e in find_inferior_pid (pid=0x0) at inferior.c:309 #8 0x00a83d54 in find_inferior_ptid (ptid=...) at inferior.c:323 #9 0x00c10049 in default_thread_architecture (ops=0x2702d90 , ptid=...) at target.c:3131 #10 0x00bfec2b in delegate_thread_architecture (self=0x2702d90 , arg1=...) at ./target-delegates.c:2525 #11 0x00bfec2b in delegate_thread_architecture (self=0x26eedd0 , arg1=...) at ./target-delegates.c:2525 #12 0x00bfec2b in delegate_thread_architecture (self=0x26ec280 , arg1=...) at ./target-delegates.c:2525 #13 0x00b53cba in get_thread_regcache (ptid=...) at regcache.c:439 #14 0x00b53d5e in get_current_regcache () at regcache.c:448 #15 0x00713077 in kgdb_trgt_open (arg=0x80410900e "vmcore.2", from_tty=0x1) at fbsd-kvm.c:335 #16 0x00bf3980 in open_target (args=0x80410900e "vmcore.2", from_tty=0x1, command=0x8041c8f40) at target.c:356 #17 0x00722c35 in do_sfunc (c=0x8041c8f40, args=0x80410900e "vmcore.2", from_tty=0x1) at cli/cli-decode.c:122 #18 0x00726b5a in cmd_func (cmd=0x8041c8f40, args=0x80410900e "vmcore.2", from_tty=0x1) at cli/cli-decode.c:1886 #19 0x00c450c7 in execute_command (p=0x804109015 "2", from_tty=0x1) at top.c:630 #20 0x00acd4a8 in catch_command_errors (command=0xc445f0, arg=0x804109000 "target vmcore vmcore.2", from_tty=0x1) at main.c:378 #21 0x00accdf2 in captured_main_1 (context=0x7fffcfe8) at main.c:1124 #22 0x00aca62d in captured_main (data=0x7fffcfe8) at main.c:1146 #23 0x00aca508 in gdb_main (args=0x7fffcfe8) at main.c:1172 #24 0x0050bd5b in main (argc=0x3, argv=0x7fffd558) at kgdb-main.c:410 gdb$ up 7 #7 0x00a8397e in find_inferior_pid (pid=0x0) at inferior.c:309 309 gdb_assert (pid != 0); gdb$ frame Stack level 7, frame at 0x7fffba50: rip = 0xa8397e in find_inferior_pid (inferior.c:309); saved rip = 0xa83d54 called by frame at 0x7fffba60, caller of frame at 0x7fffba20 source language c++. Arglist at 0x7fffba40, args: pid=0x0 Locals at 0x7fffba40, Previous frame's sp is 0x7fffba50 Saved registers: rbp at 0x7fffba40, rip at 0x7fffba48 pid = 0x0 inf = 0x8415d5 gdb$ list 304 struct inferior *inf; 305 306 /* Looking for inferior pid == 0 is always wrong, and indicative of 307 a bug somewhere else. There may be more than one with pid == 0, 308 for instance. */ 309 gdb_assert (pid != 0); 310 311 for (inf = inferior_list; inf; inf = inf->next) 312 if (inf->pid == pid) 313 return inf; gdb$ p pid $1 = 0x0 gdb$ p ptid $2 = { m_pid = 0x0, m_lwp = 0x0, m_tid = 0x0 } gdb$ up #9 0x00c10049 in default_thread_architecture (ops=0x2702d90 , ptid=...) at target.c:3131 3131 inferior *inf = find_inferior_ptid (ptid); gdb$ list 3126} 3127 3128static struct gdbarch * 3129default_thread_architecture (struct target_ops *ops, ptid_t ptid) 3130{ 3131 inferior *inf = find_inferior_ptid (ptid); 3132 gdb_assert (inf != NULL); 3133 return inf->gdbarch; 3134} 3135 gdb$ p ops $4 = (target_ops *) 0x2702d90 gdb$ up #14 0x00b53d5e in get_current_regcache () at regcache.c:448 448 return get_thread_regcache (inferior_ptid); gdb$ list 443 } 444 445 struct regcache * 446 get_current_regcache (void) 447 { 448 return get_thread_regcache (inferior_ptid); 449 } 450 451 /* See common/common-regcache.h. */ 452 gdb$ p inferior_ptid $13 = { m_pid = 0x0, m_lwp = 0x0, m_tid = 0x0 } gdb$ up #15 0x00713077 in kgdb_trgt_open (arg=0x80410900e "vmcore.2", from_tty=0x1) at fbsd-kvm.c:335 335 target_fetch_registers (get_current_regcache (), -1); gdb$ list 330 kt = kgdb_thr_next(kt); 331 } 332 if (curkthr != 0) 333 inferior_ptid = fbsd_vmcore_ptid(curkthr->tid); 334 335 target_fetch_registers (get_current_regcache (), -1); 336 337 reinit_frame_cache (); 338 print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC,