11.0-CURRENT r290039 privileged instruction fault while in kernel mode

Don Lewis truckman at FreeBSD.org
Wed Oct 28 21:12:43 UTC 2015


On 28 Oct, Konstantin Belousov wrote:
> On Wed, Oct 28, 2015 at 10:16:12AM -0700, Don Lewis wrote:
>> On 28 Oct, Konstantin Belousov wrote:
>> > On Tue, Oct 27, 2015 at 04:09:28PM -0700, Don Lewis wrote:
>> >> I just got this crash while running poudriere on a freshly upgraded
>> >> 11.0-CURRENT machine.  The instruction pointer value looks pretty
>> >> strange.
>> >> 
>> >> 
>> >> FreeBSD zipper.catspoiler.org 11.0-CURRENT FreeBSD 11.0-CURRENT #30 r290039: Tue Oct 27 00:08:00 PDT 2015     dl at zipper.catspoiler.org:/usr/obj/usr/src/sys/GENERIC  amd64
>> >> 
>> >> panic: 
>> >> 
>> >> GNU gdb 6.1.1 [FreeBSD]
>> >> Copyright 2004 Free Software Foundation, Inc.
>> >> GDB is free software, covered by the GNU General Public License, and you are
>> >> welcome to change it and/or distribute copies of it under certain conditions.
>> >> Type "show copying" to see the conditions.
>> >> There is absolutely no warranty for GDB.  Type "show warranty" for details.
>> >> This GDB was configured as "amd64-marcel-freebsd"...
>> >> 
>> >> Unread portion of the kernel message buffer:
>> >> 
>> >> 
>> >> Fatal trap 1: privileged instruction fault while in kernel mode
>> >> cpuid = 4; apic id = 14
>> >> instruction pointer	= 0x20:0xffffffff8240fef5
>> > What is the instruction at the reported address ?
>> 
>> (kgdb) disassemble/r
>> Dump of assembler code for function cpu_lock:
>>    0xffffffff8240fef0 <+0>:	25 bb 40 82 ff	and    $0xff8240bb,%eax
>> => 0xffffffff8240fef5 <+5>:	ff	(bad)  
>>    0xffffffff8240fef6 <+6>:	ff	(bad)  
>>    0xffffffff8240fef7 <+7>:	ff 00	incl   (%rax)
>>    0xffffffff8240fef9 <+9>:	00 71 02	add    %dh,0x2(%rcx)
>>    0xffffffff8240fefc <+12>:	00 00	add    %al,(%rax)
>>    0xffffffff8240fefe <+14>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff00 <+16>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff02 <+18>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff04 <+20>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff06 <+22>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff08 <+24>:	01 00	add    %eax,(%rax)
>>    0xffffffff8240ff0a <+26>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff0c <+28>:	00 00	add    %al,(%rax)
>>    0xffffffff8240ff0e <+30>:	00 00	add    %al,(%rax)
>> End of assembler dump.
> 
> Oh, I see. cpu_lock is mutex, dump above demonstrates is cleanly.
> Most likely, something overwrote some pointer to a function with
> the address.
> 
> You probably have to bisect.

The could be difficult.  Whatever this is, it seems to be very hard to
trigger.  The machine was up and doing a lot of poudriere package
building for about a day before it crashed.  It's now got close to a day
of uptime again, mostly building packages, without another crash.  The
previous kernel was r289123.




More information about the freebsd-current mailing list