From: Peter K. <ps...@cs...> - 2013-06-26 06:38:21
|
Hello, I'm doing a little bit of math and ran into an ldb invocation. I'm using the released version of sbcl 1.1.8 on x86 linux built from source with no additional flags (other than --prefix) according to the usual instructions in the install document. I built it with gcc 4.4.3, specifically: 4.4.3-4ubuntu5.1. ------------------------------------------------------ Linux purple > sbcl This is SBCL 1.1.8, an implementation of ANSI Common Lisp. More information about SBCL is available at <http://www.sbcl.org/>. SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. * (declaim (optimize (safety 3) (space 0) (speed 0) (debug 3))) * (cosh 90) fatal error encountered in SBCL pid 28747(tid 3085158080): set_pseudo_atomic_atomic: pseudo atomic bits is -1213584672. Welcome to LDB, a low-level debugger for the Lisp runtime environment. ldb> ------------------------------------------------------ The Hyperspec states that if in (cosh number) the number isn't a number, it *should* signal a type-error. It then states that the operation *might* signal an arithmetic-error and doesn't explain the conditions under which it might. I don't think sbcl is wrong wrt the hyperspec given my example, but it does seem a little unhelpful in this situation. Does this warrant a bug report or is this situation normal? Thank you. -pete |
From: Nikodemus S. <nik...@ra...> - 2013-06-26 07:40:18
|
On 26 June 2013 08:38, Peter Keller <ps...@cs...> wrote: > (cosh 90) I strongly suspect SBCL is trying to report a floating point overflow, at which point things go horribly wrong. ...yes, it is a bug. No matter what SBCL does, crashing into LDB is definitely wrong. -- nikodemus |
From: Paul K. <pv...@pv...> - 2013-06-28 06:36:23
|
Peter Keller wrote: > Hello, > > I'm doing a little bit of math and ran into an ldb invocation. I'm > using the released version of sbcl 1.1.8 on x86 linux built from source [...] > * (cosh 90) > fatal error encountered in SBCL pid 28747(tid 3085158080): > set_pseudo_atomic_atomic: pseudo atomic bits is -1213584672. > > Welcome to LDB, a low-level debugger for the Lisp runtime environment. > ldb> Interesting (: We hit an FPE while boxing the into a heap-allocated single float (we always double round, and the value is fine as a double float). Should be fixed in 8fee78e (Store FP values from x87 to the heap outside pseudo-atomic), and 74cf7a4 (double->single float conversion isn't a no-op on x87 anymore) should cause less surprising results when converting double floats to single. Thank you for the tiny test case! Paul Khuong |
From: Peter K. <ps...@cs...> - 2013-06-28 16:16:09
|
Hello, On Fri, Jun 28, 2013 at 02:36:10AM -0400, Paul Khuong wrote: > Peter Keller wrote: > >Hello, > > > >I'm doing a little bit of math and ran into an ldb invocation. I'm > >using the released version of sbcl 1.1.8 on x86 linux built from source > > [...] > > >* (cosh 90) > >fatal error encountered in SBCL pid 28747(tid 3085158080): > >set_pseudo_atomic_atomic: pseudo atomic bits is -1213584672. > > > >Welcome to LDB, a low-level debugger for the Lisp runtime environment. > >ldb> > > Interesting (: We hit an FPE while boxing the into a heap-allocated > single float (we always double round, and the value is fine as a > double float). > > Should be fixed in 8fee78e (Store FP values from x87 to the heap > outside pseudo-atomic), and 74cf7a4 (double->single float conversion > isn't a no-op on x87 anymore) should cause less surprising results > when converting double floats to single. > > Thank you for the tiny test case! Thank you very much for the quick fix! -pete |