Closed Bug 1913311 Opened 1 month ago Closed 29 days ago

MOZ_ASSERT(mDecoder) [@ mozilla::DecoderAgent::Shutdown] | /webcodecs/audioDecoder-codec-specific.https.any.worker.html?adts_aac

Categories

(Core :: Audio/Video: Web Codecs, defect, P1)

defect

Tracking

()

RESOLVED FIXED
131 Branch
Tracking Status
firefox131 --- fixed

People

(Reporter: chunmin, Assigned: chunmin)

References

(Blocks 1 open bug)

Details

Attachments

(3 files)

The MOZ_ASSERT(mDecoder) crash was found in https://treeherder.mozilla.org/logviewer?job_id=470390514&repo=try&lineNumber=1391 on the Windows platform. I suspect this happens on all kinds of platforms. Below is the crash stack.

[task 2024-08-14T15:44:45.170Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.170Z] 15:44:45     INFO - 16  xul.dll!nsThread::ThreadFunc(void*) [nsThread.cpp:2aa70dfdf82c75386a02320758a8203ff51c02e3 : 370 + 0x6]
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      eip = 0x64c49da0    esp = 0x150ffd00    ebp = 0x150ffdfc    ebx = 0x0000000a
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      esi = 0x150ffd18    edi = 0x1269c1b4
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO - 17  nss3.dll!_PR_NativeRunThread(void*) [pruthr.c:2aa70dfdf82c75386a02320758a8203ff51c02e3 : 399 + 0xe]
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      eip = 0x714db0c4    esp = 0x150ffe04    ebp = 0x150ffe20    ebx = 0x1269c1b0
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      esi = 0x0d757190    edi = 0x0d757240
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO - 18  nss3.dll!pr_root(void*) [w95thred.c:2aa70dfdf82c75386a02320758a8203ff51c02e3 : 139 + 0xe]
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      eip = 0x714ccfe6    esp = 0x150ffe28    ebp = 0x150ffe30    ebx = 0x74ec59a0
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      esi = 0x0d757190    edi = 0x04b9b548
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO - 19  ucrtbase.dll!thread_start<unsigned int (__stdcall*)(void *),1> + 0x42
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      eip = 0x74ec59e3    esp = 0x150ffe38    ebp = 0x150ffe68    ebx = 0x74ec59a0
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      esi = 0x714ccfd0    edi = 0x04b9b548
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO - 20  kernel32.dll!BaseThreadInitThunk + 0x18
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      eip = 0x75a57ba9    esp = 0x150ffe70    ebp = 0x150ffe78    ebx = 0x74ec59a0
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -      esi = 0x714ccfd0    edi = 0x04b9b548
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.171Z] 15:44:45     INFO - 21  mozglue.dll!mozilla::interceptor::FuncHook<mozilla::interceptor::WindowsDllInterceptor<mozilla::interceptor::VMSharingPolicyShared>,void (*)(int, void *, void *) __attribute__((fastcall))>::operator()(int&, void*&, void*&) const [nsWindowsDllInterceptor.h:2aa70dfdf82c75386a02320758a8203ff51c02e3 : 150]
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -     Found by: inlining
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO - 22  mozglue.dll!patched_BaseThreadInitThunk(int, void*, void*) [WindowsDllBlocklist.cpp:2aa70dfdf82c75386a02320758a8203ff51c02e3 : 562 + 0x13]
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -      eip = 0x718fe520    esp = 0x150ffe80    ebp = 0x150ffeac    ebx = 0x74ec59a0
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -      esi = 0x714ccfd0    edi = 0x04b9b548
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO - 23  ntdll.dll!__RtlUserThreadStart + 0x2a
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -      eip = 0x7728c10b    esp = 0x150ffeb4    ebp = 0x150fff04    ebx = 0x04b9b548
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -      esi = 0x75a57b90    edi = 0x74ec59a0
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -     Found by: call frame info
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO - 24  ntdll.dll!_RtlUserThreadStart + 0x1a
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -      eip = 0x7728c08f    esp = 0x150fff0c    ebp = 0x150fff14    ebx = 0x04b9b548
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -      esi = 0x75a57b90    edi = 0x74ec59a0
[task 2024-08-14T15:44:45.172Z] 15:44:45     INFO -     Found by: call frame info

The logs below from https://treeherder.mozilla.org/logviewer?job_id=470912629&repo=try&lineNumber=5603 indicates that DecoderAgent::Shutdown() called after mPDMFactory->CreateDecoder fails leads to the failure of the assertion since mDecoder is not set after decoder creation has been completed.

