Closed Bug 1650940 Opened 4 years ago Closed 2 years ago

Intermittent Assertion failure: aStream == mPipeOut, at /builds/worker/checkouts/gecko/dom/fetch/FetchStreamReader.cpp:192

Categories

(Core :: DOM: Workers, defect, P5)

defect

Tracking

()

RESOLVED FIXED
97 Branch
Tracking Status
firefox-esr91 --- wontfix
firefox95 --- wontfix
firefox96 --- wontfix
firefox97 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: jstutte)

Details

(Keywords: assertion, intermittent-failure)

Attachments

(1 file)

Filed by: rmaries [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer.html#?job_id=308750039&repo=mozilla-beta
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/OpFdjj9eS3ODfo8E_2pVFw/runs/0/artifacts/public/logs/live_backing.log


[task 2020-07-06T22:05:56.222Z] 22:05:56 INFO - TEST-START | dom/workers/test/test_readableStream_when_closing.html
[task 2020-07-06T22:05:56.344Z] 22:05:56 INFO - GECKO(7147) | [7147, Main Thread] WARNING: Failed to retarget HTML data delivery to the parser thread.: file /builds/worker/checkouts/gecko/parser/html/nsHtml5StreamParser.cpp, line 1131
[task 2020-07-06T22:05:56.503Z] 22:05:56 INFO - GECKO(7147) | [7147, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, nullptr) failed with result 0x804B000A (NS_ERROR_MALFORMED_URI): file /builds/worker/checkouts/gecko/extensions/permissions/Permission.cpp, line 46
[task 2020-07-06T22:05:56.504Z] 22:05:56 INFO - GECKO(7147) | [7147, Main Thread] WARNING: NS_ENSURE_TRUE(principal) failed: file /builds/worker/checkouts/gecko/extensions/permissions/Permission.cpp, line 58
[task 2020-07-06T22:05:56.702Z] 22:05:56 INFO - GECKO(7147) | [7147, StreamTrans #110] WARNING: A runnable was posted to a worker that is already shutting down!: file /builds/worker/checkouts/gecko/dom/workers/WorkerPrivate.cpp, line 1434
[task 2020-07-06T22:05:56.712Z] 22:05:56 INFO - GECKO(7147) | Assertion failure: aStream == mPipeOut, at /builds/worker/checkouts/gecko/dom/fetch/FetchStreamReader.cpp:192
[task 2020-07-06T22:05:56.712Z] 22:05:56 INFO - GECKO(7147) | #01: nsOutputStreamReadyEvent::Run() [xpcom/io/nsStreamUtils.cpp:184]
[task 2020-07-06T22:05:56.712Z] 22:05:56 INFO - GECKO(7147) | #02: mozilla::dom::(anonymous namespace)::ExternalRunnableWrapper::WorkerRun(JSContext*, mozilla::dom::WorkerPrivate*) [dom/workers/WorkerPrivate.cpp:181]
[task 2020-07-06T22:05:56.713Z] 22:05:56 INFO - GECKO(7147) | #03: mozilla::dom::WorkerRunnable::Run() [dom/workers/WorkerRunnable.cpp:370]
[task 2020-07-06T22:05:56.714Z] 22:05:56 INFO - GECKO(7147) | #04: mozilla::dom::(anonymous namespace)::WrappedControlRunnable::WorkerRun(JSContext*, mozilla::dom::WorkerPrivate*) [dom/workers/WorkerEventTarget.cpp:37]
[task 2020-07-06T22:05:56.718Z] 22:05:56 INFO - GECKO(7147) | #05: mozilla::dom::WorkerRunnable::Run() [dom/workers/WorkerRunnable.cpp:370]
[task 2020-07-06T22:05:56.720Z] 22:05:56 INFO - GECKO(7147) | #06: mozilla::dom::WorkerPrivate::ProcessAllControlRunnablesLocked() [dom/workers/WorkerPrivate.cpp:3528]
[task 2020-07-06T22:05:56.720Z] 22:05:56 INFO - GECKO(7147) | [7147, Main Thread] WARNING: A runnable was posted to a worker that is already shutting down!: file /builds/worker/checkouts/gecko/dom/workers/WorkerPrivate.cpp, line 1434
[task 2020-07-06T22:05:56.726Z] 22:05:56 INFO - GECKO(7147) | #07: mozilla::dom::WorkerPrivate::DoRunLoop(JSContext*) [dom/workers/WorkerPrivate.cpp:2884]
[task 2020-07-06T22:05:56.726Z] 22:05:56 INFO - GECKO(7147) | #08: mozilla::dom::workerinternals::(anonymous namespace)::WorkerThreadPrimaryRunnable::Run() [dom/workers/RuntimeService.cpp:2219]
[task 2020-07-06T22:05:56.730Z] 22:05:56 INFO - GECKO(7147) | #09: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1234]
[task 2020-07-06T22:05:56.731Z] 22:05:56 INFO - GECKO(7147) | #10: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:504]
[task 2020-07-06T22:05:56.732Z] 22:05:56 INFO - GECKO(7147) | #11: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:332]
[task 2020-07-06T22:05:56.733Z] 22:05:56 INFO - GECKO(7147) | #12: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:316]
[task 2020-07-06T22:05:56.734Z] 22:05:56 INFO - GECKO(7147) | #13: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:292]
[task 2020-07-06T22:05:56.737Z] 22:05:56 INFO - GECKO(7147) | #14: nsThread::ThreadFunc(void*) [xpcom/threads/nsThread.cpp:449]
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | #15: _pt_root [nsprpub/pr/src/pthreads/ptthread.c:204]
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - fix-stacks error: failed to read breakpad symbols dir /builds/worker/workspace/build/symbols/libpthread.so.0 for /lib/x86_64-linux-gnu/libpthread.so.0
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - fix-stacks note: this is expected and harmless for system libraries on debug automation runs
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | #16: ??? [/lib/x86_64-linux-gnu/libpthread.so.0 + 0x76db]
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | #17: clone [/lib/x86_64-linux-gnu/libc.so.6 + 0x12188f]
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | #18: ??? (???:???)
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | ExceptionHandler::GenerateDump cloned child 7412
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | ExceptionHandler::SendContinueSignalToChild sent continue signal to child
[task 2020-07-06T22:05:56.765Z] 22:05:56 INFO - GECKO(7147) | ExceptionHandler::WaitForContinueSignal waiting for continue signal...
[task 2020-07-06T22:05:56.922Z] 22:05:56 INFO - TEST-INFO | Main app process: exit 11

We expect the input stream to be the same we already know. BTW, this seems to be the same for most implementations of OnOutputStreamReady but this special case, which makes me feel a bit unsure, if we really need this parameter in general.

I see no obvious cause for this, though. Maybe it is totally unrelated, but I see a GC running on the main thread while this happens.

Flags: needinfo?(ssengupta)
Flags: needinfo?(amarchesini)

I would wait until we see more crashes. As far as I know, nothing has changed on the outputStream lately, and that code follows that the XPCOM IDL says: "aStream The stream whose asyncWait method was called."
https://searchfox.org/mozilla-central/rev/af5cff556a9482d7aa2267a82f2ccfaf18e797e9/xpcom/io/nsIAsyncOutputStream.idl#97-102

Flags: needinfo?(amarchesini)
Flags: needinfo?(ssengupta)
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → INCOMPLETE
Status: RESOLVED → REOPENED
Resolution: INCOMPLETE → ---
Status: REOPENED → RESOLVED
Closed: 4 years ago3 years ago
Resolution: --- → INCOMPLETE
Status: RESOLVED → REOPENED
Resolution: INCOMPLETE → ---
Status: REOPENED → RESOLVED
Closed: 3 years ago3 years ago
Resolution: --- → INCOMPLETE
Status: RESOLVED → REOPENED
Resolution: INCOMPLETE → ---

(In reply to Jens Stutte [:jstutte] from comment #2)

We expect the input stream to be the same we already know. BTW, this seems to be the same for most implementations of OnOutputStreamReady but this special case, which makes me feel a bit unsure, if we really need this parameter in general.

I see no obvious cause for this, though. Maybe it is totally unrelated, but I see a GC running on the main thread while this happens.

(In reply to Andrea Marchesini [:baku] from comment #3)

I would wait until we see more crashes. As far as I know, nothing has changed on the outputStream lately, and that code follows that the XPCOM IDL says: "aStream The stream whose asyncWait method was called."
https://searchfox.org/mozilla-central/rev/af5cff556a9482d7aa2267a82f2ccfaf18e797e9/xpcom/io/nsIAsyncOutputStream.idl#97-102

It's still there. We are coming from nsOutputStreamReadyEvent thus we know that mStream is not null and we even hold a strong reference to it in this event. Given the few places we manipulate mPipeOut I must assume, we somehow executed FetchStreamReader::CloseAndRelease while this event was in flight. We might want to move this assert after the explicit check if we are already closed?

Flags: needinfo?(bugs)

(In reply to Jens Stutte [:jstutte] from comment #18)

I must assume, we somehow executed FetchStreamReader::CloseAndRelease while this event was in flight. We might want to move this assert after the explicit check if we are already closed?

So bug 1128959 comment 105 actually suggest the very same:

I think we should check mStreamClosed here before doing anything. Its possible the StreamReady runnable is in the event queue when the stream is closed. We should short-circuit any further action here.

Then the asserts should just move after the check here.

Assignee: nobody → jstutte
Pushed by jstutte@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/d5746efda226
Only assert FetchStreamReader members in OnOutputStreamReady if we are not closed. r=smaug
Status: REOPENED → RESOLVED
Closed: 3 years ago2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 97 Branch
Flags: needinfo?(bugs)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: