[Openmcl-cvs-notifications] r15055 - in /trunk/source/lisp-kernel: area.h x86-exceptions.c

gb at clozure.com gb at clozure.com
Wed Nov 2 03:17:24 CDT 2011


Author: gb
Date: Wed Nov  2 03:17:23 2011
New Revision: 15055

Log:
area.h: TSTACK_SOFTPROT and TSTACK_HARDPROT have to be a bit bigger
than the assembler constant tstack_alloc_limit, which is #xffff on
platforms (x86,ppc) where we use a temp stack.

x86-exceptions.c: do_hard_stack_overflow() enters the kernel debugger
with a message saying that an unrecoverable stack overflow has occurred.
We used to try to reset the current thread, but that code hasn't worked
in a long time (and may not really be a good idea.)  It should be possible
to at least get a kernel backtrace or crash dump if things aren't too bad .=
..

Modified:
    trunk/source/lisp-kernel/area.h
    trunk/source/lisp-kernel/x86-exceptions.c

Modified: trunk/source/lisp-kernel/area.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/area.h (original)
+++ trunk/source/lisp-kernel/area.h Wed Nov  2 03:17:23 2011
@@ -134,8 +134,8 @@
 #endif
 =

 #define MIN_TSTACK_SIZE (1<<18)
-#define TSTACK_HARDPROT 0
-#define TSTACK_SOFTPROT (1<<16)
+#define TSTACK_HARDPROT ((1<<16)+(1<<12))
+#define TSTACK_SOFTPROT ((1<<16)+(1<<12))
 =

 #ifdef PPC
 #define CS_OVERFLOW_FORCE_LIMIT ((natural)(-(sizeof(lisp_frame))))

Modified: trunk/source/lisp-kernel/x86-exceptions.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-exceptions.c (original)
+++ trunk/source/lisp-kernel/x86-exceptions.c Wed Nov  2 03:17:23 2011
@@ -756,7 +756,8 @@
 Boolean
 do_hard_stack_overflow(ExceptionInformation *xp, protected_area_ptr area, =
BytePtr addr)
 {
-  reset_lisp_process(xp);
+  /*  reset_lisp_process(xp); */
+  Bug(xp, "Unrecoverable stack overflow.");
   return false;
 }
 =




More information about the Openmcl-cvs-notifications mailing list