Port-sparc64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: next from ddb gives RED state exception?



On 13/06/2014 1:57 AM, Eduardo Horvath wrote:
> On Thu, 12 Jun 2014, Darren Reed wrote:
> 
>> Does this look normal?
>>
>> Cheers,
>> Darren
>>
>> Breakpoint in pid 329.1 (ipfstat) at    netbsd:ipf_getnextrule:
>> save            %
>> sp, -0x370, %sp
>> db{0}> next
>>
>> RED State Exception
>> Error enable reg: 0000.0001.00f0.001f
>> CPU: 0000.0000.0000.0000
>> TL=0000.0000.0000.0005 TT=0000.0000.0000.00d8
>>    TPC=0000.0000.0101.1524 TnPC=0000.0000.0101.1528
>> TSTATE=0000.0000.8200.0506
>> TL=0000.0000.0000.0004 TT=0000.0000.0000.01ff
>>    TPC=0000.0000.0101.8af4 TnPC=0000.0000.0101.8af8
>> TSTATE=0000.0000.8208.1405
>> TL=0000.0000.0000.0003 TT=0000.0000.0000.0060
>>    TPC=0000.0000.0118.0f64 TnPC=0000.0000.0118.0f68
>> TSTATE=0000.0044.8200.0605
>> TL=0000.0000.0000.0002 TT=0000.0000.0000.0060
>>    TPC=0000.0000.0116.62a8 TnPC=0000.0000.0116.62ac
>> TSTATE=0000.0044.8200.1601
>> TL=0000.0000.0000.0001 TT=0000.0000.0000.0060
>>    TPC=00Skipping crash dump on recursive panic
>> panic: cpu0: ipi_send: couldn't send ipi to UPAID 0 (tried 10000 times)
> 
> Oh Goody!  A watchdog reset!  I haven't seen one of those in a loong time.
> 
> You blew your trap stack.
> 
> The CPU has set of 4 trap registers.  Each time the CPU take a trap it 
> stores the trap state in the registers and increases the trap level.  The 
> trap handler usually reads the trap status out and saves it some where, 
> then reduces the trap level so the CPU can take another trap.  That's not 
> happening here.  When you ran out of trap levels the CPU took a RED state 
> exception.
> 
> The TT register will tell you the trap type, in this case 0x60 which is 
> the interrupt vector trap.  The TPC register will tell you what the CPU 
> was doing when it got the trap.  
> 
> In this case, either something is very wrong in the interrupt dispatch 
> code, which should simply read the interrupt dispatch register contents to 
> figure out the interrupt source, queue the interrupt in one of the pending 
> interrupt queues, issue an appropriate level interrupt, and resume 
> execution, or the CPU got an IPI and failed to properly execute it.  I 
> vote for #2.
> 
> I know that IPIs are used for TLB shootdown and cache flushing at least.

In a different experiment with "next" from ddb, I set a breakpoint in
an ipf function, caused the breakpoint to trigger and then did "n".

Whilst the machine did not panic or give me a RED error, it is hung
and hung hard. No response from ping and sending a BREAK to the
console port does nothing. No response to characters on the console
either.

Power button time.

Darren




Home | Main Index | Thread Index | Old Index