diff --git a/libraries/source/spidermonkey/build.sh b/libraries/source/spidermonkey/build.sh index ebbbdc1c04..cc6a2624b0 100755 --- a/libraries/source/spidermonkey/build.sh +++ b/libraries/source/spidermonkey/build.sh @@ -9,7 +9,7 @@ cd "$(dirname "$0")" PV=128.13.0 FOLDER="mozjs-${PV}" # If same-version changes are needed, increment this. -LIB_VERSION="${PV}+wfg0" +LIB_VERSION="${PV}+wfg1" LIB_NAME="mozjs128" build_archive() diff --git a/libraries/source/spidermonkey/patches/FixExtraGCTracing.diff b/libraries/source/spidermonkey/patches/FixExtraGCTracing.diff new file mode 100644 index 0000000000..3b3b683b96 --- /dev/null +++ b/libraries/source/spidermonkey/patches/FixExtraGCTracing.diff @@ -0,0 +1,38 @@ + +# HG changeset patch +# User Itms +# Date 1754863729 0 +# Node ID 45a4336df6a83fbb6a448fe5ec14b703b38313d9 +# Parent 1ecdcb55f42515c6542d4f9d4580899d55a6a790 +Bug 1982134 - Choose specific callback in removeBlackRootsTracer. a=RyanVM + +This fixes a regression introduced in the refactoring at Bug 1846835 / D185307 + +Original Revision: https://phabricator.services.mozilla.com/D260541 + +Differential Revision: https://phabricator.services.mozilla.com/D260608 + + +diff --git a/js/src/gc/GC.cpp b/js/src/gc/GC.cpp +--- a/js/src/gc/GC.cpp ++++ b/js/src/gc/GC.cpp +@@ -1559,17 +1559,17 @@ static bool EraseCallback(CallbackVector + + bool GCRuntime::addBlackRootsTracer(JSTraceDataOp traceOp, void* data) { + AssertHeapIsIdle(); + return blackRootTracers.ref().append(Callback(traceOp, data)); + } + + void GCRuntime::removeBlackRootsTracer(JSTraceDataOp traceOp, void* data) { + // Can be called from finalizers +- MOZ_ALWAYS_TRUE(EraseCallback(blackRootTracers.ref(), traceOp)); ++ MOZ_ALWAYS_TRUE(EraseCallback(blackRootTracers.ref(), traceOp, data)); + } + + void GCRuntime::setGrayRootsTracer(JSGrayRootsTracer traceOp, void* data) { + AssertHeapIsIdle(); + grayRootTracer.ref() = {traceOp, data}; + } + + void GCRuntime::clearBlackAndGrayRootTracers() { + diff --git a/libraries/source/spidermonkey/patches/patch.sh b/libraries/source/spidermonkey/patches/patch.sh index 5709a60075..fe527a8c31 100755 --- a/libraries/source/spidermonkey/patches/patch.sh +++ b/libraries/source/spidermonkey/patches/patch.sh @@ -18,6 +18,10 @@ patch -p1 <"${PATCHES}"/FixLibNames.diff # https://bugzilla.mozilla.org/show_bug.cgi?id=1935346 patch -p1 <"${PATCHES}"/FixPkgConfigDebug.diff +# Fix a regression in GC tracing, which creates segfaults during GCs +# https://bugzilla.mozilla.org/show_bug.cgi?id=1982134 +patch -p1 <"${PATCHES}"/FixExtraGCTracing.diff + # There is an issue on 32-bit linux builds sometimes. # NB: the patch here is Comment 21 modified by Comment 25 # but that seems to imperfectly fix the issue with GCC.