Sat Feb 8 22:59:55 2020 UTC ()
seamonkey: 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.203 -r1.204 pkgsrc/www/seamonkey/Makefile
diff -r1.159 -r1.160 pkgsrc/www/seamonkey/distinfo
diff -r0 -r1.5 pkgsrc/www/seamonkey/patches/patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c

cvs diff -r1.203 -r1.204 pkgsrc/www/seamonkey/Makefile (expand / switch to unified diff)

--- pkgsrc/www/seamonkey/Makefile 2020/01/26 17:32:24 1.203
+++ pkgsrc/www/seamonkey/Makefile 2020/02/08 22:59:55 1.204
@@ -1,18 +1,18 @@ @@ -1,18 +1,18 @@
1# $NetBSD: Makefile,v 1.203 2020/01/26 17:32:24 rillig Exp $ 1# $NetBSD: Makefile,v 1.204 2020/02/08 22:59:55 kamil Exp $
2 2
3DISTNAME= seamonkey-${SM_VER}.source 3DISTNAME= seamonkey-${SM_VER}.source
4PKGNAME= seamonkey-${SM_VER:S/b/beta/} 4PKGNAME= seamonkey-${SM_VER:S/b/beta/}
5PKGREVISION= 2 5PKGREVISION= 3
6SM_VER= 2.49.5 6SM_VER= 2.49.5
7CATEGORIES= www 7CATEGORIES= www
8MASTER_SITES= ${MASTER_SITE_MOZILLA:=seamonkey/releases/${SM_VER}/source/} 8MASTER_SITES= ${MASTER_SITE_MOZILLA:=seamonkey/releases/${SM_VER}/source/}
9EXTRACT_SUFX= .tar.xz 9EXTRACT_SUFX= .tar.xz
10 10
11MAINTAINER= pkgsrc-users@NetBSD.org 11MAINTAINER= pkgsrc-users@NetBSD.org
12HOMEPAGE= https://www.seamonkey-project.org/ 12HOMEPAGE= https://www.seamonkey-project.org/
13COMMENT= Full-featured gecko-based browser 13COMMENT= Full-featured gecko-based browser
14LICENSE= mpl-2.0 14LICENSE= mpl-2.0
15 15
16WRKSRC= ${WRKDIR}/${DISTNAME:S/.source//} 16WRKSRC= ${WRKDIR}/${DISTNAME:S/.source//}
17MOZILLA_DIR= mozilla/ 17MOZILLA_DIR= mozilla/
18PLIST_SRC+= ${PLIST_SRC_DFLT} 18PLIST_SRC+= ${PLIST_SRC_DFLT}

cvs diff -r1.159 -r1.160 pkgsrc/www/seamonkey/distinfo (expand / switch to unified diff)

--- pkgsrc/www/seamonkey/distinfo 2019/09/04 20:07:53 1.159
+++ pkgsrc/www/seamonkey/distinfo 2020/02/08 22:59:55 1.160
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.159 2019/09/04 20:07:53 nia Exp $ 1$NetBSD: distinfo,v 1.160 2020/02/08 22:59:55 kamil Exp $
2 2
3SHA1 (seamonkey-2.49.5.source.tar.xz) = 366953dee336185102d9a17028d49834cdb897d2 3SHA1 (seamonkey-2.49.5.source.tar.xz) = 366953dee336185102d9a17028d49834cdb897d2
4RMD160 (seamonkey-2.49.5.source.tar.xz) = 6423a548286a166e88695060713afefd7365f389 4RMD160 (seamonkey-2.49.5.source.tar.xz) = 6423a548286a166e88695060713afefd7365f389
5SHA512 (seamonkey-2.49.5.source.tar.xz) = 31309def1ad4276f13ecb343e936c7cade4b6850db88d9d84700f86bff7024b2b217b9e50fc3756b1d1beea483ceaa2a5a3afd053da00f6ac06e3795e9116789 5SHA512 (seamonkey-2.49.5.source.tar.xz) = 31309def1ad4276f13ecb343e936c7cade4b6850db88d9d84700f86bff7024b2b217b9e50fc3756b1d1beea483ceaa2a5a3afd053da00f6ac06e3795e9116789
6Size (seamonkey-2.49.5.source.tar.xz) = 231748204 bytes 6Size (seamonkey-2.49.5.source.tar.xz) = 231748204 bytes
7SHA1 (patch-ldap_c-sdk_include_portable.h) = ce0b643fa031b74bf7d74eedc4f3729807aef799 7SHA1 (patch-ldap_c-sdk_include_portable.h) = ce0b643fa031b74bf7d74eedc4f3729807aef799
8SHA1 (patch-mail_app_Makefile.in) = da6ac87ffdcff733f11218cb11f8ef316bb1bc18 8SHA1 (patch-mail_app_Makefile.in) = da6ac87ffdcff733f11218cb11f8ef316bb1bc18
9SHA1 (patch-mailnews_base_search_src_nsMsgSearchTerm.cpp) = 0cbabcf5b188e86404e3ded8452c73a7f498efe3 9SHA1 (patch-mailnews_base_search_src_nsMsgSearchTerm.cpp) = 0cbabcf5b188e86404e3ded8452c73a7f498efe3
10SHA1 (patch-mozilla_build_gyp.mozbuild) = a80cbc009f031de527349da416dd9a914e731358 10SHA1 (patch-mozilla_build_gyp.mozbuild) = a80cbc009f031de527349da416dd9a914e731358
11SHA1 (patch-mozilla_build_moz.configure_init.configure) = 52247a5abfb178be7d10ec10a250090a94c42fb4 11SHA1 (patch-mozilla_build_moz.configure_init.configure) = 52247a5abfb178be7d10ec10a250090a94c42fb4
12SHA1 (patch-mozilla_build_moz.configure_keyfiles.configure) = 5e3dd199e339187f2cdbe489c5390b255fa5c029 12SHA1 (patch-mozilla_build_moz.configure_keyfiles.configure) = 5e3dd199e339187f2cdbe489c5390b255fa5c029
13SHA1 (patch-mozilla_build_moz.configure_memory.configure) = f5f5275878817e361b2f7a247b7feceb7feeda6e 13SHA1 (patch-mozilla_build_moz.configure_memory.configure) = f5f5275878817e361b2f7a247b7feceb7feeda6e
14SHA1 (patch-mozilla_build_moz.configure_old.configure) = 1de7c78d2fb7cc88542acc969c0d9cc4e9001977 14SHA1 (patch-mozilla_build_moz.configure_old.configure) = 1de7c78d2fb7cc88542acc969c0d9cc4e9001977
@@ -76,26 +76,27 @@ SHA1 (patch-mozilla_media_libvorbis_moz. @@ -76,26 +76,27 @@ SHA1 (patch-mozilla_media_libvorbis_moz.
76SHA1 (patch-mozilla_media_libyuv_source_mjpeg__decoder.cc) = 4431f13521b1977bc0033e5d8091bedb9bb7c403 76SHA1 (patch-mozilla_media_libyuv_source_mjpeg__decoder.cc) = 4431f13521b1977bc0033e5d8091bedb9bb7c403
77SHA1 (patch-mozilla_media_openmax__dl_dl_api_armCOMM__s.h) = bc6d27e0dbf5c03742c76db7fc793f7dd715913f 77SHA1 (patch-mozilla_media_openmax__dl_dl_api_armCOMM__s.h) = bc6d27e0dbf5c03742c76db7fc793f7dd715913f
78SHA1 (patch-mozilla_media_webrtc_signaling_test_common.build) = d3fbaf6b3dd917096b9d0e9257675154e443af27 78SHA1 (patch-mozilla_media_webrtc_signaling_test_common.build) = d3fbaf6b3dd917096b9d0e9257675154e443af27
79SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 759a469971edeaba9561083f9d608f3547274124 79SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 759a469971edeaba9561083f9d608f3547274124
80SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = 93c78153700739ad1c9a324c29bbf6dc4287f2dd 80SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = 93c78153700739ad1c9a324c29bbf6dc4287f2dd
81SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi) = 5abe5de6197cca8d3c1d25ca261941c5c9567c5a 81SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi) = 5abe5de6197cca8d3c1d25ca261941c5c9567c5a
82SHA1 (patch-mozilla_memory_mozalloc_mozalloc__abort.cpp) = fea12a1511a0d59b862cc5a5435506504f0b7fc6 82SHA1 (patch-mozilla_memory_mozalloc_mozalloc__abort.cpp) = fea12a1511a0d59b862cc5a5435506504f0b7fc6
83SHA1 (patch-mozilla_mfbt_Poison.cpp) = 8a45775687244c6d1d6e422dbaa2364862fb33b7 83SHA1 (patch-mozilla_mfbt_Poison.cpp) = 8a45775687244c6d1d6e422dbaa2364862fb33b7
84SHA1 (patch-mozilla_mobile_android_installer_Makefile.in) = 509afe7dd78f8a4939ae4690c2cdf77c001903f2 84SHA1 (patch-mozilla_mobile_android_installer_Makefile.in) = 509afe7dd78f8a4939ae4690c2cdf77c001903f2
85SHA1 (patch-mozilla_modules_libjar_nsZipArchive.cpp) = a399e0bd0e83c47938bbee077eaa79fc52386241 85SHA1 (patch-mozilla_modules_libjar_nsZipArchive.cpp) = a399e0bd0e83c47938bbee077eaa79fc52386241
86SHA1 (patch-mozilla_mozglue_build_arm.cpp) = 592ae5ce1a404227cc2ab6a06418cc813c5743c9 86SHA1 (patch-mozilla_mozglue_build_arm.cpp) = 592ae5ce1a404227cc2ab6a06418cc813c5743c9
87SHA1 (patch-mozilla_mozglue_build_arm.h) = 94e2b1a1a9ebf20bfa8a542066aa0dad475db320 87SHA1 (patch-mozilla_mozglue_build_arm.h) = 94e2b1a1a9ebf20bfa8a542066aa0dad475db320
88SHA1 (patch-mozilla_netwerk_dns_moz.build) = d87c07ebfa01d32ca826932af733b37ce586e9f7 88SHA1 (patch-mozilla_netwerk_dns_moz.build) = d87c07ebfa01d32ca826932af733b37ce586e9f7
 89SHA1 (patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c) = 05e410e27538083cde5f4c50089ea73d0ce16e9e
89SHA1 (patch-mozilla_old-configure.in) = e98e393a90c8283259d7c6fe2a2fff03f2747e4d 90SHA1 (patch-mozilla_old-configure.in) = e98e393a90c8283259d7c6fe2a2fff03f2747e4d
90SHA1 (patch-mozilla_security_manager_ssl_moz.build) = 70b36809c96e586c93af4ea54a383a74835b2192 91SHA1 (patch-mozilla_security_manager_ssl_moz.build) = 70b36809c96e586c93af4ea54a383a74835b2192
91SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__back.jsm) = db4084f6a7dba2fc5d35cd256c6f149fabbf7bc7 92SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__back.jsm) = db4084f6a7dba2fc5d35cd256c6f149fabbf7bc7
92SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__front.jsm) = 1e8d0883d3cc12541020c7df0b1d67f60e7391f5 93SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__front.jsm) = 1e8d0883d3cc12541020c7df0b1d67f60e7391f5
93SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h) = 0b5cad33bc9a90f4ae2d6346065707b642aba3a9 94SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h) = 0b5cad33bc9a90f4ae2d6346065707b642aba3a9
94SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_atomicops__internals__arm__gcc.h) = 4647e5f144964bf9d8c7f73c322e88742b22a1ef 95SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_atomicops__internals__arm__gcc.h) = 4647e5f144964bf9d8c7f73c322e88742b22a1ef
95SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h) = 0708a43577e786da4588bf318802ea035a9c1d52 96SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h) = 0708a43577e786da4588bf318802ea035a9c1d52
96SHA1 (patch-mozilla_toolkit_components_terminator_nsTerminator.cpp) = c54660b4699925c49bd2a98ef8915d49960fbd13 97SHA1 (patch-mozilla_toolkit_components_terminator_nsTerminator.cpp) = c54660b4699925c49bd2a98ef8915d49960fbd13
97SHA1 (patch-mozilla_toolkit_library_moz.build) = fa16eaf09857a8db6df5d09c2af42e06dbeb604f 98SHA1 (patch-mozilla_toolkit_library_moz.build) = fa16eaf09857a8db6df5d09c2af42e06dbeb604f
98SHA1 (patch-mozilla_toolkit_modules_GMPUtils.jsm) = 4cfec16c0ec538ac80d590291db1eebd378e0b1a 99SHA1 (patch-mozilla_toolkit_modules_GMPUtils.jsm) = 4cfec16c0ec538ac80d590291db1eebd378e0b1a
99SHA1 (patch-mozilla_toolkit_moz.configure) = 2adee84691022b12513dc6b9483b06626efdbaa7 100SHA1 (patch-mozilla_toolkit_moz.configure) = 2adee84691022b12513dc6b9483b06626efdbaa7
100SHA1 (patch-mozilla_toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js) = 85f482aecaf5bd971775c6fbf35d3d6bfd04a296 101SHA1 (patch-mozilla_toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js) = 85f482aecaf5bd971775c6fbf35d3d6bfd04a296
101SHA1 (patch-mozilla_toolkit_xre_glxtest.cpp) = a8f6653760e33014c5e6f104b19fce8a0f331d24 102SHA1 (patch-mozilla_toolkit_xre_glxtest.cpp) = a8f6653760e33014c5e6f104b19fce8a0f331d24

File Added: pkgsrc/www/seamonkey/patches/Attic/patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c
$NetBSD: patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c,v 1.5 2020/02/08 22:59:55 kamil Exp $

Workaround buggy usage of pthread_equal().

--- mozilla/nsprpub/pr/src/pthreads/ptsynch.c.orig	2019-05-06 17:30:52.000000000 +0000
+++ mozilla/nsprpub/pr/src/pthreads/ptsynch.c
@@ -30,6 +30,13 @@ static pthread_t pt_zero_tid;  /* a null
 #endif  /* defined(_PR_DCETHREADS) */
 #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.
@@ -198,9 +205,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;
@@ -223,7 +230,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()));
 }
 
 /**************************************************************/
@@ -284,7 +291,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)
@@ -367,7 +374,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;
 
@@ -565,7 +572,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);
@@ -580,7 +587,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
@@ -596,7 +603,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)
         {
@@ -627,8 +634,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);
@@ -675,7 +682,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;