In Lisp Listener - sometimes an invalidated cached region seems to slip through to CLIM-UTILS:LTRB-OVERLAPS-LTRB-P
It seems that cached regions and transformations are "invalidated" by setting their left
slot to NIL
. See invalidate-cached-regions ((sheet sheet-transformation-mixin))
and invalidate-cached-transformations ((sheet sheet-transformation-mixin))
methods in silica/sheet.lisp
.
Somehow, this slips through the call to sheet-device-region
and ends up crashing compute-gcontext-clip-mask
.
To reproduce, fire up Lisp Listener demo, place your mouse pointer over the stream of TIMEOUTs, and just wait a while.
I marked some suspicious places with comment notes.
Condition with some context expanded:
The value
NIL
is not of type
REAL
[Condition of type TYPE-ERROR]
Restarts:
0: [ABORT] Return to Demo Driver command level
1: [NIL] Demo Driver top level
2: [NIL] Exit Demo Driver
3: [ABORT] abort thread (#<THREAD "Demo Driver" RUNNING {10023A8D53}>)
Backtrace:
0: (CLIM-UTILS:LTRB-OVERLAPS-LTRB-P NIL 3 941 1042 0 -44297 958 -43238)
Locals:
#:ARG00 = NIL
BOTTOM1 = 1042
BOTTOM2 = -43238
#:G29 = NIL
LEFT1 = NIL
LEFT2 = 0
SB-C::MAXREST = 0
RIGHT1 = 941
RIGHT2 = 958
TOP1 = 3
TOP2 = -44297
1: ((:METHOD CLX-CLIM::COMPUTE-GCONTEXT-CLIP-MASK (CLX-CLIM::CLX-MEDIUM)) #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>) [fast-method]
Locals:
CLX-CLIM::CBOTTOM#1 = 1042
CLX-CLIM::CLEFT#1 = NIL
CLX-CLIM::CRIGHT#1 = 941
CLX-CLIM::CTOP#1 = 3
#:G0 = NIL
CLX-CLIM::MBOTTOM = 1056
CLX-CLIM::MBOTTOM#1 = 1056
CLIM:MEDIUM = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
CLX-CLIM::MEDIUM-REGION = #<CLIM:STANDARD-BOUNDING-RECTANGLE /x -3:955 y -3:1056/ {100DCDFCD3}>
CLX-CLIM::MLEFT = -3
CLX-CLIM::MLEFT#1 = -3
CLX-CLIM::MRIGHT = 955
CLX-CLIM::MRIGHT#1 = 955
CLX-CLIM::MTOP = -3
CLX-CLIM::MTOP#1 = -3
CLIM:REGION = #<CLIM:STANDARD-BOUNDING-RECTANGLE /x NIL:941 y 3:1042/ {100FAF4163}>
CLIM:SHEET = #<CLIM:INTERACTOR-PANE {100D050483}>
2: ((:METHOD CLX-CLIM::CLX-DECODE-INK :AROUND (T CLX-CLIM::CLX-MEDIUM)) #<CLIM-UTILS:FLIPPING-INK #<CLIM Foreground> and #<CLIM Background> {1004F78FE3}> #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>) [fast-metho..
Locals:
SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL ..)
#:GCONTEXT = #<XLIB:GCONTEXT :0 37748768>
CLX-CLIM::INK = #<CLIM-UTILS:FLIPPING-INK #<CLIM Foreground> and #<CLIM Background> {1004F78FE3}>
CLX-CLIM::INK#1 = #<XLIB:GCONTEXT :0 37748768>
CLIM:MEDIUM = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
3: ((:METHOD CLIM:MEDIUM-DRAW-RECTANGLE* (CLX-CLIM::CLX-MEDIUM T T T T T)) #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}> 2 905 73 924 NIL) [fast-method]
Locals:
CLIM-UTILS:BOTTOM = 924
CLX-CLIM::DRAWABLE = #<XLIB:WINDOW :0 2400015>
CLX-CLIM::FILLED = NIL
CLX-CLIM::INK = #<CLIM-UTILS:FLIPPING-INK #<CLIM Foreground> and #<CLIM Background> {1004F78FE3}>
CLIM-UTILS:LEFT = 2
CLIM:LINE-STYLE = #<CLIM:STANDARD-LINE-STYLE Units normal, thickness 1, joint miter, cap butt, dashes NIL {1004F7E123}>
CLIM:MEDIUM = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
CLIM-UTILS:RIGHT = 73
CLIM:SHEET = #<CLIM:INTERACTOR-PANE {100D050483}>
CLIM-UTILS:TOP = 905
CLX-CLIM::TRANSFORM = #<CLIM-UTILS:TRANSLATION-TRANSFORMATION (3.0,-44294.0) {100FAF3BB3}>
4: ((FLET CALL-NEXT-METHOD :IN "/home/temporal/repos/franz/gramps-clim2/silica/graphics.lisp") #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}> -1 45199 70 45218 NIL)
Locals:
SB-PCL::.ARGS-TAIL. = NIL
SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:MEDIUM-DRAW-RECTANGLE* (CLX-CLIM::CLX-MEDIUM T T T T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (6))
SB-PCL::CNM-ARGS = (#<CLX-CLIM::CLX-MEDIUM {100D6E28D3}> -1 45199 70 45218 NIL)
#:EMF-N-149 = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:MEDIUM-DRAW-RECTANGLE* (CLX-CLIM::CLX-MEDIUM T T T T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (6))
CLIM-SILICA::FILLED = NIL
CLIM-SILICA::FILLED#1 = NIL
#:G150 = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:MEDIUM-DRAW-RECTANGLE* (CLX-CLIM::CLX-MEDIUM T T T T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (6))
CLIM:MEDIUM = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
CLIM:MEDIUM#1 = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
CLIM-SILICA::X1 = -1
CLIM-SILICA::X1#1 = -1
CLIM-SILICA::X2 = 70
CLIM-SILICA::X2#1 = 70
CLIM-SILICA::Y1 = 45199
CLIM-SILICA::Y1#1 = 45199
CLIM-SILICA::Y2 = 45218
CLIM-SILICA::Y2#1 = 45218
5: ((:METHOD CLIM:MEDIUM-DRAW-RECTANGLE* :AROUND (CLIM:BASIC-MEDIUM T T T T T)) #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}> -1 45199 70 45218 NIL) [fast-method]
Locals:
SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:MEDIUM-DRAW-RECTANGLE* (CLX-CLIM::CLX-MEDIUM T T T T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (6))
CLIM-SILICA::FILLED = NIL
#:G187 = -1
#:G188 = 45199
#:G189 = 70
#:G190 = 45218
CLIM:MEDIUM = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
CLIM-SILICA::TRANSFORM#1 = #<CLIM-UTILS:IDENTITY-TRANSFORMATION {1004F66113}>
CLIM-SILICA::X1 = -1
CLIM-SILICA::X2 = 70
CLIM-SILICA::Y1 = 45199
CLIM-SILICA::Y2 = 45218
6: (CLIM-INTERNALS::DRAW-RECTANGLE-INTERNAL #<CLIM:INTERACTOR-PANE {100D050483}> 0 0 -1 45199 70 45218 #<CLIM-UTILS:FLIPPING-INK #<CLIM Foreground> and #<CLIM Background> {1004F78FE3}> #<CLIM:STANDARD-LI..
Locals:
BOTTOM = 45218
INK = #<CLIM-UTILS:FLIPPING-INK #<CLIM Foreground> and #<CLIM Background> {1004F78FE3}>
LEFT = -1
#:LETF-GLOBALLY-TEMP-79 = #<CLIM:STANDARD-LINE-STYLE Units normal, thickness 1, joint miter, cap butt, dashes NIL {1004F7E123}>
#:LETF-GLOBALLY-TEMP-80 = #<CLIM-UTILS:IDENTITY-TRANSFORMATION {1004F66113}>
#:LETF-GLOBALLY-TEMP-81 = #<CLIM-UTILS:FLIPPING-INK #<CLIM Foreground> and #<CLIM Background> {1004F78FE3}>
MEDIUM = #<CLX-CLIM::CLX-MEDIUM {100D6E28D3}>
RIGHT = 70
STREAM = #<CLIM:INTERACTOR-PANE {100D050483}>
STYLE = #<CLIM:STANDARD-LINE-STYLE Units normal, thickness 1, joint miter, cap butt, dashes NIL {1004F7E123}>
TOP = 45199
XOFF = 0
YOFF = 0
7: ((:METHOD CLIM:HIGHLIGHT-OUTPUT-RECORD (CLIM-INTERNALS::OUTPUT-RECORD-ELEMENT-MIXIN T T)) #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}> #<CLIM:INTERACTOR-P..
Locals:
CLIM-UTILS:BOTTOM = 45218
CLIM-UTILS:BOTTOM#1 = 45218
CLIM-UTILS:LEFT = 0
CLIM-UTILS:LEFT#1 = 0
CLIM-INTERNALS::RECORD = #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}>
CLIM-UTILS:RIGHT = 70
CLIM-UTILS:RIGHT#1 = 70
STREAM = #<CLIM:INTERACTOR-PANE {100D050483}>
CLIM-UTILS:TOP = 45200
CLIM-UTILS:TOP#1 = 45200
CLIM-INTERNALS::XOFF = 0
CLIM-INTERNALS::XOFF#1 = 0
CLIM-INTERNALS::YOFF = 0
CLIM-INTERNALS::YOFF#1 = 0
8: ((FLET CALL-NEXT-METHOD :IN "/home/temporal/repos/franz/gramps-clim2/clim/presentations.lisp"))
Locals:
SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:HIGHLIGHT-OUTPUT-RECORD (CLIM-INTERNALS::OUTPUT-RECORD-ELEMENT-MIXIN T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (3))
SB-PCL::CNM-ARGS = NIL
#:EMF-N-15 = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:HIGHLIGHT-OUTPUT-RECORD (CLIM-INTERNALS::OUTPUT-RECORD-ELEMENT-MIXIN T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (3))
#:G16 = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:HIGHLIGHT-OUTPUT-RECORD (CLIM-INTERNALS::OUTPUT-RECORD-ELEMENT-MIXIN T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (3))
CLIM-INTERNALS::RECORD = #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}>
CLIM-INTERNALS::STATE = :UNHIGHLIGHT
STREAM = #<CLIM:INTERACTOR-PANE {100D050483}>
9: ((:METHOD CLIM:HIGHLIGHT-OUTPUT-RECORD :AROUND (CLIM:STANDARD-PRESENTATION T T)) #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}> #<CLIM:INTERACTOR-PANE {100D..
Locals:
SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD CLIM:HIGHLIGHT-OUTPUT-RECORD (CLIM-INTERNALS::OUTPUT-RECORD-ELEMENT-MIXIN T T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (3))
CLIM-INTERNALS::RECORD = #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}>
CLIM-INTERNALS::SINGLE-BOX = :HIGHLIGHTING
CLIM-INTERNALS::STATE = :UNHIGHLIGHT
STREAM = #<CLIM:INTERACTOR-PANE {100D050483}>
10: ((:METHOD CLIM:HIGHLIGHT-PRESENTATION-METHOD (T T T T T T T)) #<unused argument> #<unused argument> #<unused argument> #<unused argument> #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 ..
Locals:
CLIM-INTERNALS::RECORD = #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}>
CLIM-INTERNALS::STATE = :UNHIGHLIGHT
STREAM = #<CLIM:INTERACTOR-PANE {100D050483}>
11: ((FLET CLIM-INTERNALS::WITH-OUTPUT-RECORDING-OPTIONS-BODY :IN CLIM:HIGHLIGHT-PRESENTATION))
12: ((:METHOD CLIM:INVOKE-WITH-OUTPUT-RECORDING-OPTIONS (CLIM-INTERNALS::OUTPUT-RECORDING-MIXIN T T T)) #<CLIM:INTERACTOR-PANE {100D050483}> #<CLOSURE (FLET CLIM-INTERNALS::WITH-OUTPUT-RECORDING-OPTIONS-B..
13: (CLIM:HIGHLIGHT-PRESENTATION #<CLIM:STANDARD-PRESENTATION CLIM:EXPRESSION :TIMEOUT /x 0:70 y 45200:45218/ {100FAC5903}> CLIM:EXPRESSION #<CLIM:INTERACTOR-PANE {100D050483}> :UNHIGHLIGHT)
14: (CLIM:UNHIGHLIGHT-HIGHLIGHTED-PRESENTATION #<CLIM:APPLICATION-PANE {10032BE633}> T)
15: (CLIM:ACCEPT-1 #<CLIM:APPLICATION-PANE {10032BE633}> (CLIM:COMMAND :COMMAND-TABLE CLIM-DEMO::DEMO-DRIVER) :VIEW #<CLIM:TEXTUAL-VIEW {1004F66033}> :DEFAULT NIL :DEFAULT-TYPE NIL :HISTORY NIL :INSERT-DE..
16: ((:METHOD CLIM:STREAM-ACCEPT (CLIM-INTERNALS::INPUT-PROTOCOL-MIXIN T)) #<CLIM:APPLICATION-PANE {10032BE633}> (CLIM:COMMAND :COMMAND-TABLE CLIM-DEMO::DEMO-DRIVER) :VIEW #<CLIM:TEXTUAL-VIEW {1004F66033}..
17: (CLIM:ACCEPT (CLIM:COMMAND :COMMAND-TABLE CLIM-DEMO::DEMO-DRIVER) :STREAM #<CLIM:APPLICATION-PANE {10032BE633}> :PROMPT NIL)
18: (CLIM:ACCEPT (CLIM:COMMAND :COMMAND-TABLE CLIM-DEMO::DEMO-DRIVER) :STREAM #<CLIM:APPLICATION-PANE {10032BE633}> :PROMPT NIL) [more]
19: (CLIM:READ-COMMAND CLIM-DEMO::DEMO-DRIVER :STREAM #<CLIM:APPLICATION-PANE {10032BE633}> :COMMAND-PARSER NIL :COMMAND-UNPARSER NIL :PARTIAL-COMMAND-PARSER NIL :USE-KEYSTROKES NIL)
--more--