Closed Bug 1628766 Opened 4 years ago Closed 4 years ago

Crash [@ mozilla::ipc::CreateEndpoints<T> ] / [@ nsCORSListenerProxy::OnDataAvailable ]

Categories

(WebExtensions :: General, defect)

defect
Not set
normal

Tracking

(firefox-esr68 unaffected, firefox74 unaffected, firefox75 unaffected, firefox76 unaffected, firefox77 fixed)

RESOLVED FIXED
mozilla77
Tracking Status
firefox-esr68 --- unaffected
firefox74 --- unaffected
firefox75 --- unaffected
firefox76 --- unaffected
firefox77 --- fixed

People

(Reporter: johnp, Assigned: mattwoodrow)

References

(Regression, )

Details

(Keywords: crash, regression)

Crash Data

Attachments

(2 files)

Newest Nightly (20200409095500) crashes quickly after launch:

bp-a20c4459-dfa5-4c86-afa5-5b48a0200409

Downgrading to 07-03-2020 fixes the issue. From the crash report, the first crash happened after half an hour uptime, so also may have been caused by an add-on updating in the background(?).

Somehow this crash report is also created as many times as the crash happens with the former one (not sure if it is related, at least two other installations report that crash without the former one):

bp-52e37d41-5a4f-4325-9304-8b1340200409

This is happening with fission and webrender enabled and many more modifications (http3, tcp fast open, first party isolation, e10s shared font list, gpu process, ...) and extensions on my default profile. Tentatively blocking bug 1597159 based on the stack trace.

Flags: needinfo?(mixedpuppy)

This also crashed one/two(?) tab processes after restarting with fission disabled, but not since:

bp-2b80e12d-54cb-4aef-8f2a-c5a300200409
bp-ee953773-8d79-4adc-a3e1-341060200409

edit: Restarting always crashes at least 1 content process while loading my session with fission disabled (instead of a whole browser crash).

edit2: This URL reliably causes the content process crash in my session (pinned tab, so it's likely to blame for the other crashes as well):

https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6

edit3: Several other sites also seem to intermittently cause the crash.

Summary: Crash [@ mozilla::ipc::CreateEndpoints<T> ] → Crash [@ mozilla::ipc::CreateEndpoints<T> ] / [@ nsCORSListenerProxy::OnDataAvailable ]
Version: unspecified → Trunk

It looks like this is two separate crashes.

The first one is from https://hg.mozilla.org/mozilla-central/rev/037b03cc5009 and nsHttpChannel::AttachStreamFilter needs to null-check ProcessId().

The other is from https://hg.mozilla.org/mozilla-central/rev/ef27657560d1 and it appears we now have a race condition where OnStopRequest can be delivered to the listeners before OnDataAvailable.

I haven't been able to reproduce the issue with the linked site. It almost certainly requires the right addons to be installed to happen.

Johannes, could you please try disabling some addons to see which one causes the issue for you?

Flags: needinfo?(johnp)

I managed to reliably reproduce the [@ nsCORSListenerProxy::OnDataAvailable ] crash with only WebAssembly Detector installed on a clean profile.

Flags: needinfo?(johnp)

(In reply to Johannes Pfrang [:johnp] from comment #3)

I managed to reliably reproduce the [@ nsCORSListenerProxy::OnDataAvailable ] crash with only WebAssembly Detector installed on a clean profile.

Awesome, I can fairly reliably repro with that too. Thanks!

Assignee: nobody → matt.woodrow
Status: NEW → ASSIGNED
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/6e67603de6d7
Don't emit a manual OnStopRequest from StreamFilterParent if we're currently disconnecting. r=mixedpuppy
https://hg.mozilla.org/integration/autoland/rev/f6c6a79d8448
Check ProcessId for 0 before trying to create an Endpoint using it. r=mixedpuppy
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla77

I'm still hitting this by run mach xpcshell-test toolkit/components/extensions/test/xpcshell/test_ext_webRequest_filterResponseData.js in my linux local with mOtherPid == 0 in DocumentLoadListener

 0:43.77 pid:846 #01: nsresult mozilla::ipc::CreateEndpoints<mozilla::extensions::PStreamFilterParent, mozilla::extensions::PStreamFilterChild>(mozilla::ipc::PrivateIPDLInterface const&, int, int, mozilla
::ipc::Endpoint<mozilla::extensions::PStreamFilterParent>*, mozilla::ipc::Endpoint<mozilla::extensions::PStreamFilterChild>*) (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/include/mozilla/ipc/
ProtocolUtils.h:764)
 0:43.77 pid:846 #02: mozilla::extensions::PStreamFilter::CreateEndpoints(int, int, mozilla::ipc::Endpoint<mozilla::extensions::PStreamFilterParent>*, mozilla::ipc::Endpoint<mozilla::extensions::PStreamFi
lterChild>*) (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/ipc/ipdl/PStreamFilter.cpp:24)
 0:43.77 pid:846 #03: mozilla::net::DocumentLoadListener::TriggerRedirectToRealChannel(mozilla::Maybe<unsigned long> const&) (/home/juhsu/mozilla-central/netwerk/ipc/DocumentLoadListener.cpp:1501)
 0:43.77 pid:846 #04: mozilla::net::DocumentLoadListener::OnStartRequest(nsIRequest*) (/home/juhsu/mozilla-central/netwerk/ipc/DocumentLoadListener.cpp:1616)
 0:43.78 pid:846 #05: mozilla::net::ParentChannelListener::OnStartRequest(nsIRequest*) (/home/juhsu/mozilla-central/netwerk/protocol/http/ParentChannelListener.cpp:98)
 0:43.78 pid:846 #06: nsDocumentOpenInfo::OnStartRequest(nsIRequest*) (/home/juhsu/mozilla-central/uriloader/base/nsURILoader.cpp:189)
 0:43.78 pid:846 #07: mozilla::net::ParentProcessDocumentOpenInfo::OnStartRequest(nsIRequest*) (/home/juhsu/mozilla-central/netwerk/ipc/DocumentLoadListener.cpp:171)
 0:43.78 pid:846 #08: mozilla::net::nsStreamListenerWrapper::OnStartRequest(nsIRequest*) (/home/juhsu/mozilla-central/netwerk/base/nsStreamListenerWrapper.h:30)
 0:43.78 pid:846 #09: mozilla::extensions::ChannelWrapper::RequestListener::OnStartRequest(nsIRequest*) (/home/juhsu/mozilla-central/toolkit/components/extensions/webrequest/ChannelWrapper.cpp:1057)
 0:43.78 pid:846 #10: nsUnknownDecoder::FireListenerNotifications(nsIRequest*, nsISupports*) (/home/juhsu/mozilla-central/netwerk/streamconv/converters/nsUnknownDecoder.cpp:773)
 0:43.78 pid:846 #11: nsUnknownDecoder::OnStopRequest(nsIRequest*, nsresult) (/home/juhsu/mozilla-central/netwerk/streamconv/converters/nsUnknownDecoder.cpp:323)
 0:43.79 pid:846 #12: mozilla::net::nsStreamListenerTee::OnStopRequest(nsIRequest*, nsresult) (/home/juhsu/mozilla-central/netwerk/base/nsStreamListenerTee.cpp:51)
 0:43.79 pid:846 #13: mozilla::net::nsHttpChannel::ContinueOnStopRequest(nsresult, bool, bool) (/home/juhsu/mozilla-central/netwerk/protocol/http/nsHttpChannel.cpp:0)
 0:43.79 pid:846 #14: mozilla::net::nsHttpChannel::ContinueOnStopRequestAfterAuthRetry(nsresult, bool, bool, bool, mozilla::net::HttpTransactionShell*) (/home/juhsu/mozilla-central/netwerk/protocol/http/n
