Closed Bug 1154873 Opened 11 years ago Closed 11 years ago

GMPDecryptorParent::Shutdown() sends a message from the wrong thread

Categories

(Core :: Audio/Video, defect)

defect
Not set
normal

Tracking

()

RESOLVED INCOMPLETE
Tracking Status
firefox40 --- affected

People

(Reporter: mccr8, Unassigned)

References

Details

(Keywords: csectype-race, sec-moderate)

Crash Data

I found this crash signature on crash-stats: https://crash-stats.mozilla.com/report/index/bf30f18e-654f-4289-af2c-69a3d2150414 GMPDecryptorParent::Shutdown() is run off the main thread, but calls SendDecryptingComplete(), which calls MessageChannel::Send(), which I think is not okay to do on this random thread.
Crash Signature: [@ mozilla::ipc::MessageChannel::CxxStackFrame::CxxStackFrame(mozilla::ipc::MessageChannel&, mozilla::ipc::Direction, IPC::Message const*) ]
Two more like this: https://crash-stats.mozilla.com/report/index/31c719b8-42a6-4137-8343-e2faf2150414 https://crash-stats.mozilla.com/report/index/9ea68906-0f6e-4b64-a8d8-f00132150414 This one is slightly different, in that it is GMPVideoDecoderParent::Shutdown() calling SendDecodingComplete() off the main thread, but it seems like the same basic problem: https://crash-stats.mozilla.com/report/index/0897ed68-e6b5-4576-93cf-9eb012150414#allthreads The last one has the user comment "Testing GMP crash reporting... Crashes browser :(".
Blocks: 1155375
(In reply to Andrew McCreight [:mccr8] from comment #0) > GMPDecryptorParent::Shutdown() is run off the main thread, but calls > SendDecryptingComplete(), which calls MessageChannel::Send(), which I think > is not okay to do on this random thread. If I understand correctly, PGMP is meant to be owned by a non-main thread — notice that CDMProxy::Shutdown asserts it's on the main thread and then sends a runnable to mGMPThread to call CDMProxy::gmp_Shutdown, and this design pattern is repeated for a few other methods. The problem here is that it somehow winds up on a thread that isn't the owner of its MessageChannel.
Keywords: csectype-race
Summary: GMPDecryptorParent::Shutdown() sends a message off the main thread → GMPDecryptorParent::Shutdown() sends a message from the wrong thread
Seems hard to exploit...
Keywords: sec-moderate
I haven't seen this in a while.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → INCOMPLETE
Group: core-security → core-security-release
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.