After I physically remove my external monitor, I run an xrandr command to logically disconnect it. When doing this, and there are frames in the disconnected screen/monitor, stumpwm crashes with an "unhandled error",
The xrandr command consists of something like the following:
xrandr --output VGA1 --off
The error backtrace is copied below. (Also, the "copy-unhandled-error" does not work for me. I had to run the below command via swank)
(format nil "~a~%~a" (first *last-unhandled-error*) (second *last-unhandled-error*))
"The value NIL is not of type FRAME.
0: (SB-DEBUG::MAP-BACKTRACE
#<CLOSURE (LAMBDA # :IN SB-DEBUG:BACKTRACE) {100607126B}>
:START
0
:COUNT
100)
1: (SB-DEBUG:BACKTRACE 100 #<SB-IMPL::STRING-OUTPUT-STREAM {1006071163}>)
2: (STUMPWM::BACKTRACE-STRING)
3: (STUMPWM::PERFORM-TOP-LEVEL-ERROR-ACTION
#<TYPE-ERROR expected-type: STUMPWM::FRAME datum: NIL>)
4: (SIGNAL #<TYPE-ERROR expected-type: STUMPWM::FRAME datum: NIL>)
5: (ERROR TYPE-ERROR :DATUM NIL :EXPECTED-TYPE STUMPWM::FRAME)
6: (SB-KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER
#<unavailable argument>
#.(SB-SYS:INT-SAP #X7FFFF6EBED80)
#<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7FFFF6EBE8C0 :TYPE (*
(SB-ALIEN:STRUCT
SB-VM::OS-CONTEXT-T-STRUCT))>
(149 21))
7: (SB-KERNEL:INTERNAL-ERROR
#.(SB-SYS:INT-SAP #X7FFFF6EBE8C0)
#<unavailable argument>)
8: (\"foreign function: call_into_lisp\")
9: (\"foreign function: funcall2\")
10: (\"foreign function: interrupt_internal_error\")
11: (\"foreign function: #x41357B\")
12: ((SB-PCL::FAST-METHOD STUMPWM::GROUP-CURRENT-WINDOW (STUMPWM::TILE-GROUP))
#<unavailable argument>
#<unavailable argument>
#<STUMPWM::TILE-GROUP {1003D44AF3}>)
13: (STUMPWM::HIDE-WINDOW #S(TILE-WINDOW \"ROXTerm\" #x600003))
14: ((SB-PCL::FAST-METHOD STUMPWM::GROUP-REMOVE-HEAD (STUMPWM::TILE-GROUP T))
#<unavailable argument>
#<unavailable argument>
#<STUMPWM::TILE-GROUP {1003D44AF3}>
#S(frame 1 NIL 0 0 1280 800))
15: (STUMPWM::REMOVE-HEAD
#S<screen #<XLIB:SCREEN :0.0 1280x800x24 TRUE-COLOR>>
#S(frame 1 NIL 0 0 1280 800))
16: (STUMPWM::SCALE-SCREEN
#S<screen #<XLIB:SCREEN :0.0 1280x800x24 TRUE-COLOR>>
(#S(frame 0 NIL 0 0 1280 800)))
17: ((LABELS #:G76 :IN \"/home/ernesto/programs/stumpwm/events.lisp\")
:STACK-MODE
NIL
:WINDOW
#<XLIB:WINDOW :0 AC>
:X
0
:Y
0
:WIDTH
1280
:HEIGHT
800
:BORDER-WIDTH
0
:VALUE-MASK
NIL)
18: (STUMPWM::HANDLE-EVENT
:DISPLAY
#<XLIB:DISPLAY :0 (The X.Org Foundation R11204000)>
:EVENT-KEY
:CONFIGURE-NOTIFY
:EVENT-CODE
22
:SEND-EVENT-P
NIL
:SEQUENCE
26141
:EVENT-WINDOW
#<XLIB:WINDOW :0 AC>
:WINDOW
#<XLIB:WINDOW :0 AC>
:ABOVE-SIBLING
NIL
:X
0
:Y
0
:WIDTH
1280
:HEIGHT
800
:BORDER-WIDTH
0
:OVERRIDE-REDIRECT-P
NIL)
19: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN XLIB:PROCESS-EVENT))
20: ((FLET #:WITHOUT-INTERRUPTS-BODY-89240 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
21: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK
#<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN XLIB:PROCESS-EVENT)
{7FFFF6EBF5FB}>
#<SB-THREAD:MUTEX \"CLX Event Lock\"
owner: #<SB-THREAD:THREAD \"main thread\" RUNNING {1003C71043}>>)
22: ((FLET SB-IMPL::TIMEOUT-BODY :IN XLIB:PROCESS-EVENT))
23: (XLIB:PROCESS-EVENT
#<XLIB:DISPLAY :0 (The X.Org Foundation R11204000)>
:HANDLER
#<FUNCTION STUMPWM::HANDLE-EVENT>
:TIMEOUT
0
:PEEK-P
NIL
:DISCARD-P
NIL
:FORCE-OUTPUT-P
T)
24: ((FLET #:WITHOUT-INTERRUPTS-BODY-89240 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
25: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK
#<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN STUMPWM::STUMPWM-INTERNAL-LOOP)
{7FFFF6EBFB2B}>
#<SB-THREAD:MUTEX \"CLX Event Lock\"
owner: #<SB-THREAD:THREAD \"main thread\" RUNNING {1003C71043}>>)
26: (STUMPWM::STUMPWM-INTERNAL-LOOP)
27: (STUMPWM::STUMPWM-INTERNAL \":0\")
28: (STUMPWM \":0\")
29: ((LAMBDA () :IN \"/home/ernesto/programs/stumpwm/make-image.lisp\"))
30: ((FLET #:WITHOUT-INTERRUPTS-BODY-236916 :IN SB-EXT:SAVE-LISP-AND-DIE))
31: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))
"