Changeset 12475


Ignore:
Timestamp:
Jul 31, 2009, 12:48:40 AM (10 years ago)
Author:
gb
Message:

In the Windows version of suspend_tcr(), if the suspended thread
is in TCR_STATE_EXCEPTION_RETURN (just given up the exception lock
but not yet changed the valence in restore_windows_context()), just
suspend it and let it restore its own context when it resumes.

The old behavior is at best an optimization, but letting the thread
restore its own context in this case seems to avoid (most? all?) of
the problems in ticket:571 (notably including the failure to restore
the correct selector in %es.)

File:
1 edited

Legend:

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

    r12379 r12475  
    19811981  }
    19821982  tcr->pending_exception_context = NULL;
     1983  tcr->interrupt_context = NULL;
    19831984}
    19841985
     
    20512052        }
    20522053      }
     2054#if 0
    20532055    } else {
    20542056      if (tcr->valence == TCR_STATE_EXCEPTION_RETURN) {
     
    20602062        tcr->valence = TCR_STATE_LISP;
    20612063      }
     2064#endif
    20622065    }
    20632066    tcr->suspend_context = pcontext;
Note: See TracChangeset for help on using the changeset viewer.