Open Bug 1587589 Opened 1 year ago Updated 1 year ago

Intermittent android wpt /service-workers/service-worker/<test_name> | application crashed [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()]

Categories

(Core :: DOM: Service Workers, defect, P3)

defect

Tracking

()

People

(Reporter: intermittent-bug-filer, Unassigned)

References

Details

(Keywords: crash, intermittent-failure)

Crash Data

Filed by: ncsoregi [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer.html#?job_id=270535048&repo=autoland
Full log: https://queue.taskcluster.net/v1/task/UQVPUYT3TfSwygudOp18QQ/runs/0/artifacts/public/logs/live_backing.log


[task 2019-10-09T19:03:06.477Z] 19:03:06 INFO - TEST-START | /service-workers/service-worker/activation-after-registration.https.html
[task 2019-10-09T19:03:06.477Z] 19:03:06 INFO - Closing window 14
[task 2019-10-09T19:03:06.915Z] 19:03:06 INFO - IOError on command, setting status to CRASH
[task 2019-10-09T19:03:08.230Z] 19:03:08 INFO - mozcrash Downloading symbols from: https://queue.taskcluster.net/v1/task/NuqXympXQvmpD8mtIA3u4g/artifacts/public/build/target.crashreporter-symbols.zip
[task 2019-10-09T19:03:11.302Z] 19:03:11 INFO - mozcrash Copy/paste: /builds/worker/workspace/build/linux64-minidump_stackwalk /tmp/tmpnNFQDX/1c74e1aa-f59b-ffe8-767e-86797774281a.dmp /tmp/tmpQNCebo
[task 2019-10-09T19:03:14.092Z] 19:03:14 INFO - mozcrash Saved minidump as /builds/worker/workspace/build/blobber_upload_dir/1c74e1aa-f59b-ffe8-767e-86797774281a.dmp
[task 2019-10-09T19:03:14.093Z] 19:03:14 INFO - mozcrash Saved app info as /builds/worker/workspace/build/blobber_upload_dir/1c74e1aa-f59b-ffe8-767e-86797774281a.extra
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - PROCESS-CRASH | /service-workers/service-worker/activation-after-registration.https.html | application crashed [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()]
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Crash dump filename: /tmp/tmpnNFQDX/1c74e1aa-f59b-ffe8-767e-86797774281a.dmp
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Operating system: Android
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - 0.0.0 Linux 3.10.0+ #260 SMP PREEMPT Fri May 19 12:48:14 PDT 2017 x86_64
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - CPU: amd64
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - family 6 model 6 stepping 3
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - 4 CPUs
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO -
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - GPU: UNKNOWN
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO -
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Crash reason: SIGSEGV /SEGV_MAPERR
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Crash address: 0x0
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Process uptime: not available
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO -
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Thread 32 (crashed)
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - 0 libxul.so!mozilla::MozPromise<bool, nsresult, false>::DispatchAll() [MozPromise.h:3253e345e0dbb3f6681b1792cb552b322220e30a : 995 + 0x11]
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rax = 0x0000000000000000 rdx = 0x0000000000000001
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rcx = 0x0000000000000000 rbx = 0x00007b98193fdb00
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rsi = 0x00007b981b07cd08 rdi = 0x00007b98193fdb00
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rbp = 0x00007b981b07cd20 rsp = 0x00007b981b07cce0
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - r8 = 0x00007b98437ab83e r9 = 0xffffffffffffffff
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - r10 = 0x0000000000000000 r11 = 0x0000000000000246
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - r12 = 0x00007b9823f1fe4c r13 = 0x00007b9819695100
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - r14 = 0x00007b98193fdb50 r15 = 0x00007b9823e00b55
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rip = 0x00007b9820708710
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Found by: given as instruction pointer in context
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - 1 libxul.so!void mozilla::MozPromise<bool, nsresult, false>::Private::Reject<nsresult const&>(nsresult const&, char const*) [MozPromise.h:3253e345e0dbb3f6681b1792cb552b322220e30a : 1096 + 0x8]
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rbp = 0x00007b981b07cd50 rsp = 0x00007b981b07cd30
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rip = 0x00007b98207090e9
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - 2 libxul.so!void mozilla::MozPromiseHolder<mozilla::MozPromise<bool, nsresult, false> >::Reject<nsresult const&>(nsresult const&, char const*) [MozPromise.h:3253e345e0dbb3f6681b1792cb552b322220e30a : 1212 + 0xd]
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rbp = 0x00007b981b07cd70 rsp = 0x00007b981b07cd60
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rip = 0x00007b98206ebfac
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - 3 libxul.so!mozilla::dom::RemoteWorkerChild::ActorDestroy(mozilla::ipc::IProtocol::ActorDestroyReason) [RemoteWorkerChild.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 280 + 0x16]
[task 2019-10-09T19:03:14.218Z] 19:03:14 INFO - rbp = 0x00007b981b07cdd0 rsp = 0x00007b981b07cd80
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b9821b6408a
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 4 libxul.so!mozilla::ipc::IProtocol::DestroySubtree(mozilla::ipc::IProtocol::ActorDestroyReason) [ProtocolUtils.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 572 + 0xc]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07ce30 rsp = 0x00007b981b07cde0
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982080f7fe
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 5 libxul.so!mozilla::dom::PRemoteWorkerChild::OnMessageReceived(IPC::Message const&) [PRemoteWorkerChild.cpp: : 404 + 0x8]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07d210 rsp = 0x00007b981b07ce40
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982097bc30
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 6 libxul.so!mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) [PBackgroundChild.cpp: : 5876 + 0x10]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07dc10 rsp = 0x00007b981b07d220
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982090f50b
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 7 libxul.so!mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) [MessageChannel.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 2185 + 0x9]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07dd10 rsp = 0x00007b981b07dc20
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982080b90b
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 8 libxul.so!mozilla::ipc::MessageChannel::MessageTask::Run() [MessageChannel.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 1985 + 0xee]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07dd50 rsp = 0x00007b981b07dd20
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982080c1a6
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 9 libxul.so!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 1225 + 0x9]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e2a0 rsp = 0x00007b981b07dd60
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982047f51e
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 10 libxul.so!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 486 + 0x10]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e2d0 rsp = 0x00007b981b07e2b0
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b9820480c61
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 11 libxul.so!mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [MessagePump.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 333 + 0xb]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e310 rsp = 0x00007b981b07e2e0
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982080dcfb
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 12 libxul.so!MessageLoop::Run() [message_loop.cc:3253e345e0dbb3f6681b1792cb552b322220e30a : 290 + 0xc]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e350 rsp = 0x00007b981b07e320
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b98207e03e3
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 13 libxul.so!nsThread::ThreadFunc(void*) [nsThread.cpp:3253e345e0dbb3f6681b1792cb552b322220e30a : 458 + 0x8]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e3a0 rsp = 0x00007b981b07e360
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b982047dc1a
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 14 libnss3.so!_pt_root [ptthread.c:3253e345e0dbb3f6681b1792cb552b322220e30a : 201 + 0x7]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e3e0 rsp = 0x00007b981b07e3b0
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rip = 0x00007b98260efca4
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - Found by: previous frame's frame pointer
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - 15 libnss3.so!pt_recvfrom_cont [ptio.c:3253e345e0dbb3f6681b1792cb552b322220e30a : 0 + 0x5]
[task 2019-10-09T19:03:14.219Z] 19:03:14 INFO - rbp = 0x00007b981b07e3e0 rsp = 0x00007b981b07e3d0
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rip = 0x00007b98260efbb1
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - 16 libc.so + 0x89772
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rsp = 0x00007b981b07e3f0 rip = 0x00007b98437aa772
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - 17 libnss3.so!pt_recvfrom_cont [ptio.c:3253e345e0dbb3f6681b1792cb552b322220e30a : 0 + 0x5]
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rsp = 0x00007b981b07e428 rip = 0x00007b98260efbb1
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - 18 libc.so + 0x299ec
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rsp = 0x00007b981b07e440 rip = 0x00007b984374a9ec
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - 19 libc.so + 0x896c0
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rsp = 0x00007b981b07e448 rip = 0x00007b98437aa6c0
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - 20 libc.so + 0x1ca66
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rsp = 0x00007b981b07e450 rip = 0x00007b984373da66
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - 21 libnss3.so!pt_recvfrom_cont [ptio.c:3253e345e0dbb3f6681b1792cb552b322220e30a : 0 + 0x5]
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - rsp = 0x00007b981b07e4b8 rip = 0x00007b98260efbb1
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO - Found by: stack scanning
[task 2019-10-09T19:03:14.220Z] 19:03:14 INFO -