[task 2024-08-19T16:35:27.751Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Create a AudioInfo from mp4a.40.2 config
[task 2024-08-19T16:35:27.752Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs The given config has 2 bytes of description data
[task 2024-08-19T16:35:27.753Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Created AudioInfo mp4a.40.2 (1ch 48000Hz - with extra-data: yes)
[task 2024-08-19T16:35:27.754Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs IsSupportedAudioCodec: mp4a.40.2
[task 2024-08-19T16:35:27.755Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #43 (21fe44d7ea0) ctor
[task 2024-08-19T16:35:27.755Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d06700 creates DecoderAgent #43 @ 21fe44d7ea0 and its shutdown-blocker
[task 2024-08-19T16:35:27.756Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d06700 now blocks message-queue-processing
[task 2024-08-19T16:35:27.757Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #43 (21fe44d7ea0) state change: Unconfigured -> Configuring
[task 2024-08-19T16:35:27.757Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #43 (21fe44d7ea0) is creating a decoder - PreferSW: no, low-latency: no
[task 2024-08-19T16:35:27.758Z] 16:35:27     INFO - PID 7600 | [Utility AudioDecoder 1760, MediaSupervisor #1] WARNING: NS_ENSURE_TRUE(SUCCEEDED(hr)) failed: file /builds/worker/checkouts/gecko/dom/media/platforms/wmf/MFTDecoder.cpp:113
[task 2024-08-19T16:35:27.759Z] 16:35:27     INFO - PID 7600 | [Utility AudioDecoder 1760, MediaSupervisor #1] WARNING: NS_ENSURE_TRUE(SUCCEEDED(hr)) failed: file /builds/worker/checkouts/gecko/dom/media/platforms/wmf/WMFAudioMFTManager.cpp:133
[task 2024-08-19T16:35:27.760Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00 ctor
[task 2024-08-19T16:35:27.761Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, Close
[task 2024-08-19T16:35:27.762Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00 has no DecoderAgent to destroy
[task 2024-08-19T16:35:27.763Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00 now has its message queue unblocked
[task 2024-08-19T16:35:27.763Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, Configure: codec mp4a.40.2
[task 2024-08-19T16:35:27.764Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Validating AudioDecoderConfig: codec: mp4a.40.2 1ch 48000Hz no extradata
[task 2024-08-19T16:35:27.765Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Configure: CodecState::Closed, rejecting with InvalidState
[task 2024-08-19T16:35:27.766Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, Reset
[task 2024-08-19T16:35:27.767Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, Close
[task 2024-08-19T16:35:27.767Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, Decode
[task 2024-08-19T16:35:27.768Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, Flush
[task 2024-08-19T16:35:27.769Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d46d00, wrong state!
[task 2024-08-19T16:35:27.770Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 ctor
[task 2024-08-19T16:35:27.771Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Configure: codec mp4a.40.2
[task 2024-08-19T16:35:27.771Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Validating AudioDecoderConfig: codec: mp4a.40.2 1ch 48000Hz no extradata
[task 2024-08-19T16:35:27.773Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Validating AudioDecoderConfig: codec: mp4a.40.2 1ch 48000Hz no extradata
[task 2024-08-19T16:35:27.773Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: W/WebCodecs Need to generate a specific config for mp4a.40.2: 1 channel, 48000 hz, default object type: 1
[task 2024-08-19T16:35:27.774Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Created default AAC specific config: 2 bytes
[task 2024-08-19T16:35:27.775Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 enqueues configure #44 (mp4a.40.2)
[task 2024-08-19T16:35:27.775Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 starts processing configure #44 (mp4a.40.2)
[task 2024-08-19T16:35:27.776Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 has no DecoderAgent to destroy
[task 2024-08-19T16:35:27.777Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Create a AudioInfo from mp4a.40.2 config
[task 2024-08-19T16:35:27.778Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs The given config has 2 bytes of description data
[task 2024-08-19T16:35:27.778Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs Created AudioInfo mp4a.40.2 (1ch 48000Hz - with extra-data: yes)
[task 2024-08-19T16:35:27.779Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs IsSupportedAudioCodec: mp4a.40.2
[task 2024-08-19T16:35:27.780Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #44 (21fe44d7f50) ctor
[task 2024-08-19T16:35:27.780Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 creates DecoderAgent #44 @ 21fe44d7f50 and its shutdown-blocker
[task 2024-08-19T16:35:27.781Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 now blocks message-queue-processing
[task 2024-08-19T16:35:27.782Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #44 (21fe44d7f50) state change: Unconfigured -> Configuring
[task 2024-08-19T16:35:27.783Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #44 (21fe44d7f50) is creating a decoder - PreferSW: no, low-latency: no
[task 2024-08-19T16:35:27.784Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.784Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #1 (config #44)
[task 2024-08-19T16:35:27.786Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.786Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #2 (config #44)
[task 2024-08-19T16:35:27.787Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.788Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #3 (config #44)
[task 2024-08-19T16:35:27.789Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.789Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #4 (config #44)
[task 2024-08-19T16:35:27.790Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.791Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #5 (config #44)
[task 2024-08-19T16:35:27.791Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.792Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #6 (config #44)
[task 2024-08-19T16:35:27.793Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.794Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #7 (config #44)
[task 2024-08-19T16:35:27.794Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.795Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #8 (config #44)
[task 2024-08-19T16:35:27.796Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.796Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #9 (config #44)
[task 2024-08-19T16:35:27.797Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Decode
[task 2024-08-19T16:35:27.798Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: V/WebCodecs AudioDecoder 21fe44c1a00 enqueues decode #10 (config #44)
[task 2024-08-19T16:35:27.798Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, Flush
[task 2024-08-19T16:35:27.799Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00 enqueues flush #1 (config #44), with unique id 43
[task 2024-08-19T16:35:27.800Z] 16:35:27     INFO - PID 7600 | [Utility AudioDecoder 1760, MediaSupervisor #1] WARNING: NS_ENSURE_TRUE(SUCCEEDED(hr)) failed: file /builds/worker/checkouts/gecko/dom/media/platforms/wmf/MFTDecoder.cpp:113
[task 2024-08-19T16:35:27.801Z] 16:35:27     INFO - PID 7600 | [Utility AudioDecoder 1760, MediaSupervisor #1] WARNING: NS_ENSURE_TRUE(SUCCEEDED(hr)) failed: file /builds/worker/checkouts/gecko/dom/media/platforms/wmf/WMFAudioMFTManager.cpp:133
[task 2024-08-19T16:35:27.802Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: E/WebCodecs DecoderAgent #43 (21fe44d7ea0) failed to create a decoder
[task 2024-08-19T16:35:27.803Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #43 (21fe44d7ea0) state change: Configuring -> Error
[task 2024-08-19T16:35:27.803Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: E/WebCodecs DecoderAgent #44 (21fe44d7f50) failed to create a decoder
[task 2024-08-19T16:35:27.804Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #44 (21fe44d7f50) state change: Configuring -> Error
[task 2024-08-19T16:35:27.805Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d06700, DecoderAgent #43 configure #43 (mp4a.40.2) has been rejected. now unblocks message-queue-processing
[task 2024-08-19T16:35:27.806Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: E/WebCodecs AudioDecoder 21fe1d06700, DecoderAgent #43 failed to configure: NS_ERROR_DOM_MEDIA_NOT_SUPPORTED_ERR (0x806e0003) - Utility MF Media Engine CDM only support for media engine playback
[task 2024-08-19T16:35:27.807Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe44c1a00, DecoderAgent #44 configure #44 (mp4a.40.2) has been rejected. now unblocks message-queue-processing
[task 2024-08-19T16:35:27.807Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: E/WebCodecs AudioDecoder 21fe44c1a00, DecoderAgent #44 failed to configure: NS_ERROR_DOM_MEDIA_NOT_SUPPORTED_ERR (0x806e0003) - Utility MF Media Engine CDM only support for media engine playback
[task 2024-08-19T16:35:27.809Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs AudioDecoder 21fe1d06700 destroys DecoderAgent #43 @ 21fe44d7ea0
[task 2024-08-19T16:35:27.809Z] 16:35:27     INFO - PID 7600 | [Child 9296: Main Thread]: D/WebCodecs DecoderAgent #43 (21fe44d7ea0) shutdown, state Error
[task 2024-08-19T16:35:27.809Z] 16:35:27     INFO - PID 7600 | [9296] Assertion failure: mDecoder, at /builds/worker/checkouts/gecko/dom/media/webcodecs/DecoderAgent.cpp:247

This patch introduces a test that demonstrates a crash occurring when
DecoderAgent::Shutdown is called without an active MediaDataDecoder.
The issue arises when PDMFactory::CreateDecoder in
DecoderAgent::Configure, rejects decoder creation, leaving
DecoderAgent::mDecoder as null. Subsequently, when
DecoderAgent::Shutdown is invoked, the assertion that checks for the
existence of mDecoder fails, leading to a crash.

To replicate this scenario, the test includes a pref that forces the use
of a NullDecoderModule, and ensures that this module rejects decoder
creation.

Depends on D219708

This patch addresses the crash issue by ensuring that
DecoderAgent::Shutdown can be safely called even when a
MediaDataDecoder is not present, resolving the crash mentioned in the
previous patch.

Additionally, this patch ensures that DecoderAgent::State is set to
State::Unconfigured before returning a resolved ShutdownPromise in
this case. This setting ensures Shutdown() has been executed properly
if Configure() was previously called, helping ~DecoderAgent to
maintain the check for the correct state.

Depends on D219709

Assignee: nobody → cchang
Attachment #9420038 - Attachment description: WIP: Bug 1913311 - Add log in DecoderAgent::Shutdown → Bug 1913311 - Add log in DecoderAgent::Shutdown
Attachment #9420039 - Attachment description: WIP: Bug 1913311 - Add a testcase → Bug 1913311 - Add a testcase
Attachment #9420040 - Attachment description: WIP: Bug 1913311 - Fix crash in DecoderAgent::Shutdown when MediaDataDecoder is absent → Bug 1913311 - Fix crash in DecoderAgent::Shutdown when MediaDataDecoder is absent
Pushed by cchang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/4ccb959d961f Add log in DecoderAgent::Shutdown r=media-playback-reviewers,aosmond https://hg.mozilla.org/integration/autoland/rev/6a1aef346365 Add a testcase r=media-playback-reviewers,aosmond https://hg.mozilla.org/integration/autoland/rev/1a4a6fac8bba Fix crash in DecoderAgent::Shutdown when MediaDataDecoder is absent r=media-playback-reviewers,aosmond
See Also: → 1914450
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: