-
-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Description
If something causes a stack overflow (with many smallish frames, not a few very large ones) then the debugger attempts to build and attach a menu to the debugger window with restart points.
A typical stack, for a function "R" that recurses indefinitely, gets a stack overflow warning in Lisp, and then takes a stack full fault and drops into URaid looks like:
< l u
0 : 0x1f94e : IL:\TTYBACKGROUND
1 : 0x1f8cc : IL:\GETKEY
2 : 0x1f8b6 : IL:\BIN
3 : 0x1f86c : IL:\FILLBUFFER
4 : 0x1f856 : IL:\READREFILL
5 : 0x1f842 : IL:\CREATELINEBUFFERA0005
6 : 0x1f82a : IL:\EOF.ACTION
7 : 0x1f80a : IL:\CORE.GETNEXTBUFFER
8 : 0x1f7ee : IL:\BUFFERED.BIN
9 : 0x1f7d6 : IL:\BIN
10 : 0x1f7b8 : IL:\XCCSINCCODE
11 : 0x1f796 : IL:\INCCODE.EOLC
12 : 0x1f738 : IL:\SUBREAD
13 : 0x1f704 : SI:*UNWIND-PROTECT*
14 : 0x1f6e4 : IL:\TOP-LEVEL-READ
15 : 0x1f6c0 : IL:READ
16 : 0x1f6a4 : DEBUGGER:EMERGENCY-PANIC-LOOP
17 : 0x1f646 : XCL:DEBUGGER
18 : 0x1f582 : SI:*UNWIND-PROTECT*
19 : 0x1f54a : CL:ERROR
20 : 0x1f52e : IL:ERRORXA0001A0002
21 : 0x1f50a : SI:*UNWIND-PROTECT*
22 : 0x1f4ee : IL:ERRORX
23 : 0x1f4d6 : IL:ERROR
24 : 0x1f4bc : IL:\LISPERROR
25 : 0x1f49c : IL:\DTEST.UFN
26 : 0x1f470 : IL:\COMMON.DSPCREATE
27 : 0x1f44a : IL:DSPCREATE
28 : 0x1f3de : IL:UPDATE/MENU/IMAGE
29 : 0x1f3be : IL:CHECK/MENU/IMAGE
30 : 0x1f378 : DEBUGGER:ATTACH-BACKTRACE-MENU
31 : 0x1f344 : SI:*UNWIND-PROTECT*
32 : 0x1f2e2 : XCL:DEBUGGER
33 : 0x1f21e : SI:*UNWIND-PROTECT*
34 : 0x1f1e6 : CL:ERROR
35 : 0x1f1ca : IL:ERRORXA0001A0002
36 : 0x1f1a6 : SI:*UNWIND-PROTECT*
37 : 0x1f18a : IL:ERRORX
38 : 0x1f174 : IL:\LISPERROR
39 : 0x1f15c : IL:STACK.FULL.WARNING
40 : 0x1f144 : SI:*UNWIND-PROTECT*
41 : 0x1f126 : IL:\DOSTACKFULLINTERRUPT
42 : 0x1f102 : IL:INTERRUPTED
43 : 0x1f0ee : IL:\INTERRUPTED
44 : 0x1f0de : IL:\INTERRUPTFRAME
45 : 0x1f0cc : IL:R
46 : 0x1f0ba : IL:R
47 : 0x1f0a8 : IL:R
48 : 0x1f096 : IL:R
49 : 0x1f084 : IL:R
50 : 0x1f072 : IL:R
51 : 0x1f060 : IL:R
52 : 0x1f04e : IL:R
53 : 0x1f03c : IL:R
[...]
2966 : 0x121b8 : IL:R
2967 : 0x121a6 : IL:R
2968 : 0x12190 : IL:R
2969 : 0x1216e : IL:\EVALFORM
2970 : 0x12150 : IL:FAULTEVAL
2971 : 0x12132 : IL:\EVALFORM
2972 : 0x1211e : IL:EVAL
2973 : 0x120fa : IL:EVAL-INPUT
2974 : 0x12088 : IL:DO-EVENT
2975 : 0x12052 : XCL:EXECA0001A0002
The Lisp debugger window it was trying to create looks like:

The frame for UPDATE/MENU/IMAGE looks like:
< f 28
IVAR -------
1f3d8 : 0x 65 0x c84 IL:MNU {IL:MENU}0x650c84
1f3da : 0x 6f 0x2790 IL:SCREEN {IL:SCREEN}0x6f2790
## STACK BF at 0x1f3dc ##
[cnt=0 ]
ivar : 0xf3d8
>> Bf's ivar says 0x1f3d8 vs. IVar says 0x1f8e2
Fname is IL:UPDATE/MENU/IMAGE
## STACK FX at 0x1f3de ##
[cnt = 0 ]
#alink 0xf3c9 [SLOWP]
fnhead 0x3b8cd4
nextblock 0xf444
pc 0x465
nametbl 0x6f4750
#blink 0xf3dc
#clink 0xf3c8
1f3e8 : 0x e 0x 1 IL:NUMCOLS 1
1f3ea : 0x e 0x b77 IL:NUMROWS 2935
1f3ec : 0x e 0x 68 IL:WIDTH 104
1f3ee : 0x e 0x72a6 IL:HEIGHT 29350
1f3f0 : 0x 0 0x 0 IL:DSP CL:NIL
1f3f2 : 0x 5e 0x9bf8 IL:BLK {IL:BIGBM}0x5e9bf8
1f3f4 : 0x e 0x 68 IL:COLWIDTH 104
1f3f6 : 0x e 0x a IL:ROWHEIGHT 10
1f3f8 : 0x e 0x 1 IL:BITSPERPIXEL 1
1f3fa : 0x 68 0x 21e IL:MENUITEMS (("STACK.FULL.WARNING" 0) ("SI::*UNWIND-PROTECT*" 1) ("INTERRUPTED" 3) ("R" 6) ("R" 7) ("R" 8) ("R" 9) ("R" 10) ("R" 11) ("R" 12) ("R" 13) )
1f3fc : 0x e 0x b77 IL:NITEMS 2935
1f3fe : 0x e 0x 0 IL:BORDER 0
1f400 : 0x e 0x 0 IL:OUTLINE 0
Press Return(to quit Esc and Ret):
1f402 : 0x 7c 0x1b32 IL:FONT {IL:FONTDESCRIPTOR}0x7c1b32
1f404 : 0x 0 0x 0 IL:TITLEFONT CL:NIL
1f406 : 0x e 0x 0 IL:TITLEHEIGHT 0
1f408 : 0x e 0x 0 IL:TITLEWIDTH 0
1f40a : 0x 0 0x 0 IL:WINDOW CL:NIL
1f40c : 0x 0 0x 0 IL:TITLE CL:NIL
1f40e : 0x 0 0x 0 IL:ANYSUBITEMS? CL:NIL
1f410 : 0x 0 0x 0 IL:CENTER? CL:NIL
1f412 : 0x 0 0x 0 *local* [pvar21] CL:NIL
1f414 : 0xffff 0xffff *local* [pvar22] [variable not bound]
1f416 : 0xffff 0xffff IL:I [variable not bound]
1f418 : 0xffff 0xffff IL:NITEMSTOFIT [variable not bound]
1f41a : 0xffff 0xffff IL:ITEMREGION [variable not bound]
1f41c : 0xffff 0xffff IL:MAJOR# [variable not bound]
1f41e : 0xffff 0xffff [not looked up] IL:MENUSUBITEMMARK
1f420 : 0x 0 0x 4c
1f422 : 0x 6f 0x2790
1f424 : 0xfff0 0x 1c
1f426 : 0xfff8 0x 2a
1f428 : 0x 68 0x 21e
1f42a : 0x 0 0x 0
1f42c : 0x e 0x b77
1f42e : 0x e 0x 0
1f430 : 0x e 0x 0
1f432 : 0x 0 0x 0
1f434 : 0x e 0x 68
1f436 : 0x e 0x72a6
1f438 : 0x 65 0x c84
1f43a : 0x 65 0x c84
1f43c : 0x e 0x 1
1f43e : 0x 5e 0x9bf8
1f440 : 0x 0 0x 0
1f442 : 0x 0 0x 0
The menu it is trying to create is 2935 rows, requiring a BIGBM bitmap, with height 29350 pixels -- which is far too large. In trying to create this we take a hard fault running out of stack.