Closed Bug 2032944 Opened 1 month ago Closed 13 days ago

poki.com - Game fails to fully load, stopping at 80% and blocking users from entering the game

Categories

(Web Compatibility :: Site Reports, defect, P2)

Desktop
Windows 10

Tracking

(Webcompat Priority:P1, Webcompat Score:8, firefox149 wontfix, firefox150 wontfix, firefox151 verified, firefox152 fixed)

VERIFIED FIXED
152 Branch
Webcompat Priority P1
Webcompat Score 8
Tracking Status
firefox149 --- wontfix
firefox150 --- wontfix
firefox151 --- verified
firefox152 --- fixed

People

(Reporter: bfarkas, Assigned: padenot, NeedInfo)

References

()

Details

(Keywords: webcompat:platform-bug, webcompat:site-report, Whiteboard: [webcompat-source:web-bugs][webcompat:sightline][webcompat:japan][webcompat:core])

User Story

user-impact-score:900
platform:windows,mac,linux,android
impact:feature-broken
configuration:general
affects:all
branch:release
diagnosis-team:media

Attachments

(6 files, 1 obsolete file)

Environment:
Operating system: Windows 10 / Android
Firefox version: Firefox 149.0 / Firefox Nightly 151.0a1 (2026-04-17)

Steps to reproduce:

  1. Access: https://poki.com/en/g/doodle-god
  2. Observe the page

Expected Behavior:
The progress loads until 100% and the game can be started accordingly

Actual Behavior:
Game fails to fully load, stopping at 80% and blocking users from entering the game

Notes:

  • Reproduces regardless of the status of ETP
  • Reproduces in firefox-nightly, and firefox-release
  • Does not reproduce in chrome

Created from https://github.com/webcompat/web-bugs/issues/216331

Since nightly and release are affected, beta will likely be affected too.
For more information, please visit BugBot documentation.

Whiteboard: [webcompat-source:web-bugs] → [webcompat-source:web-bugs][webcompat:sightline][webcompat:japan][webcompat:core]
User Story: (updated)
Webcompat Priority: --- → P3
Webcompat Score: --- → 1

I see a flood of

Uncaught (in promise) DOMException: The buffer passed to decodeAudioData contains invalid content which cannot be decoded successfully.

in the console, so media is probably a good starting point.

Severity: -- → S2
User Story: (updated)
Webcompat Priority: P3 → P2
Webcompat Score: 1 → 7
Priority: -- → P2
User Story: (updated)
Webcompat Priority: P2 → P1
Webcompat Score: 7 → 8

Automated reproduction using Playwright headless browsers confirms the Firefox vs Chrome difference:

  • Chrome (headless): Game loads fully and displays the main menu (Play, Options, Achievements). See attached chrome-initial.png.
  • Firefox (headless): Game fails with "WebGL not detected!" on a black screen. See attached firefox-initial.png.

Note: In our headless Playwright Firefox environment, WebGL is not available, so the game fails earlier than described in the bug (at the WebGL detection stage rather than reaching 80% loading). On a real Firefox with WebGL support, the game likely gets further but then stalls — likely at the audio loading stage, consistent with the decodeAudioData errors Dennis noted in comment 3.

Console error differences:

  • Firefox: Flood of CORS-blocked requests to stats.doodlegod.com (100+ errors) + CSP violations blocking google-analytics.com.
  • Chrome: Same stats.doodlegod.com requests fail with ERR_NAME_NOT_RESOLVED but the game loads anyway.

The CORS errors are interesting — Firefox blocks these as CORS failures, while Chrome reports them as DNS resolution failures. Both browsers fail the same requests, but the game handles the failure gracefully only in Chrome. However, since these are just stats/analytics requests, they shouldn't block the game itself.

The root cause on real Firefox with GPU is most likely the decodeAudioData failures as noted in comment 3, causing the loading to hang at 80%.

This is an automated analysis result. If this result is incorrect please add a needinfo and feel free to correct the error.

Looks like there is an issue with WebGL in headless that only reproduces in Firefox (this is Firefox as embedded by Playwright). Do you happen to know anything about this, Jeff?

User Story: (updated)
Flags: needinfo?(jmuizelaar)

It's not surprising that headless mode has disabled WebGL

Attached file intro_1.ogg

The attached file is not playing in Firefox, but fine in Chrome. Paul, any idea?

Flags: needinfo?(padenot)

Elisa gets the length right but the audio also doesn't play.

On a debug build I see:

