Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Jan 2021 12:32:54 +0100
From:      Jakob Alvermark <jakob@alvermark.net>
To:        Hans Petter Selasky <hps@selasky.org>, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: Panic after updating
Message-ID:  <af76d2fc-cc6f-4ca4-c293-ae1ff8f2a51d@alvermark.net>
In-Reply-To: <60e4db60-c816-463e-0e08-a33c674ad4da@alvermark.net>
References:  <87512669-f0b9-eb2f-1103-170a29384ea8@alvermark.net> <ad969a6e-4029-b85c-f304-1198b05ad725@selasky.org> <34a9dafd-9690-1b33-abf8-017ad31cf2ab@alvermark.net> <e407413b-730a-d60d-f50d-0b6f490da74a@selasky.org> <60e4db60-c816-463e-0e08-a33c674ad4da@alvermark.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On 1/12/21 9:33 AM, Jakob Alvermark wrote:
>
> On 1/11/21 7:08 PM, Hans Petter Selasky wrote:
>> On 1/11/21 5:24 PM, Jakob Alvermark wrote:
>>>
>>> On 1/11/21 1:14 PM, Hans Petter Selasky wrote:
>>>> On 1/11/21 11:12 AM, Jakob Alvermark wrote:
>>>>>
>>>>> Updated my Acer laptop from r367734 to main-c255666-g1790f5e654f
>>>>>
>>>>>
>>>>> Rebooting with the newly build kernel i get this panic.
>>>>>
>>>>>
>>>>> Fatal    trap 12: page fault while in kernel mode
>>>>>
>>>>> cpuid    = 1; apic id = 02
>>>>> fault    virtual address     = 0x1030000
>>>>> fault    code                = supervisor read data,
>>>>>
>>>>> instruction    pointer       = 0x20:0xffffffff809e5265
>>>>> stack    pointer             = 0x28:0xffffffff8281db70
>>>>> frame    pointer             = 0x28:0xffffffff8281db70
>>>>> code    segment              = base 0x0, limit 0xfffff, type 0x1b
>>>>> =    DPL 0, pres 1, long 1, def32 0, gran 1
>>>>> processor    eflags  = interrupt enabled, resume, IOPL = 0
>>>>> current    process           = 12 (irq88: xhci0)
>>>>> trap    number               = 12
>>>>> panic:    page fault
>>>>> cpuid    = 1
>>>>> time    = 2
>>>>> KDB:    stack backtrace:
>>>>> db_trace_self_wrapper()    at db_trace_self_wrapper+0x2b/frame 
>>>>> 0xffffffff8281d820
>>>>> vpanic()    at vpanic+0x181/frame 0xffffffff8281d870
>>>>> panic()    at panic+0x43/frame 0xffffffff8281d8d0
>>>>> trap_fatal()    at trap_fatal+0x387/frame 0xffffffff8281d930
>>>>> trap_pfault()    at trap_pfault+0x4f/frame 0xffffffff8281d990
>>>>> trap()    at trap+0x280/frame 0xffffffff8281daa0
>>>>> calltrap()    at calltrap+0x8/frame 0xffffffff8281daa0
>>>>> ---    trap 0xc, rip = 0xffffffff809e5265, rsp = 
>>>>> 0xffffffff8281db70, rbp = 0xffffffff8281db70 ---
>>>>> usbd_get_page()    at usbd_get_page+0x65/frame 0xffffffff8281db70
>>>>> xhci_interrupt_poll()    at xhci_interrupt_poll+0x29/frame 
>>>>> 0xffffffff8281dc20
>>>>> xhci_interrupt()    at xhci_interrupt+0x11a/frame 0xffffffff8281dc60
>>>>> ithread_loop()    at ithread_loop+0x24f/frame 0xffffffff8281dcf0
>>>>> fork_exit()    at fork_exit+0x7e/frame 0xffffffff8281dd30
>>>>> fork_trampoline()    at fork_trampoline+0xe/frame 0xffffffff8281dd30
>>>>> ---    trap 0, rip = 0, rsp = 0, rbp = 0 ---
>>>>> KDB:    enter: panic
>>>>>
>>>>>
>>>>> Any help appreciated.
>>>>
>>>> Hi,
>>>>
>>>> If you could bi-sect that panic, would be great.
>>>>
>>>> Else install gdb from ports and run:
>>>>
>>>> kgdb101
>>>>
>>>> info line *(usbd_get_page+0x65)
>>>>
>>>>
>>>
>>> Having just learned how to bisect (thanks Warner for the mini 
>>> primer) this is the result:
>>>
>>> de0b2d4f47bad36025dcf52755ce76cca6e715d9 is the first bad commit
>>>
>>
>> You mean this commit is causing the panic?
>>
>>> git show de0b2d4f47bad36025dcf52755ce76cca6e715d9
>>> commit de0b2d4f47bad36025dcf52755ce76cca6e715d9
>>> Author: Mateusz Guzik <mjg@FreeBSD.org>
>>> Date:   Sun Dec 13 21:30:42 2020 +0000
>>>
>>>     Patch annotation in sigdeferstop
>>>         Probability flipped since sigdefer handling was moved away 
>>> from regular VOP
>>>     calls.
>>>
>>> Notes:
>>>     svn path=/head/; revision=368616
>>>
>>> diff --git a/sys/sys/signalvar.h b/sys/sys/signalvar.h
>>> index 93ef15bbbf0..df761a1e1a5 100644
>>> --- a/sys/sys/signalvar.h
>>> +++ b/sys/sys/signalvar.h
>>> @@ -367,7 +367,7 @@ static inline int
>>>  sigdeferstop(int mode)
>>>  {
>>>
>>> -       if (__predict_true(mode == SIGDEFERSTOP_NOP))
>>> +       if (__predict_false(mode == SIGDEFERSTOP_NOP))
>>>                 return (SIGDEFERSTOP_VAL_NCHG);
>>>         return (sigdeferstop_impl(mode));
>>>  }
> It appears so. Mind you, this is the first time I have done a bisect, 
> I may have made a mistake.
>>
>> And:
>>
>> git show de0b2d4f47bad36025dcf52755ce76cca6e715d9 | patch -p1 -R
>>
>> gets you a working kernel?
>>
> No... So I probably made a mistake in bisecting. I will try again.
>
Alright, after a new bisect run I got a different result, so I most 
likely did something wrong the first time.

ff3468ac94597efdcbc56f372528dfc98b114dac is the first bad commit
commit ff3468ac94597efdcbc56f372528dfc98b114dac
Author: Ian Lepore <ian@FreeBSD.org>
Date:   Sat Dec 12 18:34:15 2020 +0000

     Provide userland notification of gpio pin changes ("userland gpio 
interrupts").


Maybe more likely this is causing the panic?


Jakob




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?af76d2fc-cc6f-4ca4-c293-ae1ff8f2a51d>