DescriptionMojo IPC threading fixes
Two independent but related fixes here:
1. IPCSupportInitializer could previously outlive its IO
runner, resulting in Mojo not being shut down in time.
The EDK posts tasks directly to a MessageLoopForIO
pointer because it's assumed to remain valid until
EDK shutdown. This CL limits IPCSupportInitializer's
lifetime to that of the IO thread, regardless of
ScopedIPCSupport lifetime.
2. In single-process mode, the child IO thread cannot be
used to create the client ChannelMojo, because all channels
in-process must be created on the EDK IO thread. This problem only
surfaced in practice because #1 above changed some shutdown
ordering and tickled a DCHECK in EDK shutdown.
This CL has ChannelMojo hop to its IO runner (only if
necessary) before creating underlying messaging pipes.
BUG=None
R=morrita@chromium.org
Committed: https://crrev.com/dbb3bb6bfa0b222fb6745608cd571bb0ec8bef39
Cr-Commit-Position: refs/heads/master@{#329262}
Patch Set 1 #Patch Set 2 : Additional IPCSupportInitializer cleanup #Patch Set 3 : Initialize raw observer ptr #Patch Set 4 : Clean up ChannelMojo #Patch Set 5 : Correct some outdated expectations during shutdown #
Total comments: 4
Patch Set 6 : Force shutdown on the correct thread #
Total comments: 1
Messages
Total messages: 18 (8 generated)
|