[Child 331150, MediaPDecoder #1] ###!!! ASSERTION: Packet must have gp by now: 'packet->granulepos != -1', file dom/media/ogg/OggCodecState.cpp:552
[331150] Assertion failure: mIsValid (Invalid checked integer (division by zero or integer overflow)), at dist/include/mozilla/CheckedInt.h:316

Stack for the failure is:

#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
#1  0x00007ff0aa69339c in __internal_syscall_cancel (a1=a1@entry=0, a2=a2@entry=0, a3=a3@entry=140671052061072, a4=a4@entry=140671052061072, a5=a5@entry=0, a6=a6@entry=0, nr=230) at cancellation.c:49
#2  0x00007ff0aa6e3452 in __GI___clock_nanosleep (clock_id=<optimized out>, clock_id@entry=0, flags=flags@entry=0, req=req@entry=0x7ff088169990, rem=rem@entry=0x7ff088169990) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#3  0x00007ff0aa6ef537 in __GI___nanosleep (req=req@entry=0x7ff088169990, rem=rem@entry=0x7ff088169990) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#4  0x00007ff0aa701b8e in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#5  0x00007ff097d0f950 in common_crap_handler (signum=signum@entry=11, aFirstFramePC=<optimized out>) at ./../../../toolkit/xre/nsSigHandlers.cpp:104
#6  0x00007ff097d0fa6e in child_ah_crap_handler (signum=11) at ./../../../toolkit/xre/nsSigHandlers.cpp:118
#7  0x00007ff0993f00b9 in WasmTrapHandler (signum=11, info=0x7ff088169bf0, context=0x7ff088169ac0) at ./../../../../js/src/wasm/WasmSignalHandlers.cpp:819
#8  0x00007ff0aa63e2d0 in <signal handler called> () at /usr/lib/libc.so.6
#9  0x00007ff094d31412 in MOZ_CrashSequence (aAddress=0x0, aLine=316) at ../../dist/include/mozilla/Assertions.h:261
#10 mozilla::CheckedInt<long>::value (this=<optimized out>) at ../../dist/include/mozilla/CheckedInt.h:314
#11 mozilla::media::TimeUnit::IsPositiveOrZero (this=<optimized out>) at ./../../../dom/media/TimeUnits.cpp:169
#12 0x00007ff09508c0c0 in mozilla::OggCodecState::PacketOutAsMediaRawData (this=0x7ff0883e9c00) at ./../../../../dom/media/ogg/OggCodecState.cpp:267
#13 0x00007ff09509b976 in mozilla::OggTrackDemuxer::NextSample (this=this@entry=0x7ff086d464f0) at ./../../../../dom/media/ogg/OggDemuxer.cpp:1377
#14 0x00007ff09509c984 in mozilla::OggTrackDemuxer::GetSamples (this=0x7ff086d464f0, aNumSamples=1) at ./../../../../dom/media/ogg/OggDemuxer.cpp:1450
#15 0x00007ff094c768ac in mozilla::MediaFormatReader::DemuxerProxy::Wrapper::GetSamples(int)::{lambda()#1}::operator()() const (this=<optimized out>) at ./../../../dom/media/MediaFormatReader.cpp:700
#16 mozilla::detail::ProxyFunctionRunnable<mozilla::MediaFormatReader::DemuxerProxy::Wrapper::GetSamples(int)::{lambda()#1}, mozilla::MozPromise<RefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::MediaResult, true> >::Run()
    (this=0x7ff086d05830) at ../../dist/include/mozilla/MozPromise.h:1836
#17 0x00007ff09076518d in mozilla::TaskQueue::Runner::Run (this=0x7ff086d46610) at ./../../../xpcom/threads/TaskQueue.cpp:309
#18 0x00007ff09077d60f in nsThreadPool::Run (this=0x7ff086d64820) at ./../../../xpcom/threads/nsThreadPool.cpp:442
#19 0x00007ff09077556c in nsThread::ProcessNextEvent (this=0x7ff086d09240, aMayWait=<optimized out>, aResult=0x7ff086720a3f) at ./../../../xpcom/threads/nsThread.cpp:1173
#20 0x00007ff09077ab00 in NS_ProcessNextEvent (aThread=0x7ff0aa80b740 <_IO_stdfile_2_lock>, aThread@entry=0x7ff086d09240, aMayWait=false) at ./../../../xpcom/threads/nsThreadUtils.cpp:465
#21 0x00007ff091358527 in mozilla::ipc::MessagePumpForNonMainThreads::Run (this=0x7ff08695ffc0, aDelegate=0x7ff086720b00) at ./../../../ipc/glue/MessagePump.cpp:297
#22 0x00007ff0912941c2 in MessageLoop::RunHandler (this=0x7ff0aa80b740 <_IO_stdfile_2_lock>) at ./../../../ipc/chromium/src/base/message_loop.cc:364
#23 MessageLoop::Run (this=0x7ff0aa80b740 <_IO_stdfile_2_lock>) at ./../../../ipc/chromium/src/base/message_loop.cc:346
#24 0x00007ff09077116b in nsThread::ThreadFunc (aArg=0x7ff08692b8e0) at ./../../../xpcom/threads/nsThread.cpp:374
#25 0x00007ff0aad584fd in _pt_root (arg=arg@entry=0x7ff086929940) at ./../../../../../nsprpub/pr/src/pthreads/ptthread.c:190
#26 0x000055738c59283e in set_alt_signal_stack_and_start (params=<optimized out>) at ./../../../mozglue/interposers/pthread_create_interposer.cpp:81
#27 0x00007ff0aa69697a in start_thread (arg=<optimized out>) at pthread_create.c:454

This fixes the issue here. Whether it's correct, you tell me :)

Assignee: nobody → emilio
Status: NEW → ASSIGNED

I have a patch that fixes the playback there and allows me to play the game.

(In reply to Emilio Cobos Álvarez [:emilio] from comment #8)

It's not surprising that headless mode has disabled WebGL

Can you elaborate why? This is not the case for Chrome headless.

Flags: needinfo?(emilio)

I forget the exact heuristics, but we disable webgl if we think it's going to have poor performance (no driver etc). We might want to force-enable it for playwright or what not?

Flags: needinfo?(emilio)

(In reply to Emilio Cobos Álvarez [:emilio] from comment #15)

I forget the exact heuristics, but we disable webgl if we think it's going to have poor performance (no driver etc). We might want to force-enable it for playwright or what not?

Yea, I assume there is a force-enabled pref to override this behavior?

User Story: (updated)
Webcompat Priority: P1 → P2
Webcompat Score: 8 → 7
Flags: needinfo?(jmuizelaar)
Attachment #9575074 - Attachment is obsolete: true
User Story: (updated)
Webcompat Priority: P2 → P1
Webcompat Score: 7 → 8
Pushed by padenot@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/9eb28eae3c23 https://hg.mozilla.org/integration/autoland/rev/e9921bbc20d1 Fix Vorbis preroll crash by using INT64_MIN as unset granulepos sentinel. r=media-playback-reviewers,alwu
Pushed by ctuns@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/68a3fd1d1714 https://hg.mozilla.org/integration/autoland/rev/44e376c44bf1 Revert "Bug 2032944 - Fix Vorbis preroll crash by using INT64_MIN as unset granulepos sentinel. r=media-playback-reviewers,alwu" for causing reftest failures in bug2032944.html

Backed out for causing reftest failures

User Story: (updated)
Flags: needinfo?(padenot)
Pushed by padenot@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/555402b1af8c https://hg.mozilla.org/integration/autoland/rev/ded7b6d6e8c9 Fix Vorbis preroll crash by using INT64_MIN as unset granulepos sentinel. r=media-playback-reviewers,alwu
Pushed by agoloman@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/e0289d6d6cc8 https://hg.mozilla.org/integration/autoland/rev/1e8a208aa2a5 Revert "Bug 2032944 - Fix Vorbis preroll crash by using INT64_MIN as unset granulepos sentinel. r=media-playback-reviewers,alwu" for causing crashtest @failuresbug2032944.html

Backed out for causing crashtest @failuresbug2032944.html

Flags: needinfo?(emilio)
Assignee: emilio → padenot
Flags: needinfo?(emilio)
Pushed by padenot@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/4393b7b7ea81 https://hg.mozilla.org/integration/autoland/rev/5b0089cf6fff Fix Vorbis preroll crash by using INT64_MIN as unset granulepos sentinel. r=media-playback-reviewers,alwu
Status: ASSIGNED → RESOLVED
Closed: 13 days ago
Resolution: --- → FIXED
Target Milestone: --- → 152 Branch

Padenot, can you consider adding a beta uplift request on this?
Depending on the risk we could take it for Fx151

Attachment #9585069 - Flags: approval-mozilla-beta?

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: Web compat: a game doesn't work, because a valid file errors out instead of being decoded.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: Edge case, we have a test.
  • String changes made/needed?: none
  • Is Android affected?: yes
Attachment #9585069 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

Verified, the issue no longer reproduces.

Tested with:

  • Browser / Version: Firefox 151.0-candidate build 1
  • Operating System: Windows 10
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: