Closed Bug 1631327 Opened 5 years ago Closed 5 years ago

Crash in [@ IPCError-browser | RecvPredLearn]

Categories

(Core :: Networking, defect, P1)

Unspecified
Windows 7
defect

Tracking

()

RESOLVED FIXED
mozilla79
Tracking Status
firefox-esr68 --- unaffected
firefox76 --- unaffected
firefox77 --- wontfix
firefox78 --- wontfix
firefox79 --- fixed

People

(Reporter: gsvelto, Assigned: mayhemer)

References

Details

(Keywords: crash, Whiteboard: [necko-triaged])

Crash Data

Attachments

(4 files, 1 obsolete file)

This bug is for crash report bp-48d53bb6-83b9-41b0-932f-925a60200418.

Top 10 frames of crashing thread:

0 ntdll.dll NtWaitForKeyedEvent 
1 ntdll.dll RtlSleepConditionVariableSRW 
2 kernel32.dll SleepConditionVariableSRW 
3 mozglue.dll mozilla::detail::ConditionVariableImpl::wait mozglue/misc/ConditionVariable_windows.cpp:50
4 xul.dll nsThread::ProcessNextEvent xpcom/threads/nsThread.cpp:1120
5 xul.dll NS_ProcessNextEvent xpcom/threads/nsThreadUtils.cpp:481
6 xul.dll mozilla::ipc::MessagePump::Run ipc/glue/MessagePump.cpp:109
7 xul.dll MessageLoop::RunHandler ipc/chromium/src/base/message_loop.cc:308
8 xul.dll MessageLoop::Run ipc/chromium/src/base/message_loop.cc:290
9 xul.dll nsBaseAppShell::Run widget/nsBaseAppShell.cpp:137

The oldest buildid with this failure is 20200414214610.

See Also: → 1631333

The RecvPredLearn signature is not in any of the crash reports. This seems to be XPCOM.

Component: Networking → XPCOM

No, it's just an issue with how we report this type of IPC error. The stack trace that the crash reports shown is from the content process and it will always be different. The crash stack that actually matters - and from which the signature is taken - is the one from the main process. I'll extract it manually and add it here.

This is the stack trace of the main process for this crash:

 0  xul.dll!CrashReporter::CreateMinidumpsAndPair(void*, unsigned long, nsTSubstring<char> const&, nsIFile*, mozilla::EnumeratedArray<CrashReporter::Annotation,CrashReporter::Annotation::Count,nsTString<char> >&, nsIFile**) [nsExceptionHandler.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 3776 + 0x15]
 1  xul.dll!mozilla::ipc::CrashReporterHost::GenerateMinidumpAndPair<mozilla::dom::ContentParent>(mozilla::dom::ContentParent*, nsIFile*, nsTSubstring<char> const&) [CrashReporterHost.h:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 71 + 0x13]
 2  xul.dll!mozilla::dom::ContentParent::GeneratePairedMinidump(char const*) [ContentParent.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 3374 + 0x8]
 3  xul.dll!mozilla::dom::ContentParent::KillHard(char const*) [ContentParent.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 3408 + 0x9]
 4  xul.dll!mozilla::dom::ContentParent::ProcessingError(mozilla::ipc::HasResultCodes::Result, char const*) [ContentParent.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1632 + 0x8]
 5  xul.dll!static mozilla::ipc::IPCResult::Fail(mozilla::NotNull<mozilla::ipc::IProtocol *>, char const*, char const*) [ProtocolUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 58 + 0xa]
 6  xul.dll!mozilla::net::NeckoParent::RecvPredLearn(nsIURI*, nsIURI*, unsigned int const&, mozilla::OriginAttributes const&) [NeckoParent.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 805 + 0x11]
 7  xul.dll!mozilla::net::PNeckoParent::OnMessageReceived(IPC::Message const&) [PNeckoParent.cpp: : 2501 + 0x1a]
 8  xul.dll!mozilla::dom::PContentParent::OnMessageReceived(IPC::Message const&) [PContentParent.cpp: : 6350 + 0x8]
 9  xul.dll!mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) [MessageChannel.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 2111 + 0x55]
10  xul.dll!mozilla::ipc::MessageChannel::MessageTask::Run() [MessageChannel.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1990 + 0xac]
11  xul.dll!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1200 + 0x6]
12  xul.dll!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 481 + 0x22]
13  xul.dll!nsComponentManagerImpl::GetServiceByContractID(char const*, nsID const&, void**) [nsComponentManager.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1560 + 0x444]
14  xul.dll!nsGetServiceByContractIDWithError::operator()(nsID const&, void**) const [nsComponentManagerUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 253 + 0x1b]
15  xul.dll!nsCOMPtr_base::assign_from_gs_contractid_with_error(nsGetServiceByContractIDWithError const&, nsID const&) [nsCOMPtr.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 91 + 0x8]
16  xul.dll!mozilla::net::Predictor::Init() [Predictor.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 387 + 0x1c]
17  xul.dll!static mozilla::net::Predictor::Create(nsISupports*, nsID const&, void**) [Predictor.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 467 + 0x8]
18  xul.dll!mozilla::xpcom::CreateInstanceImpl(mozilla::xpcom::ModuleID, nsISupports*, nsID const&, void**) [StaticComponents.cpp: : 11494 + 0x9]
19  xul.dll!nsComponentManagerImpl::GetServiceByContractID(char const*, nsID const&, void**) [nsComponentManager.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1560 + 0x1b0]
20  xul.dll!nsGetServiceByContractIDWithError::operator()(nsID const&, void**) const [nsComponentManagerUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 253 + 0x1b]
21  xul.dll!nsCOMPtr_base::assign_from_gs_contractid_with_error(nsGetServiceByContractIDWithError const&, nsID const&) [nsCOMPtr.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 91 + 0x8]
22  xul.dll!mozilla::net::NeckoParent::RecvPredPredict(nsIURI*, nsIURI*, unsigned int const&, mozilla::OriginAttributes const&, bool const&) [NeckoParent.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 781 + 0x14]
23  xul.dll!mozilla::net::PNeckoParent::OnMessageReceived(IPC::Message const&) [PNeckoParent.cpp: : 2438 + 0x1e]
24  xul.dll!mozilla::dom::PContentParent::OnMessageReceived(IPC::Message const&) [PContentParent.cpp: : 6350 + 0x8]
25  xul.dll!mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) [MessageChannel.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 2111 + 0x55]
26  xul.dll!mozilla::ipc::MessageChannel::MessageTask::Run() [MessageChannel.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1990 + 0xac]
27  xul.dll!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1200 + 0x6]
28  xul.dll!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 481 + 0x22]
29  xul.dll!nsThreadManager::SpinEventLoopUntilInternal(nsINestedEventLoopCondition*, bool) [nsThreadManager.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 693 + 0xa0]
30  xul.dll!nsThreadManager::SpinEventLoopUntil(nsINestedEventLoopCondition*) [nsThreadManager.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 672 + 0x7]
31  xul.dll!NS_InvokeByIndex + 0x27
32  xul.dll!static XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) [XPCWrappedNative.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1141 + 0x4c9]
33  xul.dll!XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) [XPCWrappedNativeJSOps.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 947 + 0x8]
34  xul.dll!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 584 + 0x13a]
35  xul.dll!Interpret(JSContext*, js::RunState&) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 3322 + 0x65]
36  xul.dll!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 619 + 0x47]
37  xul.dll!js::jit::InvokeFromInterpreterStub(JSContext*, js::jit::InterpreterStubExitFrameLayout*) [VMFunctions.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 289 + 0x210]
42  xul.dll!js::jit::MaybeEnterJit(JSContext*, js::RunState&) [Jit.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 200 + 0xfa]
43  xul.dll!Interpret(JSContext*, js::RunState&) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 3368 + 0x7]
44  xul.dll!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 619 + 0x47]
45  xul.dll!js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 664 + 0x6b]
46  xul.dll!js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName *>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) [SelfHosting.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1672 + 0x12]
47  xul.dll!js::jit::InterpretResume(JSContext*, JS::Handle<JSObject *>, JS::Value*, JS::MutableHandle<JS::Value>) [VMFunctions.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 995 + 0x11]
48  xul.dll!trunc + 0x7c8a4e
50  xul.dll!js::jit::MaybeEnterJit(JSContext*, js::RunState&) [Jit.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 200 + 0xfa]
51  xul.dll!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 619 + 0x14c]
52  xul.dll!js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 664 + 0x6b]
53  xul.dll!js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName *>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) [SelfHosting.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1672 + 0x12]
54  xul.dll!AsyncFunctionResume(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject *>, ResumeKind, JS::Handle<JS::Value>) [AsyncFunction.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 127 + 0xa]
55  xul.dll!PromiseReactionJob(JSContext*, unsigned int, JS::Value*) [Promise.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1823 + 0x7c]
56  xul.dll!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [Interpreter.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 584 + 0x13a]
57  xul.dll!JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) [jsapi.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 2803 + 0x8f]
58  xul.dll!mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) [PromiseBinding.cpp: : 28 + 0xb]
59  xul.dll!mozilla::CycleCollectedJSContext::PerformMicroTaskCheckPoint(bool) [CycleCollectedJSContext.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 644 + 0xd5]
60  xul.dll!mozilla::EventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event**, mozilla::dom::EventTarget*, nsEventStatus*, bool) [EventListenerManager.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1270 + 0x7]
61  xul.dll!static mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem>&, mozilla::EventChainPostVisitor&, mozilla::EventDispatchingCallback*, mozilla::ELMCreationDetector&) [EventDispatcher.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 558 + 0xfa]
62  xul.dll!static mozilla::EventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsEventStatus*, mozilla::EventDispatchingCallback*, nsTArray<mozilla::dom::EventTarget *>*) [EventDispatcher.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1055 + 0x19]
63  xul.dll!static mozilla::EventDispatcher::DispatchDOMEvent(nsISupports*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsPresContext*, nsEventStatus*) [EventDispatcher.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 0 + 0x7]
64  xul.dll!nsPresContext::FireDOMPaintEvent(nsTArray<nsRect>*, mozilla::layers::BaseTransactionId<mozilla::layers::TransactionIdType>, mozilla::TimeStamp) [nsPresContext.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1797 + 0x11]
65  xul.dll!DelayedFireDOMPaintEvent::Run() [nsPresContext.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1981 + 0x36]
66  xul.dll!static nsContentUtils::RemoveScriptBlocker() [nsContentUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 5381 + 0x6]
67  xul.dll!nsView::DidCompositeWindow(mozilla::layers::BaseTransactionId<mozilla::layers::TransactionIdType>, mozilla::TimeStamp const&, mozilla::TimeStamp const&) [nsView.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1100 + 0xb]
68  xul.dll!mozilla::layers::ClientLayerManager::DidComposite(mozilla::layers::BaseTransactionId<mozilla::layers::TransactionIdType>, mozilla::TimeStamp const&, mozilla::TimeStamp const&) [ClientLayerManager.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 512 + 0xf]
69  xul.dll!mozilla::layers::CompositorBridgeChild::RecvDidComposite(mozilla::layers::LayersId const&, mozilla::layers::BaseTransactionId<mozilla::layers::TransactionIdType> const&, mozilla::TimeStamp const&, mozilla::TimeStamp const&) [CompositorBridgeChild.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 533 + 0x15]
70  xul.dll!mozilla::layers::PCompositorBridgeChild::OnMessageReceived(IPC::Message const&) [PCompositorBridgeChild.cpp: : 2485 + 0x16]
71  xul.dll!mozilla::layers::PCompositorManagerChild::OnMessageReceived(IPC::Message const&) [PCompositorManagerChild.cpp: : 374 + 0x6]
72  xul.dll!mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) [MessageChannel.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 2111 + 0x55]
73  xul.dll!mozilla::ipc::MessageChannel::MessageTask::Run() [MessageChannel.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1990 + 0xac]
74  xul.dll!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 1200 + 0x6]
75  xul.dll!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 481 + 0x22]
76  xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [MessagePump.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 87 + 0xb]
77  xul.dll!MessageLoop::RunHandler() [message_loop.cc:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 308 + 0x8]
78  xul.dll!MessageLoop::Run() [message_loop.cc:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 290 + 0x5]
79  xul.dll!nsBaseAppShell::Run() [nsBaseAppShell.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 137 + 0xc]
80  xul.dll!nsAppShell::Run() [nsAppShell.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 406 + 0x6]
81  xul.dll!nsAppStartup::Run() [nsAppStartup.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 271 + 0x6]
82  xul.dll!XREMain::XRE_mainRun() [nsAppRunner.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 4608 + 0x6]
83  xul.dll!XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) [nsAppRunner.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 4743 + 0x7]
84  xul.dll!XRE_main(int, char**, mozilla::BootstrapConfig const&) [nsAppRunner.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 4797 + 0xb]
85  xul.dll!mozilla::BootstrapImpl::XRE_main(int, char**, mozilla::BootstrapConfig const&) [Bootstrap.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 45 + 0xe]
86  firefox.exe!NS_internal_main(int, char**, char**) [nsBrowserApp.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 331 + 0x83]
87  firefox.exe!wmain(int, wchar_t**) [nsWindowsWMain.cpp:88449c910b64bf796522d2ad30de03b17b5ad4b6 : 131 + 0x12]
88  firefox.exe!__scrt_common_main_seh() [exe_common.inl : 288 + 0x1c]
89  kernel32.dll!BaseThreadInitThunk + 0x12
90  ntdll.dll!__RtlUserThreadStart + 0x27
91  ntdll.dll!_RtlUserThreadStart + 0x1b
Attachment #9141890 - Attachment mime type: text/x-log → text/plain
Comment on attachment 9141890 [details] Full stack-trace taken from one of the crash reports I just realized that this is the wrong trace, I'll attach the right one.
Attachment #9141890 - Attachment is obsolete: true