sHttpChannel.cpp:7940)
 0:43.79 pid:846 #15: mozilla::net::nsHttpChannel::OnStopRequest(nsIRequest*, nsresult) (/home/juhsu/mozilla-central/netwerk/protocol/http/nsHttpChannel.cpp:7866)
 0:43.79 pid:846 #16: nsInputStreamPump::OnStateStop() (/home/juhsu/mozilla-central/netwerk/base/nsInputStreamPump.cpp:687)
 0:43.80 pid:846 #17: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (/home/juhsu/mozilla-central/netwerk/base/nsInputStreamPump.cpp:434)
 0:43.80 pid:846 #18: nsInputStreamReadyEvent::Run() (/home/juhsu/mozilla-central/xpcom/io/nsStreamUtils.cpp:0)
 0:43.80 pid:846 #19: nsThread::ProcessNextEvent(bool, bool*) (/home/juhsu/mozilla-central/xpcom/threads/nsThread.cpp:1240)
 0:43.80 pid:846 #20: NS_ProcessNextEvent(nsIThread*, bool) (/home/juhsu/mozilla-central/xpcom/threads/nsThreadUtils.cpp:501)
 0:43.80 pid:846 #21: bool mozilla::SpinEventLoopUntil<(mozilla::ProcessFailureBehavior)1, nsThreadManager::SpinEventLoopUntilInternal(nsINestedEventLoopCondition*, bool)::$_7>(nsThreadManager::SpinEventL
oopUntilInternal(nsINestedEventLoopCondition*, bool)::$_7&&, nsIThread*) (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/include/nsThreadUtils.h:359)
 0:43.80 pid:846 #22: nsThreadManager::SpinEventLoopUntilInternal(nsINestedEventLoopCondition*, bool) (/home/juhsu/mozilla-central/xpcom/threads/nsThreadManager.cpp:696)
 0:43.80 pid:846 #23: nsThreadManager::SpinEventLoopUntil(nsINestedEventLoopCondition*) (/home/juhsu/mozilla-central/xpcom/threads/nsThreadManager.cpp:675)
 0:43.80 pid:846 #24: ??? (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/bin/libxul.so + 0x958c79a)
 0:43.80 pid:846 #25: CallMethodHelper::Invoke() (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNative.cpp:1618)
 0:43.80 pid:846 #26: CallMethodHelper::Call() (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNative.cpp:1174)
 0:43.80 pid:846 #27: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNative.cpp:1140)
 0:43.80 pid:846 #28: XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:946)
 0:43.81 pid:846 #29: CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:486)
 0:43.81 pid:846 #30: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:578)
 0:43.81 pid:846 #31: InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:641)
 0:43.81 pid:846 #32: js::CallFromStack(JSContext*, JS::CallArgs const&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:645)
 0:43.81 pid:846 #33: Interpret(JSContext*, js::RunState&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:3300)
 0:43.82 pid:846 #34: js::RunScript(JSContext*, js::RunState&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:458)
 0:43.82 pid:846 #35: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:613)
 0:43.82 pid:846 #36: InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:641)
 0:43.82 pid:846 #37: js::CallFromStack(JSContext*, JS::CallArgs const&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:645)
 0:43.83 pid:846 #38: js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) (/home/juhsu/mozilla-central/js/src/ji
t/BaselineIC.cpp:2992)
Flags: needinfo?(matt.woodrow)

Do you have e10s disabled?

It seems like that's the only reason mOtherPid would be 0, and we're not failing this test in automation.

Flags: needinfo?(matt.woodrow)

This test looks like a non-e10s test.
Right, we're not failing in automation (not sure why).

There's a potential problem:
streamFilter might fail in non-e10s mode with document channel on.

From what I can tell we never support streamFilter without e10s, we always just fail to create one if there's no content process.

I think we could just check if the pid == 0 in DocumentLoadListener, and reject the promise if so.

I was wrong. It's an e10s xpcshell-test.

If the promise is rejected, it crashes here
https://searchfox.org/mozilla-central/rev/46e3b1ce2cc120a188f6940b5c6eab6b24530e4f/netwerk/ipc/ParentProcessDocumentChannel.cpp#83

 0:30.76 pid:19770 \x07[19770, Main Thread] ###!!! ASSERTION: Attempt to load a non-authorised load in the parent process: http://example.com/lorem.html.gz: 'false', file /home/juhsu/mozilla-central/netwe
