Closed
Bug 837037
Opened 13 years ago
Closed 12 years ago
Frequent Windows test_peerConnection_basicAudio.html | application crashed [@ 0x1cf3c0] [@ 0x12f91a] [@ 0x2ff968] [@ 0x12fa1d] [@ sipcc::PeerConnectionImpl::IceGatheringCompleted_m]
Categories
(Core :: WebRTC: Audio/Video, defect)
Tracking
()
RESOLVED
FIXED
mozilla21
| Tracking | Status | |
|---|---|---|
| firefox20 | --- | unaffected |
| firefox21 | + | fixed |
| firefox-esr17 | --- | unaffected |
| b2g18 | --- | unaffected |
People
(Reporter: philor, Assigned: jesup)
References
Details
(Keywords: crash, intermittent-failure, sec-critical, Whiteboard: [WebRTC][blocking-webrtc+][qa-])
Crash Data
Attachments
(1 file, 2 obsolete files)
|
3.46 KB,
patch
|
ekr
:
review+
|
Details | Diff | Splinter Review |
+++ This bug was initially created as a clone of Bug #837026 +++
Almost certainly the Windows flavor of the Mac/Linux bug 837026.
Stacks are all ugly and random looking above sipcc::PeerConnectionImpl::IceGatheringCompleted_m
https://tbpl.mozilla.org/php/getParsedLog.php?id=19345804&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=19345920&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=19342506&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=19342582&tree=Mozilla-Inbound
PROCESS-CRASH | /tests/dom/media/tests/mochitest/test_peerConnection_basicAudio.html | application crashed [@ 0x1cf3c0]
Crash dump filename: c:\users\cltbld\appdata\local\temp\tmpb3gssn\minidumps\8dcd512c-c692-42ab-b922-ac8070af4d88.dmp
Operating system: Windows NT
6.1.7600
CPU: x86
GenuineIntel family 6 model 23 stepping 10
2 CPUs
Crash reason: EXCEPTION_ACCESS_VIOLATION_READ
Crash address: 0x2
Thread 0 (crashed)
0 0x1cf3c0
eip = 0x001cf3c0 esp = 0x001cf3a8 ebp = 0x259baf08 ebx = 0x6c46e0f0
esi = 0x00000002 edi = 0x013caf98 eax = 0x00000000 ecx = 0x00000008
edx = 0x6bbc15b1 efl = 0x00210246
Found by: given as instruction pointer in context
1 xul.dll!sipcc::PeerConnectionImpl::IceGatheringCompleted_m(mozilla::NrIceCtx *) [PeerConnectionImpl.cpp:fbcff2d6edc8 : 1289 + 0x27]
eip = 0x6bbc4b82 esp = 0x001cf3c8 ebp = 0x259baf08
Found by: stack scanning
2 MSVCP100D.dll + 0x1d1b
eip = 0x72ee1d1c esp = 0x001cf3e0 ebp = 0x259baf08
Found by: stack scanning
3 xul.dll!BloatEntry::AccountRefs() [nsTraceRefcntImpl.cpp:fbcff2d6edc8 : 275 + 0x12]
eip = 0x6ba0ad33 esp = 0x001cf428 ebp = 0x259baf08
Found by: stack scanning
4 MSVCP100D.dll + 0x1b77
eip = 0x72ee1b78 esp = 0x001cf42c ebp = 0x259baf08
Found by: stack scanning
5 nspr4.dll + 0xe89f
eip = 0x734de8a0 esp = 0x001cf490 ebp = 0x259baf08
Found by: stack scanning
6 xul.dll!mozilla::runnable_args_m_1<nsRefPtr<sipcc::PeerConnectionImpl>,tag_nsresult ( sipcc::PeerConnectionImpl::*)(mozilla::NrIceCtx *),mozilla::NrIceCtx *>::Run() [runnable_utils_generated.h:fbcff2d6edc8 : 122 + 0x15]
eip = 0x6bbc16b7 esp = 0x001cf4ac ebp = 0x259baf08
Found by: stack scanning
7 xul.dll!nsThread::ProcessNextEvent(bool,bool *) [nsThread.cpp:fbcff2d6edc8 : 627 + 0xd]
eip = 0x6b9fe0a5 esp = 0x001cf4bc ebp = 0x259baf08
Found by: stack scanning
8 xul.dll!NS_ProcessNextEvent_P(nsIThread *,bool) [nsThreadUtils.cpp:fbcff2d6edc8 : 238 + 0xc]
eip = 0x6b9a991b esp = 0x001cf4f0 ebp = 0x259baf08
Updated•13 years ago
|
Crash Signature: [@ sipcc::PeerConnectionImpl::IceGatheringCompleted_m(mozilla::NrIceCtx *)]
Comment 1•13 years ago
|
||
This is not a null deref crash and sounds security sensitive to me.
Group: core-security
Crash Signature: [@ sipcc::PeerConnectionImpl::IceGatheringCompleted_m(mozilla::NrIceCtx *)] → [@ sipcc::PeerConnectionImpl::IceGatheringCompleted_m(mozilla::NrIceCtx *)]
[@ 0x1cf3c0]
[@ 0x12f91a]
[@ 0x2ff968]
[@ 0x12fa1d]
Updated•13 years ago
|
Updated•13 years ago
|
Whiteboard: [WebRTC][blocking-webrtc?]
Updated•13 years ago
|
Whiteboard: [WebRTC][blocking-webrtc?] → [WebRTC][blocking-webrtc+]
| Assignee | ||
Comment 2•12 years ago
|
||
Crash address is 0x2; that's a null-pointer deref, but some of the other linked crashes have bizzarro addresses.
I *think* I know the issue: the nricectx signals SignalGatheringCompleted(this), which then gets proxied to pcmedia's SignalIceGatheringCompleted, and to PeerConnectionImpl's IceGatheringCompleted.
That ships off a runnable (async) with a refptr to the PeerCOnnectionImpl - but not the the icectx or the PeerConnectionMedia holding it. I believe (due to checks elsewhere) that PeerConnectionMedia can go away without the PeerConnection going away. and if the runnable is still outstanding...
Comment 3•12 years ago
|
||
Sorry but I didn't wanted to reference the 0x2 address with my last comment but the other those from the other reports given in comment 0 like:
Crash reason: EXCEPTION_PRIV_INSTRUCTION
Crash address: 0x12fa1d
Updated•12 years ago
|
| Assignee | ||
Comment 4•12 years ago
|
||
| Assignee | ||
Comment 5•12 years ago
|
||
Comment on attachment 709316 [details] [diff] [review]
hold refptr to NrIceCtx in IceGathering runnables
I think holding the refptr is a good idea here... Though the targeted functions don't seem to do anything with aCtx other than write debugs (but those may be what's causing the crash!).
ekr - is my analysis reasonable?
Attachment #709316 -
Flags: review?(ekr)
| Assignee | ||
Updated•12 years ago
|
Assignee: nobody → rjesup
Comment 6•12 years ago
|
||
jesup:
1. Rather than trying to keep the NrIceCtx alive, I think it would be better to just remove the argument, since,
as you say, we're not doing anything.
2. I'm unconvinced that this is the source of the problem. We don't have a line number, but as far as I can
tell, the only thing that IceCompleted_m does with aCtx is log its value. As far as I know, it's generally
safe to print the value of pointers that don't currently point to valid memory [I suspect it's technically
underfined behavior, but safe in most implementations.]
| Assignee | ||
Comment 7•12 years ago
|
||
yeah. The crashes went away with the Clobber, which concerns me, but a bunch of weird stuff in this area went away after the clobber. I was looking at this to try to blame it on needing-clobber, but when I looked I realized that we were passing a referenced pointer without a reference. If we have no intention of using it, removing it is good; if we think we will at time time in the future, we could make it a RefPtr as in the patch. Either is good by me, but we should do one.
Comment 8•12 years ago
|
||
I do not believe we need it. Let's remove it.
| Assignee | ||
Comment 9•12 years ago
|
||
| Assignee | ||
Updated•12 years ago
|
Attachment #709316 -
Attachment is obsolete: true
Attachment #709316 -
Flags: review?(ekr)
| Assignee | ||
Comment 10•12 years ago
|
||
Comment on attachment 709446 [details] [diff] [review]
hold refptr to NrIceCtx in IceGathering runnables
Removed Ctx from the main-thread runnables
Attachment #709446 -
Flags: review?(ekr)
| Assignee | ||
Comment 11•12 years ago
|
||
| Assignee | ||
Updated•12 years ago
|
Attachment #709446 -
Attachment is obsolete: true
Attachment #709446 -
Flags: review?(ekr)
| Assignee | ||
Updated•12 years ago
|
Attachment #709488 -
Flags: review?(ekr)
Comment 12•12 years ago
|
||
Comment on attachment 709488 [details] [diff] [review]
hold refptr to NrIceCtx in IceGathering runnables
Review of attachment 709488 [details] [diff] [review]:
-----------------------------------------------------------------
Please be sure to change the commit message, since the title of this patch is inaccurate.
Attachment #709488 -
Flags: review?(ekr) → review+
| Assignee | ||
Comment 13•12 years ago
|
||
Target Milestone: --- → mozilla21
Comment 14•12 years ago
|
||
Marking in-testsuite+ - existing mochitest automation will already cover this.
Flags: in-testsuite+
Comment 15•12 years ago
|
||
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Updated•12 years ago
|
Whiteboard: [WebRTC][blocking-webrtc+] → [WebRTC][blocking-webrtc+][qa-]
Updated•12 years ago
|
status-b2g18:
--- → unaffected
status-firefox-esr17:
--- → unaffected
Updated•12 years ago
|
Group: core-security
Keywords: sec-critical
You need to log in
before you can comment on or make changes to this bug.
Description
•