Date: Tue, 21 Jul 2009 17:59:45 +0400 From: Kamigishi Rei <spambox@haruhiism.net> To: John Baldwin <jhb@freebsd.org> Cc: Lawrence Stewart <lstewart@freebsd.org>, freebsd-current@freebsd.org Subject: Re: [follow-up] Fatal trap 12 in r195146+ in netisr_queue_internal Message-ID: <4A65C9D1.6080902@haruhiism.net> In-Reply-To: <200907210857.01690.jhb@freebsd.org> References: <4A659F98.2060007@haruhiism.net> <200907210857.01690.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin wrote: > On Tuesday 21 July 2009 6:59:36 am Kamigishi Rei wrote: > >> Everything goes fine until - under heavy load on an interface, usually - >> we reach a point where: >> 1. m->mtx_lock is 4 (== MTX_UNOWNED). >> 2. v is assigned mtx_lock's value (4 == MTX_UNOWNED). >> 3. condition (v == MTX_UNOWNED) fails. >> > This will not happen. If you look at the disassembly you will see this can't > happen either. Do you have a crashdump from a crash? > I've got about 40 crash dumps on unmodded (without debug code) kernel, and 3 or 4 with debug stuff (KASSERTs added by me). I can reproduce this on my test server (Core2 Duo 3.0, 4GB RAM), on my home PC (Core2 Quad 2.5), and in VMWare with 2 CPUs in VT-x mode on my laptop. It can't be reproduced on single-CPU single-core (including hyperthreaded) systems. Quoting, (kgdb) fr 6 #6 0xffffffff80586255 in _mtx_lock_sleep (m=0xffffffff80e60823, tid=18446742977255365296, opts=Variable "opts" is not available. ) at /usr/src/sys/kern/kern_mutex.c:407 407 owner = (struct thread *)(v & ~MTX_FLAGMASK); (kgdb) print m->mtx_lock $14 = 4 (kgdb) print v $15 = 21946368 -- Kamigishi Rei KREI-RIPE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A65C9D1.6080902>