dtrace ustack kernel panic

maestro something maestro82 at gmail.com
Sat Jul 30 20:15:14 UTC 2011


Hi,

This is i386, right ?
> I think the cause is that assembler routine panic_trigger does not
> establish the standard i386 frame. Basically, you need either this,
> or dwarf annotations, for gdb to be able to walk over the frame.
>
> You need to add the standard prologue
>        pushl   %ebp
>        movl    %esp,%ebp
> and standard epilogue
>        leave
> to the function. No idea whether it will continue to operate correctly
> after.
>

my panic_trigger looks like this now:

/*
int
panic_trigger(int *tp)
*/
        ENTRY(panic_trigger)
        pushl   %ebp
        movl    %esp,%ebp
        xorl    %eax, %eax
        movl    $0xdefacedd, %edx
        lock
          xchgl %edx, (%edi)
        cmpl    $0, %edx
        je      0f
        movl    $0, %eax
        leave
        ret
0:      movl    $1, %eax
        leave
        ret
        END(panic_trigger)

same result, (actually too same as the address in the stack trace is still
the same, is that possible?)

cheers
--m


More information about the freebsd-stable mailing list