The powerd main thread only ever checks fb_state with the mutex locked, and the monitor thread only ever changes it with the mutex locked. The main thread also only calls pthread_cond_wait() *after* finding fb_state != FB_AWAKE *without any intervening unlock of the mutex.* So the scenario you describe is impossible. If the monitor thread changes fb_state to FB_AWAKE before the main thread locks the mutex, it will see fb_state == FB_AWAKE on the first loop iteration and never call pthread_cond_wait(). If the main thread locks the mutex before the monitor thread changes the state then the monitor thread cannot change the state until pthread_cond_wait() releases the mutex, then the subsequent pthread_cond_signal() call will awaken the main thread.
-- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to powerd in Ubuntu. https://bugs.launchpad.net/bugs/1450017 Title: Sometimes resuming leaves only a black lit screen, no unity8 Status in powerd package in Ubuntu: New Status in unity8 package in Ubuntu: New Bug description: Sometimes when I turn my dogfooding mako device on (running stable channel), I see a back lighted screen, but no unity8. It stays like that indefinitely, and I just have to hard-reset. I haven't noticed any obvious correlations to the behavior. It just happens. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/powerd/+bug/1450017/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp