Closed Bug 1681750 Opened 1 year ago Closed 1 year ago

Crash in [@ RtlAcquireSRWLockExclusive | mozilla::dom::GamepadPlatformService::RemoveChannelParentInternal]

Categories

(Core :: DOM: Device Interfaces, defect)

Firefox 85
Unspecified
Windows
defect

Tracking

()

RESOLVED FIXED
86 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox83 --- unaffected
firefox84 --- unaffected
firefox85 --- fixed
firefox86 --- fixed

People

(Reporter: aryx, Assigned: cmartin)

References

(Regression)

Details

(Keywords: crash, regression)

Crash Data

Attachments

(1 file)

The crash signature existed before but got more frequent

Crash report: https://crash-stats.mozilla.org/report/index/a793e89d-481b-4880-91b5-691f30201210

Reason: EXCEPTION_ACCESS_VIOLATION_WRITE

Top 10 frames of crashing thread:

0 ntdll.dll RtlAcquireSRWLockExclusive 
1 xul.dll mozilla::dom::GamepadPlatformService::RemoveChannelParentInternal dom/gamepad/GamepadPlatformService.cpp:280
2 xul.dll static mozilla::dom::GamepadPlatformService::RemoveChannelParent dom/gamepad/GamepadPlatformService.cpp:325
3 xul.dll mozilla::ipc::IProtocol::DestroySubtree ipc/glue/ProtocolUtils.cpp:603
4 xul.dll mozilla::dom::PGamepadEventChannelParent::OnMessageReceived ipc/ipdl/PGamepadEventChannelParent.cpp:160
5 xul.dll mozilla::ipc::PBackgroundParent::OnMessageReceived ipc/ipdl/PBackgroundParent.cpp:3717
6 xul.dll mozilla::ipc::MessageChannel::DispatchMessage ipc/glue/MessageChannel.cpp:2077
7 xul.dll nsThread::ProcessNextEvent xpcom/threads/nsThread.cpp:1200
8 xul.dll mozilla::ipc::MessagePumpForNonMainThreads::Run ipc/glue/MessagePump.cpp:332
9 xul.dll MessageLoop::RunHandler ipc/chromium/src/base/message_loop.cc:327
Flags: needinfo?(cmartin)

This one is... less expected than the other one (the gamepad cleanup was made in-part to catch bugs like the one it did).

I'll look into this one too. Thanks, Sebastian.

Assignee: nobody → cmartin
Flags: needinfo?(cmartin)
Status: NEW → ASSIGNED

The most likely cause for the crashes seems like IPDL intermittently calling GamepadEventChannelParent::ActorDestroy() multiple times on the same object.

This adds a wrapper to stop that behavior (if it's the root cause), and also to fire off release assertions at several other potential causes.

Hopefully we see this crash signature disappear.

Pushed by cmartin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/2d192d43277b
Fix random GamepadPlatformService::RemoveChannelParent crashes r=haik
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 86 Branch
Crash Signature: [@ RtlAcquireSRWLockExclusive | mozilla::dom::GamepadPlatformService::RemoveChannelParentInternal] → [@ RtlAcquireSRWLockExclusive | mozilla::dom::GamepadPlatformService::RemoveChannelParentInternal] [@ RtlAcquireSRWLockExclusive | mozilla::detail::MutexImpl::lock | mozilla::dom::GamepadPlatformService::RemoveChannelParentInternal]
You need to log in before you can comment on or make changes to this bug.