Closed
Bug 1175898
Opened 9 years ago
Closed 9 years ago
crash in mozilla::CrossProcessMutex::ShareToProcess(int)
Categories
(Core :: Graphics, defect)
Tracking
()
RESOLVED
FIXED
mozilla41
Tracking | Status | |
---|---|---|
firefox42 | --- | fixed |
People
(Reporter: snorp, Assigned: blassey)
References
Details
(Keywords: crash)
Crash Data
Attachments
(1 file, 1 obsolete file)
1021 bytes,
patch
|
billm
:
review+
|
Details | Diff | Splinter Review |
This bug was filed from the Socorro interface and is report bp-a9524f91-ba27-4982-9c3f-44b272150618. ============================================================= I get this crash at startup with APZ enabled on 6/18 Mac nightly
Reporter | ||
Comment 1•9 years ago
|
||
This looks to be fallout from bug 1161166: [26376] WARNING: request for ports for pid 26376, but we're the chrome process : file /builds/slave/m-cen-m64-d-000000000000000000/build/src/ipc/glue/SharedMemoryBasic_mach.cpp, line 225 [26376] WARNING: Unable to get ports for process. : file /builds/slave/m-cen-m64-d-000000000000000000/build/src/ipc/glue/SharedMemoryBasic_mach.cpp, line 572 [26376] WARNING: request for ports for pid 26376, but we're the chrome process : file /builds/slave/m-cen-m64-d-000000000000000000/build/src/ipc/glue/SharedMemoryBasic_mach.cpp, line 225 [26376] WARNING: Unable to get ports for process. : file /builds/slave/m-cen-m64-d-000000000000000000/build/src/ipc/glue/SharedMemoryBasic_mach.cpp, line 572 Hit MOZ_CRASH() at /builds/slave/m-cen-m64-d-000000000000000000/build/src/ipc/glue/CrossProcessMutex_posix.cpp:146
Assignee: nobody → blassey.bugs
Blocks: 1161166
Comment 2•9 years ago
|
||
Note that this only happens if layers.progressive-paint is set to true. The default value is false on OS X.
Comment 3•9 years ago
|
||
Happening on B2G Desktop as well (OS X + apzc). Crash at startup.
Assignee | ||
Comment 4•9 years ago
|
||
I didn't consider a process sharing memory with itself. Snorp tried this and said it works under the conditions (progressive tiles and apz enabled) that he saw it crash without this patch.
Attachment #8624450 -
Flags: review?(wmccloskey)
Comment on attachment 8624450 [details] [diff] [review] share_to_self.patch Review of attachment 8624450 [details] [diff] [review]: ----------------------------------------------------------------- Canceling for now because I think we need a test for this. Could you please test this using the IPDL unit tests? Unfortunately they're not run on tinderbox, but they're useful when modifying IPDL. You need to build with --enable-ipdl-tests in your mozconfig. Then, from $OBJDIR/dist/bin, you can do: ./run-mozilla.sh ./ipdlunittest TestShmem The test should run in both threaded and cross-process mode. If the test doesn't fail without the mod_refs thing I mentioned below, can you change it so that it does? ::: ipc/glue/SharedMemoryBasic_mach.cpp @@ +565,5 @@ > SharedMemoryBasic::ShareToProcess(base::ProcessId pid, > Handle* aNewHandle) > { > + if (pid == getpid()) { > + *aNewHandle = mPort; I'm worried about ownership here. We're going to end up with two SharedMemoryBasics here that use the same port. When either one dies, we'll call mach_port_deallocate and the port will be gone. That doesn't sound like what we want. I think maybe we want to call mach_port_mod_refs here with a delta of +1.
Attachment #8624450 -
Flags: review?(wmccloskey)
Assignee | ||
Comment 6•9 years ago
|
||
you're right about ownership, good catch. And mod_refs is the right thing to do here. The tests, however, don't run (at least on my machine). I also tried running them on Aurora, so this isn't a recent regression. [23984] WARNING: parent WaitForMessage() failed: 0x10004003 (ipc/rcv) timed out: file /Users/blassey/src/mozilla-aurora/ipc/glue/GeckoChildProcessHost.cpp, line 756 TEST-UNEXPECTED-FAIL | TestShmem | problem launching subprocess [23984] ###!!! ABORT: failed test: file ../../../../dist/include/mozilla/_ipdltest/IPDLUnitTests.h, line 50 [23984] ###!!! ABORT: failed test: file ../../../../dist/include/mozilla/_ipdltest/IPDLUnitTests.h, line 50 Segmentation fault: 11 That failure is the timeout receiving the bootstrapped mach port from the child.
Attachment #8624450 -
Attachment is obsolete: true
Attachment #8625306 -
Flags: review?(wmccloskey)
Assignee | ||
Comment 7•9 years ago
|
||
update, commenting out this line http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/nsXREDirProvider.cpp#108 lets the ipdl tests run and the Shmem tests pass
Attachment #8625306 -
Flags: review?(wmccloskey) → review+
Comment 9•9 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/e6c3f42f0534
Status: NEW → RESOLVED
Closed: 9 years ago
status-firefox42:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla41
You need to log in
before you can comment on or make changes to this bug.
Description
•