Bug 1753340 - Increase compositor stack size limit to deal with Mesa and OOP WebGL. r=jgilbert

Some versions of Mesa, including what we currently use on CI, need more
stack memory than what we currently provide on the compositor thread
order to pass the WebGL test suite in out-of-process mode.  This patch
increases the limit and re-enables the previously broken tests.

(Testing on Try found that the threshold was somewhere between 384k and
448k, but because this depends on a third-party library and content
controlled input, I'm giving it 512k so we have some safety margin.)

Differential Revision: https://phabricator.services.mozilla.com/D137787
This commit is contained in:
Jed Davis 2022-02-04 17:56:34 +00:00
parent 852f00a478
commit 8deabc42dd
3 changed files with 13 additions and 16 deletions

View File

@ -7771,7 +7771,6 @@ subsuite = webgl2-ext
subsuite = webgl2-ext
[generated/test_2_conformance__glsl__bugs__long-expressions-should-not-crash.html]
subsuite = webgl2-ext
skip-if = (os == 'linux' && !asan)
[generated/test_2_conformance__glsl__bugs__loop-if-loop-gradient.html]
subsuite = webgl2-ext
[generated/test_2_conformance__glsl__bugs__modulo-arithmetic-accuracy.html]
@ -8116,7 +8115,7 @@ subsuite = webgl2-ext
subsuite = webgl2-ext
[generated/test_2_conformance__glsl__misc__shader-uniform-packing-restrictions.html]
subsuite = webgl2-ext
skip-if = (os == 'win' && os_version == '6.1' && debug) || (os == 'linux' && !asan)
skip-if = (os == 'win' && os_version == '6.1' && debug)
[generated/test_2_conformance__glsl__misc__shader-varying-packing-restrictions.html]
subsuite = webgl2-ext
[generated/test_2_conformance__glsl__misc__shader-with-256-character-define.html]
@ -11197,7 +11196,7 @@ subsuite = webgl1-ext
skip-if = (os == 'android')
[generated/test_conformance__glsl__bugs__long-expressions-should-not-crash.html]
subsuite = webgl1-ext
skip-if = (os == 'android') || (os == 'linux' && !asan)
skip-if = (os == 'android')
[generated/test_conformance__glsl__bugs__loop-if-loop-gradient.html]
subsuite = webgl1-ext
[generated/test_conformance__glsl__bugs__modulo-arithmetic-accuracy.html]
@ -11557,7 +11556,7 @@ subsuite = webgl1-ext
subsuite = webgl1-ext
[generated/test_conformance__glsl__misc__shader-uniform-packing-restrictions.html]
subsuite = webgl1-ext
skip-if = (os == 'android') || (os == 'win' && os_version == '6.1' && debug) || (os == 'linux' && debug) || (os == 'linux' && !asan)
skip-if = (os == 'android') || (os == 'win' && os_version == '6.1' && debug) || (os == 'linux' && debug)
[generated/test_conformance__glsl__misc__shader-varying-packing-restrictions.html]
subsuite = webgl1-ext
[generated/test_conformance__glsl__misc__shader-with-256-character-define.html]

View File

@ -347,20 +347,15 @@ skip-if = (os == 'linux') || (os == 'android')
[generated/test_conformance__glsl__bugs__long-expressions-should-not-crash.html]
# Android: Crashes sometimes
# Linux w/o ASAN: perma-crash (ASAN doesn't crash)
skip-if = (os == 'android') || (os == 'linux' && !asan)
skip-if = (os == 'android')
[generated/test_2_conformance__glsl__bugs__long-expressions-should-not-crash.html]
# Linux w/o ASAN: perma-crash (ASAN doesn't crash)
skip-if = (os == 'linux' && !asan)
[generated/test_conformance__glsl__misc__shader-uniform-packing-restrictions.html]
# Frequent timeout on win7 and linux debug.
# Linux w/o ASAN: perma-crash (ASAN doesn't crash)
skip-if = (os == 'android') || (os == 'win' && os_version == '6.1' && debug) || (os == 'linux' && debug) || (os == 'linux' && !asan)
skip-if = (os == 'android') || (os == 'win' && os_version == '6.1' && debug) || (os == 'linux' && debug)
[generated/test_2_conformance__glsl__misc__shader-uniform-packing-restrictions.html]
# win7/debug: Failures on oct 20th, 2017, bug 1410306
# Linux w/o ASAN: perma-crash (ASAN doesn't crash)
skip-if = (os == 'win' && os_version == '6.1' && debug) || (os == 'linux' && !asan)
skip-if = (os == 'win' && os_version == '6.1' && debug)
[generated/test_conformance__glsl__constructors__glsl-construct-bvec3.html]
# Crashes from libglsl.so

View File

@ -51,12 +51,15 @@ CompositorThreadHolder::CreateCompositorThread() {
MOZ_ASSERT(!sCompositorThreadHolder,
"The compositor thread has already been started!");
// This is 320K, which is higher than the default 256K.
// Increased to work the stack overflow in the Intel Vulkan driver
// initialization https://bugzilla.mozilla.org/show_bug.cgi?id=1716120
// This is 512K, which is higher than the default 256K.
// Increased to accommodate Mesa in bug 1753340.
//
// Previously increased to 320K to avoid a stack overflow in the
// Intel Vulkan driver initialization in bug 1716120.
//
// Note: we only override it if it's limited already.
const uint32_t stackSize =
nsIThreadManager::DEFAULT_STACK_SIZE ? 320 << 10 : 0;
nsIThreadManager::DEFAULT_STACK_SIZE ? 512 << 10 : 0;
nsCOMPtr<nsIThread> compositorThread;
nsresult rv = NS_NewNamedThread(