* bug fix: a deadline handler was run without interrupts enabled for a
deadline signaled within SB-THREAD:CONDITION-WAIT. That could result
in infinitely spinning, non-killable threads.
+ * bug fix: backtrace from internal-errors on x86-64 os x was truncated
+ before reaching the erring stack frame.
changes in sbcl-1.0.35 relative to sbcl-1.0.34:
* optimization: ROUND with a single single-float or double-float argument
* the old ESP value and other register state when activated. The
* first part of this is the recovery trampoline, which loads ESP from
* EBP, pops EBP, and returns. */
-asm(".globl _stack_allocation_recover; .align 4; _stack_allocation_recover: mov %rbp, %rsp; pop %rsi; pop %rdi; pop \
-%rdx; pop %rcx; pop %r8; pop %r9; pop %rbp; ret;");
+asm(".globl _stack_allocation_recover; \
+ .align 4; \
+ _stack_allocation_recover: \
+ lea -48(%rbp), %rsp; \
+ pop %rsi; \
+ pop %rdi; \
+ pop %rdx; \
+ pop %rcx; \
+ pop %r8; \
+ pop %r9; \
+ pop %rbp; \
+ ret;");
void open_stack_allocation(x86_thread_state64_t *context)
{
push_context(context->rip, context);
push_context(context->rbp, context);
+ context->rbp = context->rsp;
push_context(context->r9, context);
push_context(context->r8, context);
push_context(context->rsi, context);
push_context(context->rdi, context);
- context->rbp = context->rsp;
context->rip = (u64) stack_allocation_recover;
align_context_stack(context);
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.35.4"
+"1.0.35.5"