Summary: Intermittent /service-workers/service-worker/activation-after-registration.https.html | application crashed [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()] → Intermittent android wpt /service-workers/service-worker/<test_name> | application crashed [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()]
Duplicate of this bug: 1587925
Duplicate of this bug: 1587648
Duplicate of this bug: 1587623
Duplicate of this bug: 1586384
Priority: -- → P3
Duplicate of this bug: 1587949

So the general scenario in this bug is:

  • RemoteWorkerChild on the "Worker Launcher" thread in a content process is receiving a delete message.
  • This results in DestroySubtree being invoked for the RemoteWorkerChild which recursively destroys child actors before their parents.
    • PFetchEventOpProxy is managed by PRemoteWorker, so we expect FetchEventOpProxyChild instances to be destroyed before we reach this point.
    • Async "returns" IPC methods like PRemoteWorker::ExecServiceWorkerOp do not result in actors being created, but instead a std::function resolver lambda is created that uses an MFBT (non-thread-safe) WeakPtr which the lambda checks on entry so that it can ensure the actor is still alive. (So there's no destruction; it just turns into a no-op.)
  • The RemoteWorkerChild::ActorDestroy method is calling mTerminationPromise.RejectIfExists(NS_ERROR_DOM_ABORT_ERR, __func__);
  • mTerminationPromise is used by:
    • ServiceWorkerOp termination ops so they can resolve on termination.
    • Non-termination ServiceWorkerOps where when they bounce to the main thread to dispatch their runnable to the Worker they find that the worker is no longer Running.
  • There's a null access...

The disassembly at the point of crash looks like:

Faulting instruction pointer: 0x7b9820708710
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l995
  995     for (auto&& thenValue : mThenValues) {
   7b9820708710:	44 8b 20             	mov r12d, dword ptr [rax]
^^^^^^^^^^^^^^^^	^^^^^^^^^^^^^^^^^^^^^	^^^^^^^^^^^^^^^^^^^^^^^^^
   7b9820708713:	4d 85 e4             	test r12, r12
   7b9820708716:	74 27                	je 0x7b982070873f
   7b9820708718:	4c 8d 7d c8          	lea r15, qword ptr [rbp - 0x38]
  995     for (auto&& thenValue : mThenValues) {
   7b982070871c:	4c 89 ff             	mov rdi, r15
   7b982070871f:	e8 52 02 00 00       	call 0x7b9820708976
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/mfbt/RefPtr.h#l278
  278     return const_cast<T*>(mRawPtr);
   7b9820708724:	48 8b 38             	mov rdi, qword ptr [rax]
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l996
  996       thenValue->Dispatch(this);
   7b9820708727:	48 89 de             	mov rsi, rbx
   7b982070872a:	e8 57 02 00 00       	call 0x7b9820708986
  995     for (auto&& thenValue : mThenValues) {
   7b982070872f:	48 8b 45 d0          	mov rax, qword ptr [rbp - 0x30]
   7b9820708733:	48 ff c0             	inc rax
   7b9820708736:	48 89 45 d0          	mov qword ptr [rbp - 0x30], rax
   7b982070873a:	4c 39 e0             	cmp rax, r12
   7b982070873d:	75 dd                	jne 0x7b982070871c
  998     mThenValues.Clear();
   7b982070873f:	4c 89 f7             	mov rdi, r14
   7b9820708742:	e8 21 03 00 00       	call 0x7b9820708a68
 1000     for (auto&& chainedPromise : mChainedPromises) {
   7b9820708747:	49 89 de             	mov r14, rbx
   7b982070874a:	49 83 ee 80          	sub r14, -0x80
   7b982070874e:	4c 89 75 c8          	mov qword ptr [rbp - 0x38], r14
   7b9820708752:	48 83 65 d0 00       	and qword ptr [rbp - 0x30], 0
   7b9820708757:	48 8b 83 80 00 00 00 	mov rax, qword ptr [rbx + 0x80]
   7b982070875e:	44 8b 20             	mov r12d, dword ptr [rax]
   7b9820708761:	4d 85 e4             	test r12, r12
   7b9820708764:	74 27                	je 0x7b982070878d
   7b9820708766:	4c 8d 7d c8          	lea r15, qword ptr [rbp - 0x38]
 1000     for (auto&& chainedPromise : mChainedPromises) {
   7b982070876a:	4c 89 ff             	mov rdi, r15
   7b982070876d:	e8 12 03 00 00       	call 0x7b9820708a84
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/mfbt/RefPtr.h#l278
  278     return const_cast<T*>(mRawPtr);
   7b9820708772:	48 8b 30             	mov rsi, qword ptr [rax]
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l1001
 1001       ForwardTo(chainedPromise);
   7b9820708775:	48 89 df             	mov rdi, rbx
   7b9820708778:	e8 17 03 00 00       	call 0x7b9820708a94
 1000     for (auto&& chainedPromise : mChainedPromises) {
   7b982070877d:	48 8b 45 d0          	mov rax, qword ptr [rbp - 0x30]
   7b9820708781:	48 ff c0             	inc rax
   7b9820708784:	48 89 45 d0          	mov qword ptr [rbp - 0x30], rax
   7b9820708788:	4c 39 e0             	cmp rax, r12
   7b982070878b:	75 dd                	jne 0x7b982070876a
 1003     mChainedPromises.Clear();
   7b982070878d:	4c 89 f7             	mov rdi, r14

Full disassembly by reverting https://github.com/luser/rust-minidump/commit/aaa0e8cff6d4ec63cbdccd2a1b4df796dec35b24

Faulting instruction pointer: 0x7b9820708710
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l1065
 1065     PROMISE_ASSERT(mMagic1 == sMagic && mMagic2 == sMagic &&
   7b9820708690:	ff 90 55 48 89 e5    	call qword ptr [rax - 0x1a76b7ab]
  177     void SetResolve(ResolveValueType_&& aResolveValue) {
   7b9820708696:	53                   	push rbx
   7b9820708697:	48 83 ec 18          	sub rsp, 0x18
   7b982070869b:	64 48 8b 04 25 28 00 	mov rax, qword ptr fs:[0x28]
   7b98207086a2:	00 00                	
   7b98207086a4:	48 89 45 f0          	mov qword ptr [rbp - 0x10], rax
   7b98207086a8:	48 8d 5d e8          	lea rbx, qword ptr [rbp - 0x18]
  179       mValue = Storage(VariantIndex<ResolveIndex>{},
   7b98207086ac:	c6 43 04 01          	mov byte ptr [rbx + 4], 1
   7b98207086b0:	8a 06                	mov al, byte ptr [rsi]
   7b98207086b2:	88 03                	mov byte ptr [rbx], al
   7b98207086b4:	48 89 de             	mov rsi, rbx
   7b98207086b7:	e8 fa 00 00 00       	call 0x7b98207087b6
   7b98207086bc:	48 89 df             	mov rdi, rbx
   7b98207086bf:	e8 8a 02 00 00       	call 0x7b982070894e
   7b98207086c4:	64 48 8b 04 25 28 00 	mov rax, qword ptr fs:[0x28]
   7b98207086cb:	00 00                	
   7b98207086cd:	48 3b 45 f0          	cmp rax, qword ptr [rbp - 0x10]
   7b98207086d1:	75 07                	jne 0x7b98207086da
  181     }
   7b98207086d3:	48 83 c4 18          	add rsp, 0x18
   7b98207086d7:	5b                   	pop rbx
   7b98207086d8:	5d                   	pop rbp
   7b98207086d9:	c3                   	ret 
   7b98207086da:	e8 69 6a cd ff       	call 0x7b98203df148
   7b98207086df:	90                   	nop 
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l993
  993   void DispatchAll() {
   7b98207086e0:	55                   	push rbp
   7b98207086e1:	48 89 e5             	mov rbp, rsp
   7b98207086e4:	41 57                	push r15
   7b98207086e6:	41 56                	push r14
   7b98207086e8:	41 54                	push r12
   7b98207086ea:	53                   	push rbx
   7b98207086eb:	48 83 ec 20          	sub rsp, 0x20
   7b98207086ef:	48 89 fb             	mov rbx, rdi
   7b98207086f2:	64 48 8b 04 25 28 00 	mov rax, qword ptr fs:[0x28]
   7b98207086f9:	00 00                	
   7b98207086fb:	48 89 45 d8          	mov qword ptr [rbp - 0x28], rax
  995     for (auto&& thenValue : mThenValues) {
   7b98207086ff:	4c 8d 77 50          	lea r14, qword ptr [rdi + 0x50]
   7b9820708703:	4c 89 75 c8          	mov qword ptr [rbp - 0x38], r14
   7b9820708707:	48 83 65 d0 00       	and qword ptr [rbp - 0x30], 0
   7b982070870c:	48 8b 47 50          	mov rax, qword ptr [rdi + 0x50]
   7b9820708710:	44 8b 20             	mov r12d, dword ptr [rax]
^^^^^^^^^^^^^^^^	^^^^^^^^^^^^^^^^^^^^^	^^^^^^^^^^^^^^^^^^^^^^^^^
   7b9820708713:	4d 85 e4             	test r12, r12
   7b9820708716:	74 27                	je 0x7b982070873f
   7b9820708718:	4c 8d 7d c8          	lea r15, qword ptr [rbp - 0x38]
  995     for (auto&& thenValue : mThenValues) {
   7b982070871c:	4c 89 ff             	mov rdi, r15
   7b982070871f:	e8 52 02 00 00       	call 0x7b9820708976
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/mfbt/RefPtr.h#l278
  278     return const_cast<T*>(mRawPtr);
   7b9820708724:	48 8b 38             	mov rdi, qword ptr [rax]
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l996
  996       thenValue->Dispatch(this);
   7b9820708727:	48 89 de             	mov rsi, rbx
   7b982070872a:	e8 57 02 00 00       	call 0x7b9820708986
  995     for (auto&& thenValue : mThenValues) {
   7b982070872f:	48 8b 45 d0          	mov rax, qword ptr [rbp - 0x30]
   7b9820708733:	48 ff c0             	inc rax
   7b9820708736:	48 89 45 d0          	mov qword ptr [rbp - 0x30], rax
   7b982070873a:	4c 39 e0             	cmp rax, r12
   7b982070873d:	75 dd                	jne 0x7b982070871c
  998     mThenValues.Clear();
   7b982070873f:	4c 89 f7             	mov rdi, r14
   7b9820708742:	e8 21 03 00 00       	call 0x7b9820708a68
 1000     for (auto&& chainedPromise : mChainedPromises) {
   7b9820708747:	49 89 de             	mov r14, rbx
   7b982070874a:	49 83 ee 80          	sub r14, -0x80
   7b982070874e:	4c 89 75 c8          	mov qword ptr [rbp - 0x38], r14
   7b9820708752:	48 83 65 d0 00       	and qword ptr [rbp - 0x30], 0
   7b9820708757:	48 8b 83 80 00 00 00 	mov rax, qword ptr [rbx + 0x80]
   7b982070875e:	44 8b 20             	mov r12d, dword ptr [rax]
   7b9820708761:	4d 85 e4             	test r12, r12
   7b9820708764:	74 27                	je 0x7b982070878d
   7b9820708766:	4c 8d 7d c8          	lea r15, qword ptr [rbp - 0x38]
 1000     for (auto&& chainedPromise : mChainedPromises) {
   7b982070876a:	4c 89 ff             	mov rdi, r15
   7b982070876d:	e8 12 03 00 00       	call 0x7b9820708a84
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/mfbt/RefPtr.h#l278
  278     return const_cast<T*>(mRawPtr);
   7b9820708772:	48 8b 30             	mov rsi, qword ptr [rax]
https://hg.mozilla.org/integration/autoland/annotate/3253e345e0dbb3f6681b1792cb552b322220e30a/xpcom/threads/MozPromise.h#l1001
 1001       ForwardTo(chainedPromise);
   7b9820708775:	48 89 df             	mov rdi, rbx
   7b9820708778:	e8 17 03 00 00       	call 0x7b9820708a94
 1000     for (auto&& chainedPromise : mChainedPromises) {
   7b982070877d:	48 8b 45 d0          	mov rax, qword ptr [rbp - 0x30]
   7b9820708781:	48 ff c0             	inc rax
   7b9820708784:	48 89 45 d0          	mov qword ptr [rbp - 0x30], rax
   7b9820708788:	4c 39 e0             	cmp rax, r12
   7b982070878b:	75 dd                	jne 0x7b982070876a
 1003     mChainedPromises.Clear();
   7b982070878d:	4c 89 f7             	mov rdi, r14
Duplicate of this bug: 1591203
Duplicate of this bug: 1589853
Crash Signature: [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()] → [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()] [@ mozilla::MozPromise<bool, nsresult, false>::ThenValueBase::Dispatch(mozilla::MozPromise<bool, nsresult, false>*)]
Crash Signature: [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()] [@ mozilla::MozPromise<bool, nsresult, false>::ThenValueBase::Dispatch(mozilla::MozPromise<bool, nsresult, false>*)] → [@ mozilla::MozPromise<bool, nsresult, false>::DispatchAll()] [@ mozilla::MozPromise<bool, nsresult, false>::ThenValueBase::Dispatch(mozilla::MozPromise<bool, nsresult, false>*)] [@ mozilla::MozPromise<bool, nsresult, false>::Private::Reject<nsresult cons…
Duplicate of this bug: 1587451
Crash Signature: , false>::Private::Reject<nsresult const&>(nsresult const&, char const*)] → , false>::Private::Reject<nsresult const&>(nsresult const&, char const*)] [@ mozilla::MozPromise<bool, nsresult, true>::ThenInternal(already_AddRefed<mozilla::MozPromise<bool, nsresult, true>::ThenValueBase>, char const*)]
You need to log in before you can comment on or make changes to this bug.