I am debugging a device and associated software.

The operation of the device requires user applications to poll device registers 
to know when a certain event happens. It works fine when one process (not 
threaded) is doing the polling, but when another process starts polling Solaris 
panics with a xt_sync timeout or some other similar timeout. Appears that one 
of the cpus is not responding to interrupts. We suspect a problem in the device 
that causes a polling read to not complete, hanging the cpu.

To make sure this is the case we want to see what PC the polling processes are 
at when the panic happens. However, when we do ::findstack on the threads of 
the two polling processes after the panic we see
    panic_idle()
    systrap() 

Appears that the user processes trap down to kernel and go into a idle loop 
related to panic (how does panic force the cpus out of their hung state ?). Is 
it possible to use mdb to go into the user stack and see what PC they were at.

Thanks for any pointers.

Rabin
This message posted from opensolaris.org

Reply via email to