Closed ddkwork closed 8 months ago
GOROOT=C:\Users\Admin\go\pkg\mod\golang.org\toolchain@v0.0.1-go1.21.4.windows-amd64 #gosetup
GOPATH=C:\Users\Admin\go #gosetup
C:\Users\Admin\go\pkg\mod\golang.org\toolchain@v0.0.1-go1.21.4.windows-amd64\bin\go.exe build -o C:\Users\Admin\AppData\Local\JetBrains\GoLand2023.3\tmp\GoLand\___11go_build_github_com_ddkwork_workspace_demo_debugger.exe -gcflags "all=-N -l" github.com/ddkwork/workspace/demo/debugger #gosetup
"C:\Program Files\JetBrains\GoLand 2023.3.2\plugins\go-plugin\lib\dlv\windows\dlv.exe" --listen=127.0.0.1:29604 --headless=true --api-version=2 --check-go-version=false --only-same-user=false exec C:\Users\Admin\AppData\Local\JetBrains\GoLand2023.3\tmp\GoLand\___11go_build_github_com_ddkwork_workspace_demo_debugger.exe --
API server listening at: 127.0.0.1:29604
panic: runtime error: invalid memory address or nil pointer dereference
----- START OF STACK TRACE: -----
goroutine 23 [running]:
runtime/debug.Stack()
C:/Users/Admin/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.windows-amd64/src/runtime/debug/stack.go:24 +0x6b
goki.dev/goosi.HandleRecoverBase({0x7ff635e86340, 0x7ff635da8a40})
D:/workspace/workspace/goki/goosi/recover.go:50 +0x3c
goki.dev/goosi.glob..func1({0x7ff635e86340, 0x7ff635da8a40})
D:/workspace/workspace/goki/goosi/recover.go:33 +0x1d
goki.dev/gi.(*RenderWin).EventLoop.func1()
D:/workspace/workspace/goki/gi/renderwin.go:567 +0x2e
panic({0x7ff635e86340?, 0x7ff635da8a40?})
C:/Users/Admin/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.windows-amd64/src/runtime/panic.go:920 +0x290
goki.dev/gi.(*Layout).PositionScroll(0xc00062b600, 0x1)
D:/workspace/workspace/goki/gi/scroll.go:139 +0x1bd
goki.dev/gi.(*Layout).PositionScrolls(0xc00062b600)
D:/workspace/workspace/goki/gi/scroll.go:130 +0x5a
goki.dev/gi.(*Layout).ScenePosLay(0xc00062b600)
D:/workspace/workspace/goki/gi/layimpl.go:1851 +0xbb
goki.dev/gi.(*Layout).ScenePos(0xc00062b600)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosParts(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1813 +0x35
goki.dev/gi.(*WidgetBase).SetBBoxes(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1806 +0xa48
goki.dev/gi.(*WidgetBase).ScenePosWidget(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1749 +0x25
goki.dev/gi.(*Layout).ScenePosLay(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1849 +0xa7
goki.dev/gi.(*Layout).ScenePos(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x1, {0x260e5063240, 0xc000247200}, 0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000246000, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x0, {0x260e5063240, 0xc000246000}, 0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc0003f6900, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x0, {0x7ff6365560d0, 0xc0003f6900}, 0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc0003f6000, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x1, {0x7ff6365560d0, 0xc0003f6000}, 0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000396d00, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x0, {0x7ff636555aa0, 0xc000396d00}, 0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000395200, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x1, {0x260e4efb070, 0xc000395200}, 0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000398000, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*Scene).LayoutScene(0xc000398000)
D:/workspace/workspace/goki/gi/render.go:384 +0x625
goki.dev/gi.(*Scene).LayoutRenderScene(0xc000398000)
D:/workspace/workspace/goki/gi/render.go:390 +0x18
goki.dev/gi.(*Scene).DoUpdate(0xc000398000)
D:/workspace/workspace/goki/gi/render.go:452 +0x4c5
goki.dev/gi.(*Stage).DoUpdate(0xc000379680)
D:/workspace/workspace/goki/gi/stage.go:330 +0xbe
goki.dev/gi.(*StageMgr).UpdateAll(0xc00069e578)
D:/workspace/workspace/goki/gi/stagemgr.go:238 +0x1d7
goki.dev/gi.(*RenderWin).RenderWindow(0xc00069e540)
D:/workspace/workspace/goki/gi/renderwin.go:964 +0xca
goki.dev/gi.(*RenderWin).HandleWindowEvents(0xc00069e540, {0x7ff63653e818, 0xc00075e2a0})
D:/workspace/workspace/goki/gi/renderwin.go:623 +0x7f2
goki.dev/gi.(*RenderWin).HandleEvent(0xc00069e540, {0x7ff63653e818, 0xc00075e2a0})
D:/workspace/workspace/goki/gi/renderwin.go:608 +0x1cc
goki.dev/gi.(*RenderWin).EventLoop(0xc00069e540)
D:/workspace/workspace/goki/gi/renderwin.go:579 +0x314
created by goki.dev/gi.(*RenderWin).GoStartEventLoop in goroutine 1
D:/workspace/workspace/goki/gi/renderwin.go:535 +0xe6
----- END OF STACK TRACE -----
2024/01/11 22:57:52 INFO SAVED CRASH LOG TO C:\Users\Admin\AppData\Roaming\Goki\crash-logs\debugger\crash_2024-01-11_22-57-52
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x7ff6358f655d]
goroutine 23 [running]:
goki.dev/goosi.HandleRecoverPanic({0x7ff635e86340, 0x7ff635da8a40})
D:/workspace/workspace/goki/goosi/recover.go:85 +0xab
goki.dev/goosi.glob..func1({0x7ff635e86340, 0x7ff635da8a40})
D:/workspace/workspace/goki/goosi/recover.go:34 +0x2c
goki.dev/gi.(*RenderWin).EventLoop.func1()
D:/workspace/workspace/goki/gi/renderwin.go:567 +0x2e
panic({0x7ff635e86340?, 0x7ff635da8a40?})
C:/Users/Admin/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.windows-amd64/src/runtime/panic.go:920 +0x290
goki.dev/gi.(*Layout).PositionScroll(0xc00062b600, 0x1)
D:/workspace/workspace/goki/gi/scroll.go:139 +0x1bd
goki.dev/gi.(*Layout).PositionScrolls(0xc00062b600)
D:/workspace/workspace/goki/gi/scroll.go:130 +0x5a
goki.dev/gi.(*Layout).ScenePosLay(0xc00062b600)
D:/workspace/workspace/goki/gi/layimpl.go:1851 +0xbb
goki.dev/gi.(*Layout).ScenePos(0xc00062b600)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosParts(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1813 +0x35
goki.dev/gi.(*WidgetBase).SetBBoxes(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1806 +0xa48
goki.dev/gi.(*WidgetBase).ScenePosWidget(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1749 +0x25
goki.dev/gi.(*Layout).ScenePosLay(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1849 +0xa7
goki.dev/gi.(*Layout).ScenePos(0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x1, {0x260e5063240, 0xc000247200}, 0xc000247200)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000246000, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x0, {0x260e5063240, 0xc000246000}, 0xc000246000)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc0003f6900, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x0, {0x7ff6365560d0, 0xc0003f6900}, 0xc0003f6900)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc0003f6000, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x1, {0x7ff6365560d0, 0xc0003f6000}, 0xc0003f6000)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000396d00, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x0, {0x7ff636555aa0, 0xc000396d00}, 0xc000396d00)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000395200, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*WidgetBase).ScenePosChildren.func1(0x1, {0x260e4efb070, 0xc000395200}, 0xc000395200)
D:/workspace/workspace/goki/gi/layimpl.go:1819 +0x3c
goki.dev/gi.(*WidgetBase).VisibleKidsIter(0xc000398000, 0x7ff6364afa50)
D:/workspace/workspace/goki/gi/widget.go:508 +0x209
goki.dev/gi.(*WidgetBase).ScenePosChildren(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1818 +0x1f
goki.dev/gi.(*Layout).ScenePosChildren(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1833 +0x92
goki.dev/gi.(*Layout).ScenePosLay(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1850 +0xb1
goki.dev/gi.(*Layout).ScenePos(0xc000398000)
D:/workspace/workspace/goki/gi/layimpl.go:1840 +0x18
goki.dev/gi.(*Scene).LayoutScene(0xc000398000)
D:/workspace/workspace/goki/gi/render.go:384 +0x625
goki.dev/gi.(*Scene).LayoutRenderScene(0xc000398000)
D:/workspace/workspace/goki/gi/render.go:390 +0x18
goki.dev/gi.(*Scene).DoUpdate(0xc000398000)
D:/workspace/workspace/goki/gi/render.go:452 +0x4c5
goki.dev/gi.(*Stage).DoUpdate(0xc000379680)
D:/workspace/workspace/goki/gi/stage.go:330 +0xbe
goki.dev/gi.(*StageMgr).UpdateAll(0xc00069e578)
D:/workspace/workspace/goki/gi/stagemgr.go:238 +0x1d7
goki.dev/gi.(*RenderWin).RenderWindow(0xc00069e540)
D:/workspace/workspace/goki/gi/renderwin.go:964 +0xca
goki.dev/gi.(*RenderWin).HandleWindowEvents(0xc00069e540, {0x7ff63653e818, 0xc00075e2a0})
D:/workspace/workspace/goki/gi/renderwin.go:623 +0x7f2
goki.dev/gi.(*RenderWin).HandleEvent(0xc00069e540, {0x7ff63653e818, 0xc00075e2a0})
D:/workspace/workspace/goki/gi/renderwin.go:608 +0x1cc
goki.dev/gi.(*RenderWin).EventLoop(0xc00069e540)
D:/workspace/workspace/goki/gi/renderwin.go:579 +0x314
created by goki.dev/gi.(*RenderWin).GoStartEventLoop in goroutine 1
D:/workspace/workspace/goki/gi/renderwin.go:535 +0xe6
Debugger finished with the exit code 0
Thanks!
ps. I just pushed an update with the nil check everywhere else too just in case, and moved up to parent call for consistency.
test codes