Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Jul 2002 18:55:53 -0700 (PDT)
From:      Don Lewis <dl-freebsd@catspoiler.org>
To:        jhay@icomtek.csir.co.za
Cc:        hsu@FreeBSD.org, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/netinet udp_usrreq.c
Message-ID:  <200207140156.g6E1trwr019957@gw.catspoiler.org>
In-Reply-To: <200207131038.g6DAcOf99141@zibbi.icomtek.csir.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
On 13 Jul, John Hay wrote:


>> > I can only assume that he didn't have enough:
>> > 
>> > ../../../vm/uma_core.c:1332: could sleep with "inp" locked from ../../../netinet/tcp_usrreq.c:536
>> > 
>> > messages in his dmesg log.
>> 
>> I checked in a fix for that violation last night.  SYSCTL_OUT() can
>> block, so calling it with a lock held will cause this error.  This
>> particular case was easy to fix by moving the call to SYSCTL_OUT()
>> outside the locked region.
> 
> I still get one like that when connecting to the box using ssh over ipv6.
> Actually any ipv6 tcp connection to the box wil print that. Just one
> message per connection.

That's a different problem in the IPv6 code.  Calls are being done into
this code even though it expects to do its own locking.  Unfortunately
it looks like the IPv6 code needs some more work done because it is
still relying on splnet().

The stack trace for this problem is:

/usr/src/sys/vm/uma_core.c:1332: could sleep with "inp" locked from /usr/src/sys/netinet/tcp_usrreq.c:536
Debugger("witness_sleep")
Stopped at      Debugger+0x45:  xchgl   %ebx,in_Debugger.0
db> tr
Debugger(c0405e40) at Debugger+0x45
witness_sleep(1,0,c0421271,534) at witness_sleep+0xfb
uma_zalloc_arg(c083ac80,0,0) at uma_zalloc_arg+0x3f
malloc(1c,c04664c0,0,c67617d8,df259c60) at malloc+0x68
in6_setpeeraddr(c673f640,df259cb4,c67617d8,c673f640,df259c80) at in6_setpeeraddr+0x12
in6_mapped_peeraddr(c673f640,df259cb4) at in6_mapped_peeraddr+0x4b
tcp6_usr_accept(c673f640,df259cb4) at tcp6_usr_accept+0xb5
soaccept(c673f640,df259cb4,c04b3c58,0,c04089e0) at soaccept+0x2e
accept1(c22b1480,df259d14,0,df259d40,c03a9389) at accept1+0x2c6
accept(c22b1480,df259d14,3,14,292) at accept+0x10
syscall(2f,2f,2f,8073190,0) at syscall+0x239
syscall_with_err_pushed() at syscall_with_err_pushed+0x1b
--- syscall (30, FreeBSD ELF, accept), eip = 0x481fa26b, esp = 0xbfbff4dc, ebp = 0xbfbffda0 ---



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207140156.g6E1trwr019957>