This is the actual stack trace from the crash in comment 0.

Looks like the failure is here:

nsCOMPtr<nsINetworkPredictor> predictor =
do_GetService("@mozilla.org/network/predictor;1", &rv);
NS_ENSURE_SUCCESS(rv, IPC_FAIL_NO_REASON(this));

Component: XPCOM → Networking

Looking at the code a bit, it looks like maybe the predictor is expected to not always work? Maybe that last line could be changed to NS_ENSURE_SUCCESS(rv, IPC_OK()); to just ignore failures instead of crashing.

Thanks, can the stack extraction be made somehow more obvious for next time? I would not even know where to start (and that to have to start :)).

(In reply to Andrew McCreight [:mccr8] from comment #8)

Looking at the code a bit, it looks like maybe the predictor is expected to not always work? Maybe that last line could be changed to NS_ENSURE_SUCCESS(rv, IPC_OK()); to just ignore failures instead of crashing.

Agree. I would really be interested in how this can happen. Maybe worth to check senders' side quickly to add possible non-null checks or recent changes.

Assignee: nobody → honzab.moz
Priority: -- → P1
Whiteboard: [necko-triaged]

(In reply to Honza Bambas (:mayhemer) from comment #9)

Thanks, can the stack extraction be made somehow more obvious for next time? I would not even know where to start (and that to have to start :)).

We have bug 1110498 on file and there might also be better ways of gathering the crash stack. We just didn't have the time to work on it yet.

The severity field is not set for this bug.
:grover, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(agrover)
Severity: -- → S1
Flags: needinfo?(agrover)
Severity: S1 → S2
Pushed by honzab.moz@firemni.cz: https://hg.mozilla.org/integration/autoland/rev/ba58327ca852 Do not crash with IPC_FAIL when RecvPredLearn receives a null target URI, we handle it gracefully later, r=valentin,necko-reviewers
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla79

The patch landed in nightly and beta is affected.
:mayhemer, is this bug important enough to require an uplift?
If not please set status_beta to wontfix.

For more information, please visit auto_nag documentation.

Flags: needinfo?(honzab.moz)

Comment on attachment 9153391 [details]
Bug 1631327 - Do not crash with IPC_FAIL when RecvPredLearn receives a null target URI, we handle it gracefully later, r=valentin

Beta/Release Uplift Approval Request

  • User impact if declined: Possible (controlled) but unnecessary crash.
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): The patch does a controlled crash when an IPC message argument is null. But we are later handling nullness of this argument gracefully. So no need to crash. Why we were crashing is commented in phab on the patch.
  • String changes made/needed:
