ports/122975: [PATCH] Fix for mail/thunderbird SIGFPE crash on FreeBSD/amd64
Xin LI
delphij at FreeBSD.org
Mon Apr 21 22:10:03 UTC 2008
>Number: 122975
>Category: ports
>Synopsis: [PATCH] Fix for mail/thunderbird SIGFPE crash on FreeBSD/amd64
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon Apr 21 22:10:03 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Xin LI
>Release: FreeBSD 7.0-STABLE i386
>Organization:
The FreeBSD Project
>Environment:
System: FreeBSD freefall.freebsd.org 7.0-STABLE FreeBSD 7.0-STABLE #34: Sat Apr 12 11:52:18 UTC 2008 simon at freefall.freebsd.org:/usr/src/sys/i386/compile/FREEFALL i386
>Description:
thunderbird crashes on FreeBSD/amd64 8.0-CURRENT due to SIGFPE
issue, which is caused by caculation towards to 0 for a lot of pieces
of code.
This patch extends the mask of underflow exception from covering
only i386 to both i386 and amd64.
>How-To-Repeat:
>Fix:
--- thunderbird.diff begins here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/mail/thunderbird/Makefile,v
retrieving revision 1.90
diff -u -p -r1.90 Makefile
--- Makefile 19 Apr 2008 17:51:46 -0000 1.90
+++ Makefile 21 Apr 2008 21:58:18 -0000
@@ -8,7 +8,7 @@
PORTNAME= thunderbird
DISTVERSION= 2.0.0.12
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= mail ipv6
MASTER_SITES= ${MASTER_SITE_MOZILLA_EXTENDED}
MASTER_SITE_SUBDIR= thunderbird/releases/${DISTVERSION}/source
Index: files/patch-Double.cpp
===================================================================
RCS file: /home/ncvs/ports/mail/thunderbird/files/patch-Double.cpp,v
retrieving revision 1.2
diff -u -p -r1.2 patch-Double.cpp
--- files/patch-Double.cpp 16 Nov 2003 18:55:33 -0000 1.2
+++ files/patch-Double.cpp 21 Apr 2008 21:05:06 -0000
@@ -1,20 +1,20 @@
---- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
-+++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
-@@ -51,10 +51,10 @@
+--- extensions/transformiix/source/base/Double.cpp.orig 2006-06-22 12:13:00.000000000 -0700
++++ extensions/transformiix/source/base/Double.cpp 2008-04-21 14:04:37.540570448 -0700
+@@ -52,10 +52,10 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
-#else
-+#if defined(__i386__)
++#if defined(__i386__) || defined(__amd64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
+#else
+fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#endif
fp_except_t oldmask = fpsetmask(~allmask);
#endif
-@@ -75,22 +75,31 @@
+@@ -115,22 +115,31 @@
#define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
#define TX_DOUBLE_HI32_MANTMASK 0x000fffff
--- thunderbird.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list