Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#776 closed defect (fixed)

crash on 64-bit windows

Reported by: rme Owned by: gb
Priority: normal Milestone:
Component: Runtime (threads, GC) Version: trunk
Keywords: Cc:


Evaluating the following form in a trunk lisp (r14424) dumps us into the kernel debugger.

(exp (+ (log most-positive-single-float) 100))

Change History (4)

comment:1 Changed 11 years ago by gb

The low-level Windows exception handler gets STATUS_FLOAT_OVERFLOW, finds that it's on the foreign stack, and enters the kernel debugger. (If one eXits from the kernel debugger, nothing notices that the exception has occurred and +INF is returned.)

We don't reach our SIGFPE handler, which would do the right thing.

Because Windows is so .... dysfunctional ... at least with respect to signal masks and that sort of thing, it'd actually be best if we checked for this case (some Windows exception that maps to SIGFPE, running on the foreign stack) and did the fixup in the low-level Windows "arbstack" handler.

comment:2 Changed 11 years ago by gb

  • Owner set to gb
  • Status changed from new to assigned

comment:3 Changed 11 years ago by gb

  • Resolution set to fixed
  • Status changed from assigned to closed

At least some functions in the Win64 math library manipulate the MXCSR's exception mask and signal exceptions in software, so the new (1.6) scheme for dealing with foreign FP exceptions can't work. I reenabled the old scheme for Windows in r14425, and that both keeps us from getting an unexpected foreign exception and allows us to see that overflow occurred in this case.

comment:4 Changed 11 years ago by rme

(In [14433]) Merge r14425 through r14432 from trunk.


  • foreign FPE handling (see ticket:776 and ticket:715)
  • %get-xcf-byte on x8632 (r14428)
  • make IDE "open selection" slightly smarter (r14429)
  • ensure advapi32.dll is loaded on 64-bit Windows (r14431)
  • Windows shared library improvements (r14432)
Note: See TracTickets for help on using tickets.