0.9.11.5
[sbcl.git] / src / runtime / win32-os.c
index 8ec02db..0073c60 100644 (file)
@@ -414,7 +414,12 @@ EXCEPTION_DISPOSITION handle_exception(EXCEPTION_RECORD *exception_record,
         return sigtrap_emulator(context, exception_frame);
 
     } else if (exception_record->ExceptionCode == EXCEPTION_ACCESS_VIOLATION &&
-               is_valid_lisp_addr(fault_address)) {
+               (is_valid_lisp_addr(fault_address) ||
+                /* the linkage table does not contain valid lisp
+                 * objects, but is also committed on-demand here
+                 */
+                in_range_p(fault_address, LINKAGE_TABLE_SPACE_START,
+                           LINKAGE_TABLE_SPACE_END))) {
         /* Pick off GC-related memory fault next. */
         MEMORY_BASIC_INFORMATION mem_info;
 
@@ -634,6 +639,10 @@ void scratch(void)
     FlushConsoleInputBuffer(0);
     PeekConsoleInput(0, 0, 0, 0);
     Sleep(0);
+    GetACP();
+    GetOEMCP();
+    GetConsoleCP();
+    GetConsoleOutputCP();
 }
 
 char *