Re: 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 <[email protected]> Sat, 2 May 2015 12:44:55 +0900
| Newsgroups | gmane.comp.lang.erlang.bugs |
|---|---|
| Message-ID | <CANWtcNjrhJojfVjo7s=V2bxDz0GXfwY2OvBsh-APa6qOT7Hriw@mail.gmail.com> |
Thanks Mikael for the confirmation. So can I conclude this as a bug or FPE handling difference between gcc and clang? (I noticed on my OS X the *gcc-compiled* 18.0-rc1 didn't cause the problem either.) Regards, Kenji Rikitake On Sat, May 2, 2015 at 3:04 AM, Mikael Pettersson <[email protected]> wrote: > Kenji Rikitake writes: > > Mikael: > > > > I managed to reduce the problem to a one-liner. > > Executing > > trunc(0.8 * (1 bsl 128)) > > will generate the SIGFPE. > > I can reproduce the SIGFPE on Linux/x86_64 by compiling OTP-18-rc1 with > clang-3.6.0. > > > > > > 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 <[email protected]> [2015-04-27 21:53:44 +0900]: > > > Date: Mon, 27 Apr 2015 21:53:44 +0900 > > > From: Kenji Rikitake <[email protected]> > > > To: Mikael Pettersson <[email protected]> > > > Cc: [email protected] > > > 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 <[email protected]> [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 > > > [email protected] > > > http://erlang.org/mailman/listinfo/erlang-bugs > > -- > _______________________________________________ erlang-bugs mailing list [email protected] http://erlang.org/mailman/listinfo/erlang-bugs