Re: kgdb crashing on a vmcore with dumptid = 0

2018-06-15 Thread John Baldwin
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

2018-05-04 Thread Eitan Adler
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,