rk/ipc/ParentProcessDocumentChannel.cpp, line 83                                                                                                                                                            
 0:30.76 pid:19770 #01: mozilla::net::ParentProcessDocumentChannel::RedirectToRealChannel(nsTArray<mozilla::ipc::Endpoint<mozilla::extensions::PStreamFilterParent> >&&, unsigned int, unsigned int) (/home/
juhsu/mozilla-central/netwerk/ipc/ParentProcessDocumentChannel.cpp:83)                                                                                                                                      
 0:30.76 pid:19770 #02: mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26::operator()(mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&) const (/home/juhsu/mozil
la-central/netwerk/ipc/ParentProcessDocumentChannel.cpp:200)                                                                                                                                                
 0:30.77 pid:19770 #03: std::enable_if<TakesArgument<void (mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26::*)(mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&
&) const>::value, mozilla::detail::MethodTrait<void (mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26::*)(mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&) con
st>::ReturnType>::type mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::InvokeMethod<mozilla::net::Parent
ProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26, void (mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26::*)(mozilla::net::DocumentLoadListener::OpenPromiseSuccee
dedType&&) const, mozilla::net::DocumentLoadListener::OpenPromiseSucceededType>(mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26*, void (mozilla::net::ParentProcessDocumentC
hannel::AsyncOpen(nsIStreamListener*)::$_26::*)(mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&) const, mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&) (/home/juhsu/mozilla-
central/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:553)                                                                                                                                      
 0:30.78 pid:19770 #04: std::enable_if<!(false), void>::type mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, tr
ue>::InvokeCallbackMethod<false, mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26, void (mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26::*)(
mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&) const, mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, RefPtr<mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenProm
iseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::Private> >(mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26*, void (mozilla::net::ParentP
rocessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26::*)(mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&) const, mozilla::net::DocumentLoadListener::OpenPromiseSucceededType&&, RefPtr
<mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::Private>&&) (/home/juhsu/mozilla-central/obj-x86_64-pc-
linux-gnu/dist/include/mozilla/MozPromise.h:585)                                                                                                                                                            
 0:30.78 pid:19770 #05: mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::ThenValue<mozilla::net::ParentPr
ocessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_26, mozilla::net::ParentProcessDocumentChannel::AsyncOpen(nsIStreamListener*)::$_27>::DoResolveOrRejectInternal(mozilla::MozPromise<mozilla::net::Doc
umentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::ResolveOrRejectValue&) (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/include/mozi
lla/MozPromise.h:772)                                                                                                                                                                                       
 0:30.79 pid:19770 #06: mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::ThenValueBase::DoResolveOrReject
(mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::ResolveOrRejectValue&) (/home/juhsu/mozilla-central/obj
-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:532)                                                                                                                                                 
 0:30.79 pid:19770 #07: mozilla::MozPromise<mozilla::net::DocumentLoadListener::OpenPromiseSucceededType, mozilla::net::DocumentLoadListener::OpenPromiseFailedType, true>::ThenValueBase::ResolveOrRejectRu
nnable::Run() (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:410)                                                                                                   
 0:30.79 pid:19770 #08: mozilla::SimpleTaskQueue::DrainTasks() (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/include/mozilla/TaskDispatcher.h:44)                                               
 0:30.79 pid:19770 #09: nsThread::DrainDirectTasks() (/home/juhsu/mozilla-central/xpcom/threads/nsThread.cpp:1451)                                                                                          
 0:30.79 pid:19770 #10: nsThread::ProcessNextEvent(bool, bool*) (/home/juhsu/mozilla-central/xpcom/threads/nsThread.cpp:0)                                                                                  
 0:30.79 pid:19770 #11: NS_ProcessNextEvent(nsIThread*, bool) (/home/juhsu/mozilla-central/xpcom/threads/nsThreadUtils.cpp:501)                                                                             
 0:30.80 pid:19770 #12: bool mozilla::SpinEventLoopUntil<(mozilla::ProcessFailureBehavior)1, nsThreadManager::SpinEventLoopUntilInternal(nsINestedEventLoopCondition*, bool)::$_7>(nsThreadManager::SpinEven
