Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • C clim-tos
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 10
    • Issues 10
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • mcclim
  • clim-tos
  • Issues
  • #14
Closed
Open
Issue created Jul 31, 2017 by Jacek Złydach@jzlydachDeveloper

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--
Assignee
Assign to
Time tracking