Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[no subject]
Last week I wrote about a crash I'd had on my amd64 5.99.23 system:
Overnight, while my machine was idle, I experienced the following
crash.
At first blush I might suspect something related to the recent changes
WRT socket credentials?
I have the complete 8GB core dump. This was from sources updated via
anonCVS on 2010-01-02 at 19:28:14 UTC.
Any clues?
(gdb) target kvm netbsd.4.core
#0 0xffffffff801fca58 in cpu_reboot (howto=260, bootstr=<value
optimized out>)
at /build/netbsd-local/src/sys/arch/amd64/amd64/machdep.c:682
682 dumpsys();
(gdb) bt
#0 0xffffffff801fca58 in cpu_reboot (howto=260, bootstr=<value
optimized out>)
at /build/netbsd-local/src/sys/arch/amd64/amd64/machdep.c:682
#1 0xffffffff80261c44 in panic (
fmt=0xffffffff803ad990 <Address 0xffffffff803ad990 out of bounds>)
at /build/netbsd-local/src/sys/kern/subr_prf.c:299
#2 0xffffffff80341275 in __kernassert (t=0x0, f=0x0, l=0, e=0x0)
at /build/netbsd-local/src/sys/lib/libkern/__assert.c:50
#3 0xffffffff801c469d in kauth_cred_free (cred=0xffff8000587cacc0)
at /build/netbsd-local/src/sys/kern/kern_auth.c:194
<snip>
(gdb) fr 3
#3 0xffffffff801c469d in kauth_cred_free (cred=0xffff8000587cacc0)
at /build/netbsd-local/src/sys/kern/kern_auth.c:194
194 KASSERT(cred->cr_refcnt > 0);
(gdb) print *cred
$1 = {cr_refcnt = 0,
cr_pad = "\000\000\000\000\000|X\000\200|X\000\200", '\0' <repeats 39
times>, cr_uid = 0, cr_euid = 0, cr_svuid = 0, cr_gid = 0, cr_egid = 0,
cr_svgid = 0, cr_ngroups = 1, cr_groups = {0,
4294967295 <repeats 15 times>}, cr_sd = {specdataref_container = 0x0,
specdataref_lock = {u = {mtxa_owner = 18446744073709551600}}}}
While the crash was not easily reproducible, it did happen a couple more
times over the next few days.
Elad suggested the following patch to remove the explicit call to
kauth_cred_free() since it gets called later by closef() which results
in the failed assertion.
Index: uipc_syscalls.c
===================================================================
RCS file: /cvsroot/src/sys/kern/uipc_syscalls.c,v
retrieving revision 1.139
diff -u -p -r1.139 uipc_syscalls.c
--- uipc_syscalls.c 29 Dec 2009 04:23:43 -0000 1.139
+++ uipc_syscalls.c 9 Jan 2010 22:31:25 -0000
@@ -233,7 +233,6 @@ do_sys_accept(struct lwp *l, int sock, s
sounlock(so);
if (error) {
/* an error occurred, free the file descriptor and mbuf
*/
- kauth_cred_free(so2->so_cred);
m_freem(nam);
mutex_enter(&fp2->f_lock);
fp2->f_count++;
quicky:kern {309}
It has now been 4 days since implementing this patch, and the machine
has not crashed in that time.
It's way out of my area of expertise, but perhaps someone more familiar
with this part of the kernel might see fit to commit this change?
-------------------------------------------------------------------------
| Paul Goyette | PGP DSS Key fingerprint: | E-mail addresses: |
| Customer Service | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com |
| Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net |
| Kernel Developer | | pgoyette at netbsd.org |
-------------------------------------------------------------------------
Home |
Main Index |
Thread Index |
Old Index