backtrace: don't cons large lists when RCX is overwritten inside XEPs.
authorStas Boukarev <stassats@gmail.com>
Sat, 22 Jun 2013 15:37:18 +0000 (19:37 +0400)
committerStas Boukarev <stassats@gmail.com>
Sat, 22 Jun 2013 15:37:18 +0000 (19:37 +0400)
commit6e8818015788c80c3705748bebada273ff70370e
treec9d513d0e88cc7f8641b887997d7f186f6cea80f
parent77641d60a8b001bf3ccc755f3fb9881ee8d4753f
backtrace: don't cons large lists when RCX is overwritten inside XEPs.

To present a list with the actual number of passed arguments in the
backtrace, clean-xep used the arg-count register and added missing
arguments in the form of #<unknown>, but if the register is
overwritten by other code, it could cons very large lists, exhausting
heap. Do such arg-list clean up only upon INVALID-ARG-COUNT-ERROR.
Fixes lp#1192929.
NEWS
src/code/debug.lisp
tests/debug.impure.lisp