Ignore:
Timestamp:
Oct 7, 2008, 4:10:52 AM (11 years ago)
Author:
gb
Message:

Define ensure_safe_for_string_operations() - which clears the direction
flag and ensures that %es = %ds - and call it before copying structures
around in windows_arbstack_exception_handler(). (The assembler function
is supposed to trap if %es /= %ds; my model of things is that it always
should be.)

Still get occasional faults in memcpy(), so there may be some similar
case that isn't handled right (maybe interrupt/suspend ?).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-exceptions.c

    r10995 r11002  
    18331833windows_arbstack_exception_handler(EXCEPTION_POINTERS *exception_pointers)
    18341834{
     1835  extern void ensure_safe_for_string_operations(void);
    18351836  DWORD code = exception_pointers->ExceptionRecord->ExceptionCode;
     1837
     1838  ensure_safe_for_string_operations();
    18361839 
    18371840  if ((code & 0x80000000L) == 0) {
Note: See TracChangeset for help on using the changeset viewer.