Chromium Code Reviews
Descriptionlinux/mac: Fix race condition when destroying the renderer<->plugin channel
There is a race condition at plugin destruction on posix:
1- (renderer) WebPluginDelegateProxy1 opens a channel to the plugin
2- (plugin) new channel created, sends FD1 to renderer
3- (renderer) WebPluginDelegateProxy1 receives FD1, establishes the channel name -> FD1 mapping.
[...]
4- (renderer) WebPluginDelegateProxy1 asks the plugin to destroy an instance, and schedules self for delayed deletion which will release the channel and remove the mapping.
5- (plugin) this was the last instance, plugin closes its end of the channel, removes its mapping.
6- (renderer) WebPluginDelegateProxy2 opens a channel to the plugin
7- (plugin) new channel created, sends FD2 to renderer
8- (renderer) WebPluginDelegateProxy2 receives FD2, establishes the channel name -> FD2 mapping *ASSERT* because the mapping already exists (to FD1)
9- (renderer) WebPluginDelegateProxy1 deleted, causes channel host destruction and removing of channel name -> FD1 mapping
The channel host destruction in (9) needs to happen before (8). This CL does that.
BUG=18491
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=23102
Patch Set 1 #Patch Set 2 : merge #
Total comments: 1
Messages
Total messages: 4 (0 generated)
|
|||||||||||||||||||