Panic in socreate (Re: override for mpd)
Matthew Dillon
dillon at apollo.backplane.com
Wed Apr 7 22:04:28 PDT 2004
This isn't a kernel compiler optimization bug. It should be relatively
straight forward but I would like to try to get Jeff to look at it
rather then me (at least for the next few days).
And, yes, gdb is unreliable when it comes to register variables, because
gcc may reuse the register for a different variable.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
:Hmm. I built the kernel with
:
: CCVER=gcc2 make NO_CPU_CFLAGS=yes NO_CPU_COPTFLAGS=yes nativekernel
:
:but maybe it doesn't drop -O flag, and the line number may not be correct.
:In the backtrace below, gdb shows td == NULL, but that's probably the result of
:optimization(register or memory location holding td was overwritten by td->td_proc?).
:
:#5 0xc0216468 in trap (frame={tf_fs = 24, tf_es = 16, tf_ds = 16, tf_edi = 0,
: tf_esi = -1071185964, tf_ebp = -942019596, tf_isp = -942019640, tf_ebx = -942019539,
: tf_edx = -1071185964, tf_ecx = -1071185856, tf_eax = -1071182144, tf_trapno = 12,
: tf_err = 0, tf_eip = -1072207400, tf_cs = 8, tf_eflags = 66182, tf_esp = -942019539,
: tf_ss = -968006600}) at /home/source/dragonfly/src/sys/i386/i386/trap.c:550
:#6 0xc01769d8 in socreate (dom=2, aso=0xc64d6440, type=3, proto=47, td=0xc026e2e0)
: at /home/source/dragonfly/src/sys/kern/uipc_socket.c:141
:#7 0xc01a1e87 in ng_ksocket_newhook (node=0xc6529118, hook=0xc0f41ec0,
: name0=0xc650957c "inet/raw/gre")
: at /home/source/dragonfly/src/sys/netgraph/ksocket/ng_ksocket.c:605
:#8 0xc019af96 in ng_add_hook (node=0xc6529118, name=0xc650957c "inet/raw/gre", hookp=0xc7d9ec70)
: at /home/source/dragonfly/src/sys/netgraph/netgraph/ng_base.c:702
:#9 0xc019b2df in ng_mkpeer (node=0xc65290e0, name=0xc650956c "lower",
: name2=0xc650957c "inet/raw/gre", type=0xc650955c "ksocket")
: at /home/source/dragonfly/src/sys/netgraph/netgraph/ng_base.c:919
:#10 0xc019b76a in ng_generic_msg (here=0xc65290e0, msg=0xc6509538, retaddr=0xc0fc5320 "[2]:",
: resp=0xc7d9ed4c) at /home/source/dragonfly/src/sys/netgraph/netgraph/ng_base.c:1233
:#11 0xc019b661 in ng_send_msg (here=0xc6528e78, msg=0xc6509538, address=0xc0f81ab0 "bypass.link0",
: rptr=0xc7d9ed4c) at /home/source/dragonfly/src/sys/netgraph/netgraph/ng_base.c:1182
:#12 0xc01acdd4 in ngc_send (so=0xc7e81d40, flags=0, m=0xc5dbb100, addr=0xc0f81a90, control=0x0,
: td=0xc5d7f5c0) at /home/source/dragonfly/src/sys/netgraph/socket/ng_socket.c:243
:#13 0xc0176897 in netmsg_pru_dispatcher (msg=0xc8554ac4)
: at /home/source/dragonfly/src/sys/kern/uipc_msg.c:570
:#14 0xc0196d63 in netmsg_service_loop (arg=0x0) at /home/source/dragonfly/src/sys/net/netisr.c:87
:(kgdb) fram 6
:#6 0xc01769d8 in socreate (dom=2, aso=0xc64d6440, type=3, proto=47, td=0xc026e2e0)
: at /home/source/dragonfly/src/sys/kern/uipc_socket.c:141
:141 if (prp == 0 || prp->pr_usrreqs->pru_attach == 0)
:(kgdb) list
:136 if (proto)
:137 prp = pffindproto(dom, proto, type);
:138 else
:139 prp = pffindtype(dom, type);
:140
:141 if (prp == 0 || prp->pr_usrreqs->pru_attach == 0)
:142 return (EPROTONOSUPPORT);
:143
:144 if (p->p_ucred->cr_prison && jail_socket_unixiproute_only &&
:145 prp->pr_domain->dom_family != PF_LOCAL &&
:(kgdb) print *prp
:$1 = {pr_type = 3, pr_domain = 0xc0270040, pr_protocol = 47, pr_flags = 67,
: pr_input = 0xc01b3294 <encap4_input>, pr_output = 0, pr_ctlinput = 0,
: pr_ctloutput = 0xc01b86f8 <rip_ctloutput>, pr_mport = 0xc0196eb8 <cpu0_soport>,
: pr_init = 0xc01b327c <encap_init>, pr_fasttimo = 0, pr_slowtimo = 0, pr_drain = 0,
: pr_usrreqs = 0xc0270ec0}
:(kgdb) print prp->pr_usrreqs->pru_attach
:$2 = (int (*)()) 0xc01b893c <rip_attach>
:(kgdb) print p
:$3 = (struct proc *) 0x0
:(kgdb) print td
:$4 = (struct thread *) 0x0
:(kgdb) print *(struct thread *)0xc026e2e0
:$5 = {td_threadq = {tqe_next = 0x0, tqe_prev = 0xff800084}, td_allq = {tqe_next = 0xc028a1e0,
: tqe_prev = 0xc02820e8}, td_msgport = {mp_msgq = {tqh_first = 0x0, tqh_last = 0xc026e2f0},
: mp_flags = 0, mp_refs = 0, mp_td = 0xc026e2e0, mp_putport = 0xc0196d04 <netmsg_put_port>,
: mp_waitport = 0xc01582e8 <lwkt_default_waitport>,
: mp_replyport = 0xc015811c <lwkt_default_replyport>,
: mp_abortport = 0xc01582e0 <lwkt_default_abortport>}, td_proc = 0x0, td_pcb = 0xc7d9eda0,
: td_gd = 0xff800000, td_wmesg = 0x0, td_wchan = 0x0, td_pri = 12, td_flags = 3075, td_gen = 0,
: td_preemptable = 0, td_release = 0, td_info = {intdata = 0x0}, td_kstack = 0xc7d9c000 "",
: td_sp = 0xc7d9e9ec "?8_", td_switch = 0xc0215764 <cpu_lwkt_switch>, td_wait = 0x0,
: td_uticks = 0, td_sticks = 187509, td_iticks = 0, td_locks = -15, td_refs = 0,
: td_nest_count = 0, td_unused001 = 0, td_unused002 = 0, td_comm = "netisr_cpu 0\000\000\000\000",
: td_preempted = 0x0, td_caps = 0x0, td_toks = 0x0, td_mach = {mtd_cpl = 4294967295}}
:(kgdb)
:Script done on Thu Apr 8 13:32:45 2004
More information about the Bugs
mailing list