Ignore:
Timestamp:
Oct 16, 2007, 5:34:29 PM (12 years ago)
Author:
gb
Message:

try to detect exception in foreign context early

File:
1 edited

Legend:

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

    r7284 r7457  
    11391139arbstack_signal_handler(int signum, siginfo_t *info, ExceptionInformation *context)
    11401140{
    1141   TCR *tcr = get_interrupt_tcr(false);
    1142   area *vs = tcr->vs_area;
    1143   BytePtr current_sp = (BytePtr) current_stack_pointer();
    1144 
    1145   if ((current_sp >= vs->low) &&
    1146       (current_sp < vs->high)) {
    1147     handle_signal_on_foreign_stack(tcr,
    1148                                    signal_handler,
    1149                                    signum,
    1150                                    info,
    1151                                    context,
    1152                                    (LispObj)__builtin_return_address(0)
     1141  TCR *tcr = get_interrupt_tcr(false);
     1142#if 1
     1143  if (tcr->valence != TCR_STATE_LISP) {
     1144    FBug(context, "exception in foreign context");
     1145  }
     1146#endif
     1147  {
     1148    area *vs = tcr->vs_area;
     1149    BytePtr current_sp = (BytePtr) current_stack_pointer();
     1150
     1151    if ((current_sp >= vs->low) &&
     1152        (current_sp < vs->high)) {
     1153      handle_signal_on_foreign_stack(tcr,
     1154                                     signal_handler,
     1155                                     signum,
     1156                                     info,
     1157                                     context,
     1158                                     (LispObj)__builtin_return_address(0)
    11531159#ifdef DARWIN_GS_HACK
    1154                                  , false
    1155 #endif
    1156 
    1157                                    );
    1158   } else {
    1159     signal_handler(signum, info, context, tcr, 0);
     1160                                     , false
     1161#endif
     1162
     1163                                     );
     1164    } else {
     1165      signal_handler(signum, info, context, tcr, 0);
     1166    }
    11601167  }
    11611168}
Note: See TracChangeset for help on using the changeset viewer.