Flags: needinfo?(honzab.moz)
Attachment #9153391 - Flags: approval-mozilla-beta?

Looks like we're still crashing with this signature in nightly?

Flags: needinfo?(honzab.moz)

(In reply to Julien Cristau [:jcristau] from comment #17)

Looks like we're still crashing with this signature in nightly?

Thanks for keeping an eye on this!
Can you please remind me where I can see the actual crash stack?

Flags: needinfo?(honzab.moz) → needinfo?(jcristau)

Gabriele will probably know that. :)

Flags: needinfo?(jcristau) → needinfo?(gsvelto)

Meanwhile it's probably better to reopen.

Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: mozilla79 → ---
Attachment #9153391 - Flags: approval-mozilla-beta? → approval-mozilla-beta-

Yes. Note that w/o Gabriele's input - getting the stack trace - I can't move on this one.

I apologize for the delay. I'll analyze a recent dump and report back.

Here's the full stack trace of the main process of a recent crash (this one).

Flags: needinfo?(gsvelto)

Thanks!

This reveals an interesting problem in XPCOM... There are two IPC messages in the main thread queue: RecvPredPredict and RecvPredLearn. When RecvPredPredict is processed it tries to get the DNS service. It's, at the very same time, being first do_GetService'ed on the socket thread, so we start looping the main thread event queue in the component manager. This leads to processing the RecvPredLearn event and fails to get the predictor service, because we are recursing to get it...

I'm afraid that the only reasonable fix is to simply silently ignore when do_GetService for predictor fails.

Status: REOPENED → ASSIGNED
Pushed by honzab.moz@firemni.cz: https://hg.mozilla.org/integration/autoland/rev/45b4ced93987 Do not fail IPC when predictor service fails to be obtained because of a rare possibiliy of reentrancy in XPCOM component manager, r=valentin,necko-reviewers
Status: ASSIGNED → RESOLVED
Closed: 5 years ago5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla79
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: