看板 DFBSD_bugs 關於我們 聯絡資訊
:> tcp_disconnect(0,deda6b04,ff808000,dbc8cd78,c01aa6f7) at :> tcp_disconnect+0x8 :> tcp_usr_detach(db0d48a0) at tcp_usr_detach+0x1e :> netmsg_pru_detach(deda6b04) at netmsg_pru_detach+0xf :> tcpmsg_service_loop(0,0,0,0,0) at tcpmsg_service_loop+0x26 :> lwkt_exit() at lwkt_exit :> db> reset : :It'a already happened a couple more times, now. At least one of those :times, I had closed an ssh session just before the lockup occurred. The :most recent time, the entire machien locked up before the debug prompt :showed up, leaving me with: :.. It must be a remote close race with a local close. Try this patch. Jeff I *think* the situation I am correcting here can happen but I'm not sure, could you take a look at it? p.s. keep the bug reports coming! Your SMP setup/use appears to be catching issues that ours are not. -Matt Index: netinet/tcp_usrreq.c =================================================================== RCS file: /cvs/src/sys/netinet/tcp_usrreq.c,v retrieving revision 1.26 diff -u -r1.26 tcp_usrreq.c --- netinet/tcp_usrreq.c 11 Aug 2004 02:36:22 -0000 1.26 +++ netinet/tcp_usrreq.c 26 Oct 2004 19:44:25 -0000 @@ -215,15 +215,15 @@ struct tcpcb *tp; TCPDEBUG0; - if (inp == 0) { + if (inp == NULL) { splx(s); return EINVAL; /* XXX */ } - tp = intotcpcb(inp); - TCPDEBUG1(); - tp = tcp_disconnect(tp); - - TCPDEBUG2(PRU_DETACH); + if ((tp = intotcpcb(inp)) != NULL) { + TCPDEBUG1(); + tp = tcp_disconnect(tp); + TCPDEBUG2(PRU_DETACH); + } splx(s); return error; }