Electrolysis/plugins
typical messaging deadlocks
case #1:
chrome -> sync ipc -> plugin -------+ | chrome <- sync <- sendmessage <-----+
case #2:
chrome -> sync sendmessage -> plugin -+ | chrome <- sync ipc <------------------+
case #3:
chrome -> sync ipc -> plugin -> plugin never responds back but keep pumping messages
non-e10s mitigation
case #1:
chrome -> sync -> plugin ----------------------------+ | chrome | windowsmessageloop <- sync <- sendmessage <-+
case #2:
- various tricks
case #3:
- plugin hang dialog
e10s mitigation
chrome -> sync ipc | plugin
- never happens
chrome -> sync sendmessage -> plugin
- happens while chrome is dispatching messages, no sync/rpc calls on the stack?
- content could be in a sync call to either when this happens
chrome -> sync ipc -> content -> sync ipc -> plugin -> sync ipc | chrome
- never happens
chrome -> sync ipc -> content -> sync ipc -> plugin -> sync sendmessage -> chrome
- can happen?
content -> sync ipc -> plugin -> plugin never responds back but keep pumping messages
- content hang?
plugin deadlock
since the plugin's main thread is bound to chrome's main thread, if either slows down, or hangs, they both slow down or hang.
non-e10s mitigation
none
e10s mitigation
none
e10s notes:
- the content process runs freely initially when chrome or plugin hang, until it sends a sync message to either.
- content's main thread isn't caught up in the attached message queues problem afaict.
- media related code migth break this if there's native ui and chrome parenting going on.