[erlang-questions] R11 configuration problem

Mikael Pettersson mikpe@REDACTED
Tue Nov 3 18:45:13 CET 2009


=?UTF-8?B?R8O2cmFuIELDpWdl?= writes:
 > Hello,
 > 
 > I tried to install R11R-5 on my new Imac running Snow Leopard and
 > got this trying to configure:
 > ...
 > checking for IP version 6 support... yes
 > checking for multicast support... rm: conftest.dSYM: is a directory
 > yes
 > checking how to correct for time adjustments... none
 > checking if gethrvtime works and how to use it... not working
 > checking if clock_gettime can be used to get process CPU time... not working
 > checking for unreliable floating point execptions...
 > 
 > and there it gets stuck, hangs forever (or a very long time).
 > Anyone out there know what the problem is?
 > No problems with R12, R13, and yes I need R11 as we have customer installations
 > using R11 that we need to maintain.

There are two main changes related to that test between R11B-5 and R12B-5,
the first is surrounding logic to only run the test if HiPE is enabled or
the user requested the feature, the second is a check in the test itself
against infinite SIGFPE loops. I suspect the latter is what's happening to
you. The patch below backports that one fix to R11B-5, apply it and try
./configure again.

--- otp_src_R11B-5/erts/configure.in.~1~	2007-06-11 14:53:45.000000000 +0200
+++ otp_src_R11B-5/erts/configure.in	2009-11-03 18:41:17.000000000 +0100
@@ -1674,6 +1674,19 @@ AC_TRY_RUN([
 
 volatile int erl_fp_exception;
 
+/*
+ * We expect a single SIGFPE in this test program.
+ * Getting many more indicates an inadequate SIGFPE handler,
+ * e.g. using the generic handler on x86.
+ */
+static void new_fp_exception(void)
+{
+    if (++erl_fp_exception > 50) {
+	fprintf(stderr, "SIGFPE loop detected, bailing out\n");
+	exit(1);
+    }
+}
+
 /* Is there no standard identifier for Darwin/MacOSX ? */
 #if defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN__)
 #define __DARWIN__ 1
@@ -2017,7 +2030,7 @@ static void fpe_sig_action(int sig, sigi
     fpstate->mxcsr = 0x1F80;
     fpstate->sw &= ~0xFF;
 #endif
-    erl_fp_exception = 1;
+    new_fp_exception();
 }
 
 static void do_init(void)
@@ -2034,7 +2047,7 @@ static void do_init(void)
 
 static void fpe_sig_handler(int sig)
 {
-    erl_fp_exception = 1;
+    new_fp_exception();
 }
 
 static void do_init(void)
--- otp_src_R11B-5/erts/configure.~1~	2007-06-11 19:16:18.000000000 +0200
+++ otp_src_R11B-5/erts/configure	2009-11-03 18:42:20.000000000 +0100
@@ -18197,6 +18197,19 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 volatile int erl_fp_exception;
 
+/*
+ * We expect a single SIGFPE in this test program.
+ * Getting many more indicates an inadequate SIGFPE handler,
+ * e.g. using the generic handler on x86.
+ */
+static void new_fp_exception(void)
+{
+    if (++erl_fp_exception > 50) {
+	fprintf(stderr, "SIGFPE loop detected, bailing out\n");
+	exit(1);
+    }
+}
+
 /* Is there no standard identifier for Darwin/MacOSX ? */
 #if defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN__)
 #define __DARWIN__ 1
@@ -18540,7 +18553,7 @@ static void fpe_sig_action(int sig, sigi
     fpstate->mxcsr = 0x1F80;
     fpstate->sw &= ~0xFF;
 #endif
-    erl_fp_exception = 1;
+    new_fp_exception();
 }
 
 static void do_init(void)
@@ -18557,7 +18570,7 @@ static void do_init(void)
 
 static void fpe_sig_handler(int sig)
 {
-    erl_fp_exception = 1;
+    new_fp_exception();
 }
 
 static void do_init(void)


More information about the erlang-questions mailing list