Closed Bug 1676409 Opened 4 years ago Closed 3 years ago

Crash in [@ mozilla::MozPromise<T>::ThenValueBase::AssertIsDead]

Categories

(Core :: Printing: Output, defect, P2)

Desktop
Windows 7
defect

Tracking

()

RESOLVED FIXED
87 Branch
Fission Milestone M7
Tracking Status
firefox-esr78 --- unaffected
firefox84 --- wontfix
firefox85 --- wontfix
firefox86 --- wontfix
firefox87 --- fixed

People

(Reporter: csasca, Assigned: mattwoodrow)

References

(Blocks 1 open bug)

Details

(Keywords: crash, Whiteboard: [print2020_v88] [old-ui?])

Crash Data

Attachments

(1 file)

Maybe Fission related. (DOMFissionEnabled=1)

Crash report: https://crash-stats.mozilla.org/report/index/302024aa-ca97-43a1-8bfb-dc4f40201110

MOZ_CRASH Reason: MOZ_DIAGNOSTIC_ASSERT(Request::mDisconnected)

Top 10 frames of crashing thread:

0 xul.dll mozilla::MozPromise<CopyableTArray<bool>, bool, 0>::ThenValueBase::AssertIsDead xpcom/threads/MozPromise.h:447
1 xul.dll mozilla::MozPromise<long long, mozilla::dom::IOUtils::IOError, 1>::AssertIsDead xpcom/threads/MozPromise.h:1036
2 xul.dll mozilla::MozPromise<nsRefPtrHashtable<nsUint64HashKey, mozilla::gfx::RecordedDependentSurface>, nsresult, 1>::~MozPromise xpcom/threads/MozPromise.h:1077
3 xul.dll mozilla::MozPromise<nsRefPtrHashtable<nsUint64HashKey, mozilla::gfx::RecordedDependentSurface>, nsresult, 1>::Private::~Private xpcom/threads/MozPromise.h:1075
4 xul.dll mozilla::layout::RemotePrintJobParent::RecvProcessPage layout/printing/ipc/RemotePrintJobParent.cpp:130
5 xul.dll mozilla::layout::PRemotePrintJobParent::OnMessageReceived ipc/ipdl/PRemotePrintJobParent.cpp:295
6 xul.dll mozilla::dom::PContentParent::OnMessageReceived ipc/ipdl/PContentParent.cpp:6606
7 xul.dll mozilla::ipc::MessageChannel::DispatchMessage ipc/glue/MessageChannel.cpp:2074
8 xul.dll mozilla::ipc::MessageChannel::MessageTask::Run ipc/glue/MessageChannel.cpp:1953
9 xul.dll mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal xpcom/threads/TaskController.cpp:720

Preconditions

  • Have Fission and Webrender active

STR

  1. Launch Firefox
  2. Access main page for AOL.com
  3. Print preview the page, select the settings for the printer
  4. Click Print

Notes

  • After selecting print (wireless printing), I just got this crash report.
  • Model of printer: HP OfficeJet 6500 E710n-z, Windows 7 and 84.0a1 (2020-11-10)
Blocks: 133787, 1658287
Has Regression Range: --- → no
Has STR: --- → yes
Whiteboard: [print2020_v84] [old-ui?]

Setting to S3 given volume and that it's Fission-only. But will need to investigate, so putting this on the Fission M7 milestone for now.

Severity: -- → S3
Fission Milestone: --- → M7
Priority: -- → P2
Whiteboard: [print2020_v84] [old-ui?] → [print2020_v85] [old-ui?]
Whiteboard: [print2020_v85] [old-ui?] → [print2020_v88] [old-ui?]

It sounds like a promise is being destroyed without being rejected, resolved or disconnected. I think the parameters of the AssertIsDead calls are probably misleading, as the code is probably being deduplicated between these various instantiations, so the promise being rejected is probably the MozPromise<nsRefPtrHashtable<nsUint64HashKey, mozilla::gfx::RecordedDependentSurface>, nsresult, 1>, returned from CrossProcessPaint::Start.

I'm guessing that there is a rare scenario where the call to CrossProcessPaint::QueueDependencies ends up queuing no dependencies (e.g. due to aDependencies being empty or all dependencies having no wgp instance), where we end up never resolving the returned promise before it's dropped on the floor. The CrossProcessPaint code probably needs to be updated to fix this edgecase, even if it's fixed by making ~CrossProcessPaint() call Clear(NS_ERROR_FAILURE) or something like that (I don't know how this edge case should be handled, so...)

ni? :mattwoodrow, as IIRC you did the initial implementation here

Flags: needinfo?(matt.woodrow)
Assignee: nobody → matt.woodrow
Status: NEW → ASSIGNED
Flags: needinfo?(matt.woodrow)
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/2d92a6ed94ec
Attempt to resolve CrossProcessPaint objects for printing immediately, in case we didn't queue any dependencies. r=emilio
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 87 Branch
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: