Idle processors

I am currently analyzing a very interesting dump which we manually dump from
an hanged machine.

The hang is very weird because it seems that two thread are in a weird state
(Windbg state represent “???”) but they are in a non-wait state. They are
on valid opcodes. One over “push ebp” the other over “leave”.

I make sure that there is no infinite loop state here, the two threads just
in that a weird state and on a valid opcodes.

When I use the !running I see the following output :
1: kd> !running
System Processors: (00000003)
Idle Processors: (00000001)
All processors idle.
But while I use !running -i I do get one of the threads in the weird state.

Is it ok that all processors are in idle state ? Is there any other reason
why the two valid threads on valid opcodes will freeze up ?

Any help will be appreciated,
Thanks,
Jim