tLoopUntilInternal(nsINestedEventLoopCondition*, bool)::$_7&&, nsIThread*) (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/include/nsThreadUtils.h:360)                                           
 0:30.80 pid:19770 #13: nsThreadManager::SpinEventLoopUntilInternal(nsINestedEventLoopCondition*, bool) (/home/juhsu/mozilla-central/xpcom/threads/nsThreadManager.cpp:696)
 0:30.80 pid:19770 #14: nsThreadManager::SpinEventLoopUntil(nsINestedEventLoopCondition*) (/home/juhsu/mozilla-central/xpcom/threads/nsThreadManager.cpp:675)
 0:30.80 pid:19770 #15: ??? (/home/juhsu/mozilla-central/obj-x86_64-pc-linux-gnu/dist/bin/libxul.so + 0x964d10a)
 0:30.80 pid:19770 #16: CallMethodHelper::Invoke() (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNative.cpp:1618)
 0:30.80 pid:19770 #17: CallMethodHelper::Call() (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNative.cpp:1174)
 0:30.80 pid:19770 #18: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNative.cpp:1140)
 0:30.80 pid:19770 #19: XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (/home/juhsu/mozilla-central/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:946)
 0:30.80 pid:19770 #20: CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:484)
 0:30.80 pid:19770 #21: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:576)
 0:30.80 pid:19770 #22: InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:639)
 0:30.80 pid:19770 #23: js::CallFromStack(JSContext*, JS::CallArgs const&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:643)
 0:30.80 pid:19770 #24: Interpret(JSContext*, js::RunState&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:3298)
 0:30.81 pid:19770 #25: js::RunScript(JSContext*, js::RunState&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:456)
 0:30.81 pid:19770 #26: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:611)
 0:30.81 pid:19770 #27: InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:639)
 0:30.81 pid:19770 #28: js::CallFromStack(JSContext*, JS::CallArgs const&) (/home/juhsu/mozilla-central/js/src/vm/Interpreter.cpp:643)
 0:30.81 pid:19770 #29: js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) (/home/juhsu/mozilla-central/js/src/
jit/BaselineIC.cpp:2992)

The rejection patch

diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp
--- a/netwerk/ipc/DocumentLoadListener.cpp
+++ b/netwerk/ipc/DocumentLoadListener.cpp
@@ -1465,18 +1465,20 @@ void DocumentLoadListener::TriggerRedire
               ContentParentId(*aDestinationProcess));
       if (cp) {
         pid = cp->OtherPid();
       }
     }
 
     for (StreamFilterRequest& request : mStreamFilterRequests) {
       ParentEndpoint parent;
-      nsresult rv = extensions::PStreamFilter::CreateEndpoints(
-          pid, request.mChildProcessId, &parent, &request.mChildEndpoint);
+      nsresult rv = pid == 0 ? NS_ERROR_FAILURE
+                             : extensions::PStreamFilter::CreateEndpoints(
+                                   pid, request.mChildProcessId, &parent,
+                                   &request.mChildEndpoint);
 
       if (NS_FAILED(rv)) {
         request.mPromise->Reject(false, __func__);
         request.mPromise = nullptr;
       } else {
         parentEndpoints.AppendElement(std::move(parent));
       }
     }
Flags: needinfo?(matt.woodrow)

For some reason DocumentLoadListener's process switching is deciding to try to load the http URI in the parent process, which fails the stream listener, and then also hits the security check (since http should never load in the parent).

This doesn't happen in this test on try though, so there's got to be some extra factor involved.

Which m-c revision are you building? Any local patches?

Flags: needinfo?(matt.woodrow)

I can reproduce in current central without local patches in linux.
(I've reproduced in central 8 days ago as well.)
https://hg.mozilla.org/mozilla-central/rev/3add3a174755

IIRC it crashes in try but doesn't fail the test.

Flags: needinfo?(matt.woodrow)

The bug is closed. Hence I file bug 1649857 to move on

Flags: needinfo?(matt.woodrow)
Flags: needinfo?(mixedpuppy)
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: