From 724bb2349ea1b2789cc35ae594735735f2f56659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Sat, 4 Oct 2025 22:23:37 +0300 Subject: [PATCH 1/2] Update test skips and comments related to OffscreenCanvas tests in Firefox. --- .circleci/config.yml | 6 ------ test/test_browser.py | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c1e0a5816445b..2b917e75ced8b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1113,16 +1113,10 @@ jobs: # initial position of the mouse pointer relative to the canvas. # browser.test_html5_webgl_create_context is skipped because # anti-aliasing is not well supported. - # browser.test_webgl_offscreen_canvas_in_pthread and - # browser.test_webgl_offscreen_canvas_in_mainthread_after_pthread - # are crashing Firefox (bugzil.la/1281796). The former case is - # further blocked by issue #6897. test_targets: " browser skip:browser.test_sdl2_mouse skip:browser.test_html5_webgl_create_context - skip:browser.test_webgl_offscreen_canvas_in_pthread - skip:browser.test_webgl_offscreen_canvas_in_mainthread_after_pthread skip:browser.test_glut_glutget " test-browser-firefox-wasm64: diff --git a/test/test_browser.py b/test/test_browser.py index 5de846338809d..3126667b697ba 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -4241,6 +4241,8 @@ def test_utf16_textdecoder(self): # Tests that it is possible to initialize and render WebGL content in a # pthread by using OffscreenCanvas. @no_chrome('https://crbug.com/961765') + # Suffers from browser priority inversion deadlock problem: offscreenCanvas.getContext("webgl2") does not make progress in a pthread until main thread yields to event loop. + @no_firefox('https://bugzilla.mozilla.org/show_bug.cgi?id=1972240') @parameterized({ '': ([],), # -DTEST_CHAINED_WEBGL_CONTEXT_PASSING: @@ -4430,6 +4432,12 @@ def test_webgl_offscreen_canvas_in_proxied_pthread(self, asyncify): @requires_offscreen_canvas def test_webgl_resize_offscreencanvas_from_main_thread(self, args1, args2, args3): cmd = args1 + args2 + args3 + ['-pthread', '-lGL', '-sGL_DEBUG'] + + if is_firefox() and '-sOFFSCREENCANVAS_SUPPORT' in cmd and '-sPROXY_TO_PTHREAD' in cmd: + # Firefox is unable to transfer the same OffscreenCanvas multiple times across Workers + # (in a chained fashion, e.g. main thread -> proxy-to-pthread main thread -> back to main thread -> user pthread) + self.skipTest('https://bugzilla.mozilla.org/show_bug.cgi?id=1992576') + print(str(cmd)) self.btest_exit('test_webgl_resize_offscreencanvas_from_main_thread.c', cflags=cmd) From 10c7f005d750aa83c70a578f596a9a091e21bc82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Sat, 4 Oct 2025 22:59:07 +0300 Subject: [PATCH 2/2] Clarify that two bugs are affecting test_webgl_offscreen_canvas_in_pthread --- test/test_browser.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/test_browser.py b/test/test_browser.py index 3126667b697ba..a457e2a42326c 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -4241,8 +4241,9 @@ def test_utf16_textdecoder(self): # Tests that it is possible to initialize and render WebGL content in a # pthread by using OffscreenCanvas. @no_chrome('https://crbug.com/961765') - # Suffers from browser priority inversion deadlock problem: offscreenCanvas.getContext("webgl2") does not make progress in a pthread until main thread yields to event loop. - @no_firefox('https://bugzilla.mozilla.org/show_bug.cgi?id=1972240') + # The non-chained version suffers from browser priority inversion deadlock problem: offscreenCanvas.getContext("webgl2") does not make progress in a pthread until main thread yields to event loop. + # The chained version of this test suffers from bug https://bugzilla.mozilla.org/show_bug.cgi?id=1992576 + @no_firefox('https://bugzilla.mozilla.org/show_bug.cgi?id=1972240 (priority inversion deadlock) + https://bugzilla.mozilla.org/show_bug.cgi?id=1992576 (chained OffscreenCanvas transfer)') @parameterized({ '': ([],), # -DTEST_CHAINED_WEBGL_CONTEXT_PASSING: