The message comes from dvmSuspendSelf()
, which calls threads when the debugger (via the JDWP thread) asked them to pause.
The way it should work (where "we" is the stream):
- JDWP asks us to suspend
- we say we paused and fell asleep
- In the end, the debugger wakes us up and we resume
The message is written to the log when the condition variable that the VM expects on the signals is, for some reason, still marked as paused. Code Notes:
The expectation in this case is that we woke up unexpectedly when a signal appeared (for example, system_server believes that ANR because the main thread does not respond, because the debugger stopped it), and if we loop the debugger again it will get a chance to clear us and set us on our way.
The log message prints the values self->suspendCount
(how many times we were told to suspend ourselves), self->dbgSuspendCount
(how many of these requests for suspension came from the debugger, so we can βcancelβ all these if the debugger is turned off) and the value self->isSuspended
boolean.
Please note that the flag "s = Y" disappeared in the gingerbread lock - the way the suspension worked was changed .
source share