Sat Feb 8 21:54:30 2020 UTC ()
firefox60: Workaround broken pthread_equal() usage

Switch to an internal version of pthread_equal() without sanity checks.

Problems detected on NetBSD 9.99.46.


(kamil)
diff -r1.37 -r1.38 pkgsrc/www/firefox60/Makefile
diff -r1.20 -r1.21 pkgsrc/www/firefox60/distinfo
diff -r0 -r1.1 pkgsrc/www/firefox60/patches/patch-nsprpub_pr_src_pthreads_ptsynch.c

cvs diff -r1.37 -r1.38 pkgsrc/www/firefox60/Attic/Makefile (expand / switch to unified diff)

--- pkgsrc/www/firefox60/Attic/Makefile 2020/01/18 21:51:06 1.37
+++ pkgsrc/www/firefox60/Attic/Makefile 2020/02/08 21:54:30 1.38
@@ -1,22 +1,22 @@ @@ -1,22 +1,22 @@
1# $NetBSD: Makefile,v 1.37 2020/01/18 21:51:06 jperkin Exp $ 1# $NetBSD: Makefile,v 1.38 2020/02/08 21:54:30 kamil Exp $
2 2
3FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR} 3FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR}
4MOZ_BRANCH= 60.9 4MOZ_BRANCH= 60.9
5MOZ_BRANCH_MINOR= .0esr 5MOZ_BRANCH_MINOR= .0esr
6 6
7DISTNAME= firefox-${FIREFOX_VER}.source 7DISTNAME= firefox-${FIREFOX_VER}.source
8PKGNAME= firefox${MOZ_BRANCH:C/\..*$//}-${MOZ_BRANCH}${MOZ_BRANCH_MINOR:S/b/beta/:S/esr//} 8PKGNAME= firefox${MOZ_BRANCH:C/\..*$//}-${MOZ_BRANCH}${MOZ_BRANCH_MINOR:S/b/beta/:S/esr//}
9PKGREVISION= 2 9PKGREVISION= 3
10CATEGORIES= www 10CATEGORIES= www
11MASTER_SITES+= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/} 11MASTER_SITES+= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/}
12EXTRACT_SUFX= .tar.xz 12EXTRACT_SUFX= .tar.xz
13 13
14MAINTAINER= ryoon@NetBSD.org 14MAINTAINER= ryoon@NetBSD.org
15HOMEPAGE= https://www.mozilla.com/en-US/firefox/ 15HOMEPAGE= https://www.mozilla.com/en-US/firefox/
16COMMENT= Web browser with support for extensions (version ${FIREFOX_VER:C/\..*//}) 16COMMENT= Web browser with support for extensions (version ${FIREFOX_VER:C/\..*//})
17LICENSE= mpl-1.1 17LICENSE= mpl-1.1
18 18
19WRKSRC= ${WRKDIR}/firefox-${FIREFOX_VER:S/esr//} 19WRKSRC= ${WRKDIR}/firefox-${FIREFOX_VER:S/esr//}
20 20
21MOZILLA_DIR= # empty 21MOZILLA_DIR= # empty
22 22

cvs diff -r1.20 -r1.21 pkgsrc/www/firefox60/Attic/distinfo (expand / switch to unified diff)

--- pkgsrc/www/firefox60/Attic/distinfo 2020/01/05 02:18:53 1.20
+++ pkgsrc/www/firefox60/Attic/distinfo 2020/02/08 21:54:30 1.21
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.20 2020/01/05 02:18:53 ryoon Exp $ 1$NetBSD: distinfo,v 1.21 2020/02/08 21:54:30 kamil Exp $
2 2
3SHA1 (firefox-60.9.0esr.source.tar.xz) = 616f8afdee741f0bea607a671b8515ef13c68b4a 3SHA1 (firefox-60.9.0esr.source.tar.xz) = 616f8afdee741f0bea607a671b8515ef13c68b4a
4RMD160 (firefox-60.9.0esr.source.tar.xz) = f3ef7629ab28960fb383d3fb12dab69feb0f45ee 4RMD160 (firefox-60.9.0esr.source.tar.xz) = f3ef7629ab28960fb383d3fb12dab69feb0f45ee
5SHA512 (firefox-60.9.0esr.source.tar.xz) = 4baea5c9c4eff257834bbaee6d7786f69f7e6bacd24ca13c2705226f4a0d88315ab38c650b2c5e9c76b698f2debc7cea1e5a99cb4dc24e03c48a24df5143a3cf 5SHA512 (firefox-60.9.0esr.source.tar.xz) = 4baea5c9c4eff257834bbaee6d7786f69f7e6bacd24ca13c2705226f4a0d88315ab38c650b2c5e9c76b698f2debc7cea1e5a99cb4dc24e03c48a24df5143a3cf
6Size (firefox-60.9.0esr.source.tar.xz) = 269089044 bytes 6Size (firefox-60.9.0esr.source.tar.xz) = 269089044 bytes
7SHA1 (patch-aa) = 5e07d1a01762b7face950ca41c71447106341f0d 7SHA1 (patch-aa) = 5e07d1a01762b7face950ca41c71447106341f0d
8SHA1 (patch-browser_app_profile_firefox.js) = 9a43095d94f83f315b9a3ce4a7b0a4301e9c40e6 8SHA1 (patch-browser_app_profile_firefox.js) = 9a43095d94f83f315b9a3ce4a7b0a4301e9c40e6
9SHA1 (patch-build_moz.configure_old.configure) = 1df6867eaf73a350fbe8fcd5bd34e1fcab09d707 9SHA1 (patch-build_moz.configure_old.configure) = 1df6867eaf73a350fbe8fcd5bd34e1fcab09d707
10SHA1 (patch-build_moz.configure_rust.configure) = 2818454ba4df3cbd85174edc4828206b3bf0a82b 10SHA1 (patch-build_moz.configure_rust.configure) = 2818454ba4df3cbd85174edc4828206b3bf0a82b
11SHA1 (patch-dom_media_CubebUtils.cpp) = 76fc35167e603f96450f4bc17cd0d76157a22dd3 11SHA1 (patch-dom_media_CubebUtils.cpp) = 76fc35167e603f96450f4bc17cd0d76157a22dd3
12SHA1 (patch-gfx_angle_checkout_src_common_third__party_smhasher_src_PMurHash.cpp) = f1d0adae2873545818072adb4e8599267bc4e6c5 12SHA1 (patch-gfx_angle_checkout_src_common_third__party_smhasher_src_PMurHash.cpp) = f1d0adae2873545818072adb4e8599267bc4e6c5
13SHA1 (patch-gfx_gl_GLContextProviderGLX.cpp) = 28c033037ac30636acdc7dd8f6637d5446ff25f7 13SHA1 (patch-gfx_gl_GLContextProviderGLX.cpp) = 28c033037ac30636acdc7dd8f6637d5446ff25f7
14SHA1 (patch-gfx_webrender_src_query.rs) = 6434b0fc1d6441ddb555a2a3b199564b488ec336 14SHA1 (patch-gfx_webrender_src_query.rs) = 6434b0fc1d6441ddb555a2a3b199564b488ec336
@@ -23,27 +23,29 @@ SHA1 (patch-js_src_threading_posix_Threa @@ -23,27 +23,29 @@ SHA1 (patch-js_src_threading_posix_Threa
23SHA1 (patch-js_src_util_NativeStack.cpp) = 3af7d3c90ce9299f0a95b938ca903488e7809d0a 23SHA1 (patch-js_src_util_NativeStack.cpp) = 3af7d3c90ce9299f0a95b938ca903488e7809d0a
24SHA1 (patch-js_src_wasm_WasmSignalHandlers.cpp) = 5442266a05721a9f4a3c9d12429bd1d59ecd936a 24SHA1 (patch-js_src_wasm_WasmSignalHandlers.cpp) = 5442266a05721a9f4a3c9d12429bd1d59ecd936a
25SHA1 (patch-media_libcubeb_gtest_moz.build) = 921a001726cda9e9782df5e59ae02b19d76ef47e 25SHA1 (patch-media_libcubeb_gtest_moz.build) = 921a001726cda9e9782df5e59ae02b19d76ef47e
26SHA1 (patch-media_libcubeb_src_cubeb.c) = 90c1b484ce9db2dade2c92b36f4978fbdc5dbea7 26SHA1 (patch-media_libcubeb_src_cubeb.c) = 90c1b484ce9db2dade2c92b36f4978fbdc5dbea7
27SHA1 (patch-media_libcubeb_src_cubeb__alsa.c) = 3ee36f58bb525767c7d2b9e814ba4ccaa4868717 27SHA1 (patch-media_libcubeb_src_cubeb__alsa.c) = 3ee36f58bb525767c7d2b9e814ba4ccaa4868717
28SHA1 (patch-media_libcubeb_src_cubeb__oss.c) = 103f751d5a7bc14a81a6ed43e1afc722bc092f7e 28SHA1 (patch-media_libcubeb_src_cubeb__oss.c) = 103f751d5a7bc14a81a6ed43e1afc722bc092f7e
29SHA1 (patch-media_libcubeb_src_moz.build) = 1a3c0e484da83acabf30f7fad6b43fe94411d8b8 29SHA1 (patch-media_libcubeb_src_moz.build) = 1a3c0e484da83acabf30f7fad6b43fe94411d8b8
30SHA1 (patch-media_libcubeb_update.sh) = d10633a378b68f91eb39d6572d857edd9b07dc9b 30SHA1 (patch-media_libcubeb_update.sh) = d10633a378b68f91eb39d6572d857edd9b07dc9b
31SHA1 (patch-media_libpng_pngpriv.h) = c8084332560017cd7c9b519b61d125fa28af0dbc 31SHA1 (patch-media_libpng_pngpriv.h) = c8084332560017cd7c9b519b61d125fa28af0dbc
32SHA1 (patch-media_webrtc_trunk_webrtc_modules_audio__device_linux_audio__device__alsa__linux.cc) = 91e8ce496c1f4dbbd0a463d83cb033afd1de3f49 32SHA1 (patch-media_webrtc_trunk_webrtc_modules_audio__device_linux_audio__device__alsa__linux.cc) = 91e8ce496c1f4dbbd0a463d83cb033afd1de3f49
33SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 0141dd1372c13ea1fce6e2f5ffb65e0cb0f3a13e 33SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 0141dd1372c13ea1fce6e2f5ffb65e0cb0f3a13e
34SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = a69bc7b7096b410582e725f9dbec57fee90d6686 34SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = a69bc7b7096b410582e725f9dbec57fee90d6686
35SHA1 (patch-modules_pdfium_update.sh) = b0bf091325c9322c54880de067871354cd689038 35SHA1 (patch-modules_pdfium_update.sh) = b0bf091325c9322c54880de067871354cd689038
 36SHA1 (patch-nsprpub_pr_src_pthreads_ptsynch.c) = 49c1cd3b70e707fccec695f87bf00bf8749ba7f4
36SHA1 (patch-servo_components_style__traits_lib.rs) = b07dfc91bae3f94b7da0c5dab523a6901b9b1bf7 37SHA1 (patch-servo_components_style__traits_lib.rs) = b07dfc91bae3f94b7da0c5dab523a6901b9b1bf7
37SHA1 (patch-servo_components_style_build__gecko.rs) = fca2260a70b496fc010f165ff4d68788b7e28632 38SHA1 (patch-servo_components_style_build__gecko.rs) = fca2260a70b496fc010f165ff4d68788b7e28632
38SHA1 (patch-servo_components_style_lib.rs) = 1df2f6580da3c4a2fadd7ddcead000fa3c8a6a14 39SHA1 (patch-servo_components_style_lib.rs) = 1df2f6580da3c4a2fadd7ddcead000fa3c8a6a14
 40SHA1 (patch-third__party_rust_cssparser_.cargo-checksum.json) = d968afb9e9b4843737c9e9bf78aa4c513b730911
39SHA1 (patch-third__party_rust_cssparser_src_parser.rs) = 97d89ca616271dea3dd564b1e96f0087c21e8be0 41SHA1 (patch-third__party_rust_cssparser_src_parser.rs) = 97d89ca616271dea3dd564b1e96f0087c21e8be0
40SHA1 (patch-third__party_rust_url_src_form__urlencoded.rs) = 803c9501d2aec0ad1588cd05d625f679581841f6 42SHA1 (patch-third__party_rust_url_src_form__urlencoded.rs) = 803c9501d2aec0ad1588cd05d625f679581841f6
41SHA1 (patch-third__party_rust_url_src_lib.rs) = 97730d2d9a1b6e3b42687da4cdb04b4ac1bd903b 43SHA1 (patch-third__party_rust_url_src_lib.rs) = 97730d2d9a1b6e3b42687da4cdb04b4ac1bd903b
42SHA1 (patch-toolkit_components_terminator_nsTerminator.cpp) = 5b6d2e5c9f685d32894898d3ef3aec09a1a1e5ce 44SHA1 (patch-toolkit_components_terminator_nsTerminator.cpp) = 5b6d2e5c9f685d32894898d3ef3aec09a1a1e5ce
43SHA1 (patch-toolkit_library_moz.build) = ecb6125e996d5496335c58ecd3433ad3214f29f0 45SHA1 (patch-toolkit_library_moz.build) = ecb6125e996d5496335c58ecd3433ad3214f29f0
44SHA1 (patch-toolkit_moz.configure) = 40ee147cc1d2c62dd6c83b3f67ce9e61f758ea57 46SHA1 (patch-toolkit_moz.configure) = 40ee147cc1d2c62dd6c83b3f67ce9e61f758ea57
45SHA1 (patch-toolkit_mozapps_installer_packager.mk) = 6f557fb732f0b9dabf059ffac0400d3db4e79e47 47SHA1 (patch-toolkit_mozapps_installer_packager.mk) = 6f557fb732f0b9dabf059ffac0400d3db4e79e47
46SHA1 (patch-toolkit_xre_glxtest.cpp) = e02b1073fe1a6f36872b10883455c8be59ff81e9 48SHA1 (patch-toolkit_xre_glxtest.cpp) = e02b1073fe1a6f36872b10883455c8be59ff81e9
47SHA1 (patch-xpcom_base_nscore.h) = 3f131370b9665a0af55cab7f8f54723ebbc389fa 49SHA1 (patch-xpcom_base_nscore.h) = 3f131370b9665a0af55cab7f8f54723ebbc389fa
48SHA1 (patch-xpcom_build_BinaryPath.h) = 595569235ddcd1a1caaaa0c94796dd3b9535d391 50SHA1 (patch-xpcom_build_BinaryPath.h) = 595569235ddcd1a1caaaa0c94796dd3b9535d391
49SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp) = 0792c2c626d906e71c5183994cb32bf8cdb3e239 51SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp) = 0792c2c626d906e71c5183994cb32bf8cdb3e239

File Added: pkgsrc/www/firefox60/patches/Attic/patch-nsprpub_pr_src_pthreads_ptsynch.c
$NetBSD: patch-nsprpub_pr_src_pthreads_ptsynch.c,v 1.1 2020/02/08 21:54:30 kamil Exp $

Workaround buggy usage of pthread_equal().

--- nsprpub/pr/src/pthreads/ptsynch.c.orig	2019-09-01 13:09:51.000000000 +0000
+++ nsprpub/pr/src/pthreads/ptsynch.c
@@ -25,6 +25,13 @@ static pthread_condattr_t _pt_cvar_attr;
 extern PTDebug pt_debug;  /* this is shared between several modules */
 #endif  /* defined(DEBUG) */
 
+/* XXX, pthread_equal() is misused to compare non-valid thread pointers */
+static int
+pt_pthread_equal(pthread_t t1, pthread_t t2)
+{
+	return t1 == t2;
+}
+
 #if defined(FREEBSD)
 /*
  * On older versions of FreeBSD, pthread_mutex_trylock returns EDEADLK.
@@ -192,9 +199,9 @@ PR_IMPLEMENT(PRStatus) PR_Unlock(PRLock 
     PR_ASSERT(lock != NULL);
     PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex));
     PR_ASSERT(PR_TRUE == lock->locked);
-    PR_ASSERT(pthread_equal(lock->owner, self));
+    PR_ASSERT(pt_pthread_equal(lock->owner, self));
 
-    if (!lock->locked || !pthread_equal(lock->owner, self))
+    if (!lock->locked || !pt_pthread_equal(lock->owner, self))
         return PR_FAILURE;
 
     lock->locked = PR_FALSE;
@@ -217,7 +224,7 @@ PR_IMPLEMENT(void) PR_AssertCurrentThrea
      * to the correctness of PR_AssertCurrentThreadOwnsLock(), but 
      * this particular order makes the assertion more likely to
      * catch errors. */
-    PR_ASSERT(lock->locked && pthread_equal(lock->owner, pthread_self()));
+    PR_ASSERT(lock->locked && pt_pthread_equal(lock->owner, pthread_self()));
 }
 
 /**************************************************************/
@@ -273,7 +280,7 @@ static void pt_PostNotifyToCvar(PRCondVa
     _PT_Notified *notified = &cvar->lock->notified;
 
     PR_ASSERT(PR_TRUE == cvar->lock->locked);
-    PR_ASSERT(pthread_equal(cvar->lock->owner, pthread_self()));
+    PR_ASSERT(pt_pthread_equal(cvar->lock->owner, pthread_self()));
     PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(cvar->lock->mutex));
 
     while (1)
@@ -356,7 +363,7 @@ PR_IMPLEMENT(PRStatus) PR_WaitCondVar(PR
     PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(cvar->lock->mutex));
     PR_ASSERT(PR_TRUE == cvar->lock->locked);
     /* and it better be by us */
-    PR_ASSERT(pthread_equal(cvar->lock->owner, pthread_self()));
+    PR_ASSERT(pt_pthread_equal(cvar->lock->owner, pthread_self()));
 
     if (_PT_THREAD_INTERRUPTED(thred)) goto aborted;
 
@@ -554,7 +561,7 @@ PR_IMPLEMENT(PRIntn) PR_GetMonitorEntryC
 
     rv = pthread_mutex_lock(&mon->lock);
     PR_ASSERT(0 == rv);
-    if (pthread_equal(mon->owner, self))
+    if (pt_pthread_equal(mon->owner, self))
         count = mon->entryCount;
     rv = pthread_mutex_unlock(&mon->lock);
     PR_ASSERT(0 == rv);
@@ -569,7 +576,7 @@ PR_IMPLEMENT(void) PR_AssertCurrentThrea
     rv = pthread_mutex_lock(&mon->lock);
     PR_ASSERT(0 == rv);
     PR_ASSERT(mon->entryCount != 0 &&
-              pthread_equal(mon->owner, pthread_self()));
+              pt_pthread_equal(mon->owner, pthread_self()));
     rv = pthread_mutex_unlock(&mon->lock);
     PR_ASSERT(0 == rv);
 #endif
@@ -585,7 +592,7 @@ PR_IMPLEMENT(void) PR_EnterMonitor(PRMon
     PR_ASSERT(0 == rv);
     if (mon->entryCount != 0)
     {
-        if (pthread_equal(mon->owner, self))
+        if (pt_pthread_equal(mon->owner, self))
             goto done;
         while (mon->entryCount != 0)
         {
@@ -616,8 +623,8 @@ PR_IMPLEMENT(PRStatus) PR_ExitMonitor(PR
     PR_ASSERT(0 == rv);
     /* the entries should be > 0 and we'd better be the owner */
     PR_ASSERT(mon->entryCount > 0);
-    PR_ASSERT(pthread_equal(mon->owner, self));
-    if (mon->entryCount == 0 || !pthread_equal(mon->owner, self))
+    PR_ASSERT(pt_pthread_equal(mon->owner, self));
+    if (mon->entryCount == 0 || !pt_pthread_equal(mon->owner, self))
     {
         rv = pthread_mutex_unlock(&mon->lock);
         PR_ASSERT(0 == rv);
@@ -664,7 +671,7 @@ PR_IMPLEMENT(PRStatus) PR_Wait(PRMonitor
     /* the entries better be positive */
     PR_ASSERT(mon->entryCount > 0);
     /* and it better be owned by us */
-    PR_ASSERT(pthread_equal(mon->owner, pthread_self()));
+    PR_ASSERT(pt_pthread_equal(mon->owner, pthread_self()));
 
     /* tuck these away 'till later */
     saved_entries = mon->entryCount;