[erlang-bugs] FreeBSD FPE issue on ERTS_FP_CHECK_INIT Re: ERTS_FP_CHECK_INIT error of HiPE in 18.0-rc1 running on FreeBSD 10.1-STABLE

Kenji Rikitake kenji@REDACTED
Mon Apr 27 15:29:03 CEST 2015


Mikael:

I managed to reduce the problem to a one-liner.
Executing
trunc(0.8 * (1 bsl 128))
will generate the SIGFPE.

I attached the gdb of FreeBSD 10.1-STABLE to the Erlang beam.smp and generated
the following output.
Regards,
Kenji Rikitake

--- Erlang shell output:

Erlang/OTP 18 [RELEASE CANDIDATE 1] [erts-7.0] [source-71bfef4] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false] [dtrace]

Eshell V7.0  (abort with ^G)
1> trunc(0.8 * (1 bsl 128)).
%%% here FPE is issued and the gdb shows the value...
fpe_sig_action: FPE at 0x4ca1b7
272225893536750785882272431128279252992
2> trunc(0.8 * (1 bsl 128)).
ERTS_FP_CHECK_INIT at 0x571e60: detected unhandled FPE at 0x4cafpe_sig_action: FPE at 0x4ca1b7
272225893536750785882272431128279252992
3> q()
ok

--- output of attached gdb:

Continuing.

Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread 80240a000 (LWP 101243/beam.smp)]
double_to_integer (p=0x8031c0398, x=1.4757395258967642e+19) at beam/erl_bif_guard.c:302
302             d = x;            /* trunc */
Current language:  auto; currently minimal
(gdb) print $mxcsr
$1 = 6401
(gdb) disassemble double_to_integer
Dump of assembler code for function double_to_integer:
[...]
0x00000000004ca1b7 <double_to_integer+519>:     cvttsd2siq %xmm1,%rcx
[...]
End of assembler dump.
(gdb) print $mxcsr
$3 = 6401
(gdb) print $xmm1
$4 = {f = {-1.58818684e-23, 467.199982, 0, 0}}
(gdb) print $rcx
$5 = -9223372036854775808

[End of log]

++> Kenji Rikitake <kenji@REDACTED> [2015-04-27 21:53:44 +0900]:
> Date: Mon, 27 Apr 2015 21:53:44 +0900
> From: Kenji Rikitake <kenji@REDACTED>
> To: Mikael Pettersson <mikpelinux@REDACTED>
> Cc: erlang-bugs@REDACTED
> Subject: Re: [erlang-bugs] FreeBSD FPE issue on ERTS_FP_CHECK_INIT Re:
>  ERTS_FP_CHECK_INIT error of HiPE in 18.0-rc1 running on FreeBSD
>  10.1-STABLE
> 
> FYI:
> A reference on a similar issue on OS X:
> http://erlang.org/pipermail/erlang-bugs/2011-May/002383.html
> 
> The instruction caused the exception was "cvttsd2siq".
> 
> Kenji Rikitake
> 
> ++> Kenji Rikitake <kenji@REDACTED> [2015-04-27 21:16:14 +0900]:
> > > Can you provide a disassembly of erts_gc_trunc_1 from this build?
> > 
> > > Can you provide a disassembly of gc_double_to_integer from this build?
> > 
> > I will send you personally (not on the list).
> _______________________________________________
> erlang-bugs mailing list
> erlang-bugs@REDACTED
> http://erlang.org/mailman/listinfo/erlang-bugs



More information about the erlang-bugs mailing list