diff -ruN ccl-1.7-old/lisp-kernel/x86-exceptions.c ccl-1.7/lisp-kernel/x86-exceptions.c --- ccl-1.7-old/lisp-kernel/x86-exceptions.c 2011-12-06 21:42:28 +0800 +++ ccl-1.7/lisp-kernel/x86-exceptions.c 2011-12-07 11:54:57 +0800 @@ -2067,10 +2067,15 @@ return EXCEPTION_CONTINUE_SEARCH; } else { TCR *tcr = get_interrupt_tcr(false); - area *cs = TCR_AUX(tcr)->cs_area; BytePtr current_sp = (BytePtr) current_stack_pointer(); CONTEXT *context = exception_pointers->ContextRecord; - + area *cs = NULL; + if( !(tcr && TCR_AUX(tcr)) ) + { + return EXCEPTION_CONTINUE_EXECUTION; + } + cs = TCR_AUX(tcr)->cs_area; + ensure_safe_for_string_operations(); if ((current_sp >= cs->low) &&