Sat Feb 8 22:20:26 2020 UTC ()
thunderbird52: 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.7 -r1.8 pkgsrc/mail/thunderbird52/Makefile
diff -r1.1 -r1.2 pkgsrc/mail/thunderbird52/distinfo
diff -r0 -r1.1 pkgsrc/mail/thunderbird52/patches/patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c

cvs diff -r1.7 -r1.8 pkgsrc/mail/thunderbird52/Makefile (expand / switch to unified diff)

--- pkgsrc/mail/thunderbird52/Makefile 2020/01/18 21:49:55 1.7
+++ pkgsrc/mail/thunderbird52/Makefile 2020/02/08 22:20:26 1.8
@@ -1,18 +1,18 @@ @@ -1,18 +1,18 @@
1# $NetBSD: Makefile,v 1.7 2020/01/18 21:49:55 jperkin Exp $ 1# $NetBSD: Makefile,v 1.8 2020/02/08 22:20:26 kamil Exp $
2 2
3DISTNAME= thunderbird-${TB_VER}.source 3DISTNAME= thunderbird-${TB_VER}.source
4PKGNAME= thunderbird${TB_VER:C/\..*$//}-${TB_VER} 4PKGNAME= thunderbird${TB_VER:C/\..*$//}-${TB_VER}
5PKGREVISION= 6 5PKGREVISION= 7
6TB_VER= 52.9.1 6TB_VER= 52.9.1
7CATEGORIES= mail 7CATEGORIES= mail
8MASTER_SITES= ${MASTER_SITE_MOZILLA:=thunderbird/releases/${TB_VER}/source/} 8MASTER_SITES= ${MASTER_SITE_MOZILLA:=thunderbird/releases/${TB_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.thunderbird.net/en-US/ 12HOMEPAGE= https://www.thunderbird.net/en-US/
13COMMENT= Organize, secure and customize your mail 13COMMENT= Organize, secure and customize your mail
14LICENSE= mpl-1.1 14LICENSE= mpl-1.1
15 15
16USE_TOOLS+= unzip pax 16USE_TOOLS+= unzip pax
17WRKSRC= ${WRKDIR}/${DISTNAME:S/.source//} 17WRKSRC= ${WRKDIR}/${DISTNAME:S/.source//}
18MOZILLA_DIR= mozilla/ 18MOZILLA_DIR= mozilla/

cvs diff -r1.1 -r1.2 pkgsrc/mail/thunderbird52/distinfo (expand / switch to unified diff)

--- pkgsrc/mail/thunderbird52/distinfo 2018/12/16 08:29:48 1.1
+++ pkgsrc/mail/thunderbird52/distinfo 2020/02/08 22:20:26 1.2
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.1 2018/12/16 08:29:48 ryoon Exp $ 1$NetBSD: distinfo,v 1.2 2020/02/08 22:20:26 kamil Exp $
2 2
3SHA1 (thunderbird-52.9.1.source.tar.xz) = 9970d78084fe979f568ea00bf06b8e81a738e630 3SHA1 (thunderbird-52.9.1.source.tar.xz) = 9970d78084fe979f568ea00bf06b8e81a738e630
4RMD160 (thunderbird-52.9.1.source.tar.xz) = b3169a0154fa85648a98ba0d74f264abd224b323 4RMD160 (thunderbird-52.9.1.source.tar.xz) = b3169a0154fa85648a98ba0d74f264abd224b323
5SHA512 (thunderbird-52.9.1.source.tar.xz) = 0de80a5036b1e8a5a8549c546b4693cb285ee4d10f546f4b4aceed9e1d6c64b9dbafce7bacaaf057112130036f7b41fb2e0fa3343412140e6ac926dd94c27d23 5SHA512 (thunderbird-52.9.1.source.tar.xz) = 0de80a5036b1e8a5a8549c546b4693cb285ee4d10f546f4b4aceed9e1d6c64b9dbafce7bacaaf057112130036f7b41fb2e0fa3343412140e6ac926dd94c27d23
6Size (thunderbird-52.9.1.source.tar.xz) = 230475264 bytes 6Size (thunderbird-52.9.1.source.tar.xz) = 230475264 bytes
7SHA1 (patch-calendar_lightning_Makefile.in) = 02a1528f2da82f1d4ff4931a7d7dc8227b7fa9f2 7SHA1 (patch-calendar_lightning_Makefile.in) = 02a1528f2da82f1d4ff4931a7d7dc8227b7fa9f2
8SHA1 (patch-calendar_lightning_build_universal.mk) = 86dc2c6b4f9feb835570111078aa5d08a389d0da 8SHA1 (patch-calendar_lightning_build_universal.mk) = 86dc2c6b4f9feb835570111078aa5d08a389d0da
9SHA1 (patch-calendar_providers_gdata_Makefile.in) = 0e90ddc9aecc817b0b150bbc37d23ddec97b093e 9SHA1 (patch-calendar_providers_gdata_Makefile.in) = 0e90ddc9aecc817b0b150bbc37d23ddec97b093e
10SHA1 (patch-ldap_c-sdk_include_portable.h) = 7b36594a98beb5af9f82810a052ad2d4706ac968 10SHA1 (patch-ldap_c-sdk_include_portable.h) = 7b36594a98beb5af9f82810a052ad2d4706ac968
11SHA1 (patch-mail_app_nsMailApp.cpp) = 8834e141e4526af4b6a7a65195fd8f13d7c9cdb1 11SHA1 (patch-mail_app_nsMailApp.cpp) = 8834e141e4526af4b6a7a65195fd8f13d7c9cdb1
12SHA1 (patch-mail_components_shell_nsMailGNOMEIntegration.cpp) = cbd87d7d7fc8df32b7fd444148d48a92c54c94d9 12SHA1 (patch-mail_components_shell_nsMailGNOMEIntegration.cpp) = cbd87d7d7fc8df32b7fd444148d48a92c54c94d9
13SHA1 (patch-mail_installer_package-manifest.in) = 3829a4d1ae7e8da29ae90d8ac31856fe260c2acc 13SHA1 (patch-mail_installer_package-manifest.in) = 3829a4d1ae7e8da29ae90d8ac31856fe260c2acc
14SHA1 (patch-mail_installer_removed-files.in) = 1a6744cda9842046b9d4b388333678a580d49d43 14SHA1 (patch-mail_installer_removed-files.in) = 1a6744cda9842046b9d4b388333678a580d49d43
@@ -83,26 +83,27 @@ SHA1 (patch-mozilla_media_libvorbis_moz. @@ -83,26 +83,27 @@ SHA1 (patch-mozilla_media_libvorbis_moz.
83SHA1 (patch-mozilla_media_libyuv_source_mjpeg__decoder.cc) = f16d6931f02cc5feeb58b5d3bde509de8289205c 83SHA1 (patch-mozilla_media_libyuv_source_mjpeg__decoder.cc) = f16d6931f02cc5feeb58b5d3bde509de8289205c
84SHA1 (patch-mozilla_media_openmax__dl_dl_api_armCOMM__s.h) = dec3d3d538a4301920aa641d2d8da1e6c9b7bb54 84SHA1 (patch-mozilla_media_openmax__dl_dl_api_armCOMM__s.h) = dec3d3d538a4301920aa641d2d8da1e6c9b7bb54
85SHA1 (patch-mozilla_media_webrtc_signaling_test_common.build) = ba9072c990805d8105eaeb6d2715b2602529c5c0 85SHA1 (patch-mozilla_media_webrtc_signaling_test_common.build) = ba9072c990805d8105eaeb6d2715b2602529c5c0
86SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 7f1cc6815ded686bed7335685a66d873e7971c0a 86SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 7f1cc6815ded686bed7335685a66d873e7971c0a
87SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = 8187760eeaa2c466b629b21cd8d3d460e532497f 87SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = 8187760eeaa2c466b629b21cd8d3d460e532497f
88SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi) = a46581a5832a4a81d36dab78a1fab3dae94ac8fd 88SHA1 (patch-mozilla_media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi) = a46581a5832a4a81d36dab78a1fab3dae94ac8fd
89SHA1 (patch-mozilla_memory_mozalloc_mozalloc__abort.cpp) = 2c2169296c3388fa49f57f55193ebc94892b2c91 89SHA1 (patch-mozilla_memory_mozalloc_mozalloc__abort.cpp) = 2c2169296c3388fa49f57f55193ebc94892b2c91
90SHA1 (patch-mozilla_mfbt_Poison.cpp) = 725f20137d6e0b19d85ee4c5a2fe286015652bad 90SHA1 (patch-mozilla_mfbt_Poison.cpp) = 725f20137d6e0b19d85ee4c5a2fe286015652bad
91SHA1 (patch-mozilla_mobile_android_installer_Makefile.in) = eaafdebbc98b0230ca4aff998f3f319bd65e93c2 91SHA1 (patch-mozilla_mobile_android_installer_Makefile.in) = eaafdebbc98b0230ca4aff998f3f319bd65e93c2
92SHA1 (patch-mozilla_modules_libjar_nsZipArchive.cpp) = b306f3e037aced574e6e245d2bd80ffd5020a43e 92SHA1 (patch-mozilla_modules_libjar_nsZipArchive.cpp) = b306f3e037aced574e6e245d2bd80ffd5020a43e
93SHA1 (patch-mozilla_mozglue_build_arm.cpp) = fcaf79cb25eef5d36e793d54ce5c1fff188bf951 93SHA1 (patch-mozilla_mozglue_build_arm.cpp) = fcaf79cb25eef5d36e793d54ce5c1fff188bf951
94SHA1 (patch-mozilla_mozglue_build_arm.h) = 40d8d2039c68fc825857a3c970eec2f296275cc5 94SHA1 (patch-mozilla_mozglue_build_arm.h) = 40d8d2039c68fc825857a3c970eec2f296275cc5
95SHA1 (patch-mozilla_netwerk_dns_moz.build) = 4ee9fa2a3b33a0fb9ad4c0f883b084f6417b993f 95SHA1 (patch-mozilla_netwerk_dns_moz.build) = 4ee9fa2a3b33a0fb9ad4c0f883b084f6417b993f
 96SHA1 (patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c) = 389f94db5adf882d43c5cb601ec00659b460584b
96SHA1 (patch-mozilla_old-configure.in) = 651bc7aed6cea83ae21a1ac8febf13374ae8c854 97SHA1 (patch-mozilla_old-configure.in) = 651bc7aed6cea83ae21a1ac8febf13374ae8c854
97SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__back.jsm) = ba8e6e427374dbf9f5de695ead6014f560fb305e 98SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__back.jsm) = ba8e6e427374dbf9f5de695ead6014f560fb305e
98SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__front.jsm) = 005ad5608501fdcdeb042715a69ea3073d62fc75 99SHA1 (patch-mozilla_toolkit_components_osfile_modules_osfile__unix__front.jsm) = 005ad5608501fdcdeb042715a69ea3073d62fc75
99SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h) = bf5dc4c221f5822e38a62c6a848c01c65e65dd4d 100SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_atomicops.h) = bf5dc4c221f5822e38a62c6a848c01c65e65dd4d
100SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h) = aa895f7147fdcdaa1dd75b17f96c562d15eed718 101SHA1 (patch-mozilla_toolkit_components_protobuf_src_google_protobuf_stubs_platform__macros.h) = aa895f7147fdcdaa1dd75b17f96c562d15eed718
101SHA1 (patch-mozilla_toolkit_components_terminator_nsTerminator.cpp) = 6b62b786f8c78fb894a941684f7d65deec14f672 102SHA1 (patch-mozilla_toolkit_components_terminator_nsTerminator.cpp) = 6b62b786f8c78fb894a941684f7d65deec14f672
102SHA1 (patch-mozilla_toolkit_library_moz.build) = eef7aad4ff31b8149ca95d50f349fdc1fdd354d8 103SHA1 (patch-mozilla_toolkit_library_moz.build) = eef7aad4ff31b8149ca95d50f349fdc1fdd354d8
103SHA1 (patch-mozilla_toolkit_modules_GMPUtils.jsm) = 324ad1359a071213f83ad5f3b313e88c93812db3 104SHA1 (patch-mozilla_toolkit_modules_GMPUtils.jsm) = 324ad1359a071213f83ad5f3b313e88c93812db3
104SHA1 (patch-mozilla_toolkit_moz.configure) = 6de0e9146d798c4c82b01890bac85ecb54e6a413 105SHA1 (patch-mozilla_toolkit_moz.configure) = 6de0e9146d798c4c82b01890bac85ecb54e6a413
105SHA1 (patch-mozilla_toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js) = ade771fd3c905bddfe40b96333d4836738786881 106SHA1 (patch-mozilla_toolkit_mozapps_extensions_test_browser_browser__gmpProvider.js) = ade771fd3c905bddfe40b96333d4836738786881
106SHA1 (patch-mozilla_toolkit_mozapps_installer_packager.mk) = 46fac105a5baaf7579b9c2b4596b753bd6219517 107SHA1 (patch-mozilla_toolkit_mozapps_installer_packager.mk) = 46fac105a5baaf7579b9c2b4596b753bd6219517
107SHA1 (patch-mozilla_toolkit_xre_glxtest.cpp) = a76049f61427fccf9896960ff9cc18e753e2cadd 108SHA1 (patch-mozilla_toolkit_xre_glxtest.cpp) = a76049f61427fccf9896960ff9cc18e753e2cadd
108SHA1 (patch-mozilla_toolkit_xre_nsEmbedFunctions.cpp) = c6c1390f527f4b45e879f090531a53c3dc798873 109SHA1 (patch-mozilla_toolkit_xre_nsEmbedFunctions.cpp) = c6c1390f527f4b45e879f090531a53c3dc798873

File Added: pkgsrc/mail/thunderbird52/patches/patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c
$NetBSD: patch-mozilla_nsprpub_pr_src_pthreads_ptsynch.c,v 1.1 2020/02/08 22:20:26 kamil Exp $

Workaround buggy usage of pthread_equal().

--- mozilla/nsprpub/pr/src/pthreads/ptsynch.c.orig	2018-07-09 19:54:54.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;