I caught an assertion in signal_1(), the following lines:
if (gc_in_progress || in_display)
/* This is one of many reasons why you can't run lisp code from redisplay.
There is no sensible way to handle errors there. */
abort ();
Unfortunately, debugger crashed, so no backtrace this time...
Something wrong is going on in there, certainly.
Big K