cogentcore / core

A free and open source framework for building powerful, fast, elegant 2D and 3D apps that run on macOS, Windows, Linux, iOS, Android, and the web with a single Go codebase, allowing you to Code Once, Run Everywhere.
http://cogentcore.org/core
BSD 3-Clause "New" or "Revised" License
1.67k stars 78 forks source link

Occasional cgo crashing on app startup on macOS #1017

Closed kkoreilly closed 2 weeks ago

kkoreilly commented 1 month ago

Describe the bug

When starting an app on macOS, it occasionally crashes during cgo execution. This seems to have started happening relatively recently.

How to reproduce

Run the docs many times on macOS until they crash.

Example code

No response

Relevant output

SIGSEGV: segmentation violation
PC=0x1080b28a4 m=0 sigcode=2 addr=0x0
signal arrived during cgo execution

goroutine 1 gp=0x140000021c0 m=0 mp=0x106d09e20 [syscall, locked to thread]:
runtime.cgocall(0x1056fc848, 0x1400004d1a8)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/cgocall.go:157 +0x44 fp=0x1400004d160 sp=0x1400004d120 pc=0x1048c3274
github.com/goki/vulkan._Cfunc_callVkCreateGraphicsPipelines(0x15906a218, 0x15672e660, 0x1, 0x15672e700, 0x0, 0x14013378b10)
        _cgo_gotypes.go:8402 +0x34 fp=0x1400004d1a0 sp=0x1400004d160 pc=0x104bd9a94
github.com/goki/vulkan.CreateGraphicsPipelines.func1(0x15906a218, 0x15672e660, 0x1, 0x15672e700, 0x0, 0x14013378b10)
        /Users/kaioreilly/go/pkg/mod/github.com/goki/vulkan@v1.0.7/vulkan.go:643 +0xe8 fp=0x1400004d200 sp=0x1400004d1a0 pc=0x104c05d98
github.com/goki/vulkan.CreateGraphicsPipelines(0x15906a218, 0x15672e660, 0x1, {0x1400004d478, 0x1, 0x0?}, 0x0, {0x14013378b10, 0x1, 0x1})
        /Users/kaioreilly/go/pkg/mod/github.com/goki/vulkan@v1.0.7/vulkan.go:643 +0x84 fp=0x1400004d340 sp=0x1400004d200 pc=0x104c05ae4
cogentcore.org/core/vgpu.(*Pipeline).Config(0x14011070800, 0x88?)
        /Users/kaioreilly/cogent/core/vgpu/pipeline.go:197 +0x470 fp=0x1400004d540 sp=0x1400004d340 pc=0x104c38580
cogentcore.org/core/vgpu.(*System).Config(0x14012cfb208)
        /Users/kaioreilly/cogent/core/vgpu/system.go:283 +0x100 fp=0x1400004d5c0 sp=0x1400004d540 pc=0x104c3ea80
cogentcore.org/core/vgpu/vdraw.(*Drawer).ConfigSys(0x14012cfb208)
        /Users/kaioreilly/cogent/core/vgpu/vdraw/config.go:106 +0x7bc fp=0x1400004d750 sp=0x1400004d5c0 pc=0x104c4db1c
cogentcore.org/core/vgpu/vdraw.(*Drawer).ConfigSurface(0x14012cfb208, 0x14012cb2b00, 0x0?)
        /Users/kaioreilly/cogent/core/vgpu/vdraw/vdraw.go:53 +0x9c fp=0x1400004d790 sp=0x1400004d750 pc=0x104c501cc
cogentcore.org/core/system/driver/desktop.(*App).NewWindow.func2()
        /Users/kaioreilly/cogent/core/system/driver/desktop/app.go:139 +0xbc fp=0x1400004d7e0 sp=0x1400004d790 pc=0x104d89e0c
cogentcore.org/core/system/driver/base.(*App).RunOnMain(0x140003c86c0?, 0x106d07200?)
        /Users/kaioreilly/cogent/core/system/driver/base/app.go:90 +0xac fp=0x1400004d820 sp=0x1400004d7e0 pc=0x104bd71dc
cogentcore.org/core/system/driver/desktop.(*App).NewWindow(0x106d07200, 0x140003c86c0?)
        /Users/kaioreilly/cogent/core/system/driver/desktop/app.go:135 +0x3cc fp=0x1400004db70 sp=0x1400004d820 pc=0x104d8964c
cogentcore.org/core/core.newRenderWindow({0x140000bf530, 0x22}, {0x105727282, 0x10}, 0x140003c86c0)
        /Users/kaioreilly/cogent/core/core/renderwindow.go:108 +0xa0 fp=0x1400004dbd0 sp=0x1400004db70 pc=0x104f54c80
cogentcore.org/core/core.(*Stage).newRenderWindow(0x14000240960)
        /Users/kaioreilly/cogent/core/core/mainstage.go:348 +0x1e0 fp=0x1400004dc70 sp=0x1400004dbd0 pc=0x104f4e1b0
cogentcore.org/core/core.(*Stage).runWindow(0x14000240960)
        /Users/kaioreilly/cogent/core/core/mainstage.go:226 +0x620 fp=0x1400004dd30 sp=0x1400004dc70 pc=0x104f4d8c0
cogentcore.org/core/core.(*Stage).run(0x14000240960?)
        /Users/kaioreilly/cogent/core/core/stage.go:280 +0x8c fp=0x1400004dd60 sp=0x1400004dd30 pc=0x104f6784c
cogentcore.org/core/core.(*Stage).Run(0x14000000000?)
        /Users/kaioreilly/cogent/core/core/stage.go:259 +0x8c fp=0x1400004dd90 sp=0x1400004dd60 pc=0x104f6770c
cogentcore.org/core/core.(*Body).RunWindow(0x1?)
        /Users/kaioreilly/cogent/core/core/mainstage.go:69 +0x34 fp=0x1400004ddb0 sp=0x1400004dd90 pc=0x104f4c914
cogentcore.org/core/core.(*Body).RunMainWindow(0x105fc2520?)
        /Users/kaioreilly/cogent/core/core/mainstage.go:59 +0x134 fp=0x1400004de10 sp=0x1400004ddb0 pc=0x104f4c7b4
main.main()
        /Users/kaioreilly/cogent/core/docs/docs.go:123 +0x73c fp=0x1400004df40 sp=0x1400004de10 pc=0x1056db2ac
runtime.main()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:271 +0x28c fp=0x1400004dfd0 sp=0x1400004df40 pc=0x1048fa57c
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x1400004dfd0 sp=0x1400004dfd0 pc=0x104930bc4

goroutine 2 gp=0x14000002c40 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000074f90 sp=0x14000074f70 pc=0x1048fa9a8
runtime.goparkunlock(...)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:408
runtime.forcegchelper()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:326 +0xb8 fp=0x14000074fd0 sp=0x14000074f90 pc=0x1048fa838
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000074fd0 sp=0x14000074fd0 pc=0x104930bc4
created by runtime.init.6 in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:314 +0x24

goroutine 18 gp=0x14000104380 m=nil [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000070760 sp=0x14000070740 pc=0x1048fa9a8
runtime.goparkunlock(...)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:408
runtime.bgsweep(0x14000110000)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgcsweep.go:318 +0x108 fp=0x140000707b0 sp=0x14000070760 pc=0x1048e5638
runtime.gcenable.gowrap1()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:203 +0x28 fp=0x140000707d0 sp=0x140000707b0 pc=0x1048d97d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140000707d0 sp=0x140000707d0 pc=0x104930bc4
created by runtime.gcenable in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:203 +0x6c

goroutine 19 gp=0x14000104540 m=nil [GC scavenge wait]:
runtime.gopark(0x10000?, 0x105e926e8?, 0x0?, 0x0?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000070f60 sp=0x14000070f40 pc=0x1048fa9a8
runtime.goparkunlock(...)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:408
runtime.(*scavengerState).park(0x106d06fc0)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgcscavenge.go:425 +0x5c fp=0x14000070f90 sp=0x14000070f60 pc=0x1048e2fbc
runtime.bgscavenge(0x14000110000)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgcscavenge.go:658 +0xac fp=0x14000070fb0 sp=0x14000070f90 pc=0x1048e357c
runtime.gcenable.gowrap2()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:204 +0x28 fp=0x14000070fd0 sp=0x14000070fb0 pc=0x1048d9778
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000070fd0 sp=0x14000070fd0 pc=0x104930bc4
created by runtime.gcenable in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:204 +0xac

goroutine 20 gp=0x14000104a80 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0x1401307f3a0?, 0x20?, 0x40?, 0x1000000010?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000088d80 sp=0x14000088d60 pc=0x1048fa9a8
runtime.runfinq()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mfinal.go:194 +0x108 fp=0x14000088fd0 sp=0x14000088d80 pc=0x1048d88a8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000088fd0 sp=0x14000088fd0 pc=0x104930bc4
created by runtime.createfing in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mfinal.go:164 +0x80

goroutine 21 gp=0x14000104e00 m=nil [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000071730 sp=0x14000071710 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x140000717d0 sp=0x14000071730 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140000717d0 sp=0x140000717d0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 34 gp=0x1400048e000 m=nil [GC worker (idle)]:
runtime.gopark(0x106d75660?, 0x1?, 0xdf?, 0xbe?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000494730 sp=0x14000494710 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x140004947d0 sp=0x14000494730 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140004947d0 sp=0x140004947d0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 3 gp=0x14000003500 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99eec4ce?, 0x3?, 0xac?, 0xe8?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000075730 sp=0x14000075710 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x140000757d0 sp=0x14000075730 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140000757d0 sp=0x140000757d0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 35 gp=0x1400048e1c0 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99df9764?, 0x3?, 0xea?, 0x5d?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000494f30 sp=0x14000494f10 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x14000494fd0 sp=0x14000494f30 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000494fd0 sp=0x14000494fd0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 4 gp=0x140000036c0 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99eebd7b?, 0x1?, 0x7c?, 0xda?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000075f30 sp=0x14000075f10 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x14000075fd0 sp=0x14000075f30 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000075fd0 sp=0x14000075fd0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 36 gp=0x1400048e380 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99f04a4b?, 0x1?, 0x6a?, 0xc9?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000495730 sp=0x14000495710 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x140004957d0 sp=0x14000495730 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140004957d0 sp=0x140004957d0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 5 gp=0x14000003880 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99eec47b?, 0x1?, 0x93?, 0x2e?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000076730 sp=0x14000076710 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x140000767d0 sp=0x14000076730 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140000767d0 sp=0x140000767d0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 37 gp=0x1400048e540 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99f04a21?, 0x3?, 0x83?, 0x29?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000495f30 sp=0x14000495f10 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x14000495fd0 sp=0x14000495f30 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000495fd0 sp=0x14000495fd0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 38 gp=0x1400048e700 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99ef3328?, 0x3?, 0x37?, 0x99?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000496730 sp=0x14000496710 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x140004967d0 sp=0x14000496730 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x140004967d0 sp=0x140004967d0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 6 gp=0x14000003a40 m=nil [GC worker (idle)]:
runtime.gopark(0x3b4f99f044ec?, 0x3?, 0x38?, 0x5b?, 0x0?)
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/proc.go:402 +0xc8 fp=0x14000076f30 sp=0x14000076f10 pc=0x1048fa9a8
runtime.gcBgMarkWorker()
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1310 +0xd8 fp=0x14000076fd0 sp=0x14000076f30 pc=0x1048db8d8
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x14000076fd0 sp=0x14000076fd0 pc=0x104930bc4
created by runtime.gcBgMarkStartWorkers in goroutine 1
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/mgc.go:1234 +0x28

goroutine 12 gp=0x14000584fc0 m=nil [runnable]:
runtime.mapaccess1_faststr(0x105fca900, 0x14003212000, {0x14000294d20, 0x8})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/map_faststr.go:13 +0x3d4 fp=0x1400008fec0 sp=0x1400008fec0 pc=0x1048d2354
cogentcore.org/core/spell.(*Model).createSuggestKeys(0x14000260280, {0x14003350a99, 0x9})
        /Users/kaioreilly/cogent/core/spell/model.go:115 +0x78 fp=0x1400008ff60 sp=0x1400008fec0 pc=0x105147b98
cogentcore.org/core/spell.(*Model).addSuggestionsForWords(0x14000260280, {0x14003542000, 0x7fc0, 0x0?})
        /Users/kaioreilly/cogent/core/spell/model.go:68 +0x60 fp=0x1400008ffa0 sp=0x1400008ff60 pc=0x105147650
cogentcore.org/core/spell.(*Model).SetDicts.gowrap1()
        /Users/kaioreilly/cogent/core/spell/model.go:60 +0x34 fp=0x1400008ffd0 sp=0x1400008ffa0 pc=0x1051475b4
runtime.goexit({})
        /opt/homebrew/Cellar/go/1.22.5/libexec/src/runtime/asm_arm64.s:1222 +0x4 fp=0x1400008ffd0 sp=0x1400008ffd0 pc=0x104930bc4
created by cogentcore.org/core/spell.(*Model).SetDicts in goroutine 1
        /Users/kaioreilly/cogent/core/spell/model.go:60 +0x13c

r0      0x1
r1      0x107257200
r2      0x15672ee60
r3      0x2a
r4      0x52204000
r5      0x2a
r6      0x0
r7      0x19796bd7
r8      0x1
r9      0x15987e628
r10     0x179f41
r11     0xcd0d0
r12     0x156703fcc
r13     0x29
r14     0x156700000
r15     0xa0008000
r16     0xd79600010724c080
r17     0x0
r18     0x0
r19     0x15987e200
r20     0x15672e700
r21     0x15987b5a0
r22     0x15987e628
r23     0x15987e628
r24     0x15672e790
r25     0x0
r26     0x0
r27     0x0
r28     0x0
r29     0x16b547190
lr      0x1080b2878
sp      0x16b5429a0
pc      0x1080b28a4
fault   0x0

Platform

macOS

kkoreilly commented 1 month ago

The window is also sometimes black on startup, which also has not happened in the past.

rcoreilly commented 1 month ago

There is a race in texteditor markup, specifically in docs which starts with a texteditor with content right at startup -- otherwise don't see this race (I think -- need to double check). likely due to new auto Buffer creation and / or flags no longer being atomic?

rcoreilly commented 1 month ago

corroborating evidence: ipad and iphone crash often at startup, but only in docs, not other apps.

glycerine commented 1 month ago

This seems to still happen to me. I tried to run the demo and it crashed.

Below is a log of me trying to install the core and then run the demo app.

MacOS: Sonoma 14.5

jaten@barkmbp:~$ go version
go version go1.22.4 darwin/amd64
jaten@barkmbp:~$ go install cogentcore.org/core/cmd/core@main
go: downloading cogentcore.org/core v0.3.1-0.20240725221608-2aa1af792e92
go: downloading golang.org/x/tools v0.22.0
go: downloading github.com/jackmordaunt/icns/v2 v2.2.7
go: downloading github.com/mitchellh/go-homedir v1.1.0
go: downloading github.com/Masterminds/semver/v3 v3.2.1
go: downloading github.com/mattn/go-shellwords v1.0.12
go: downloading golang.org/x/image v0.18.0
go: downloading github.com/muesli/termenv v0.15.2
go: downloading github.com/grokify/html-strip-tags-go v0.1.0
go: downloading github.com/pelletier/go-toml/v2 v2.1.2-0.20240227203013-2b69615b5d55
go: downloading github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
go: downloading github.com/anthonynsimon/bild v0.13.0
go: downloading github.com/goki/freetype v1.0.5
go: downloading golang.org/x/net v0.26.0
go: downloading github.com/aymerick/douceur v0.2.0
go: downloading github.com/chewxy/math32 v1.10.1
go: downloading github.com/aymanbagabas/go-osc52/v2 v2.0.1
go: downloading github.com/lucasb-eyer/go-colorful v1.2.0
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading golang.org/x/sys v0.21.0
go: downloading github.com/mattn/go-runewidth v0.0.15
go: downloading golang.org/x/sync v0.7.0
go: downloading github.com/jinzhu/copier v0.4.0
go: downloading github.com/gorilla/css v1.0.1
go: downloading golang.org/x/text v0.16.0
go: downloading golang.org/x/mod v0.18.0
go: downloading github.com/rivo/uniseg v0.4.7
jaten@barkmbp:~$ which core
/Users/jaten/go/bin/core
jaten@barkmbp:~$ core setup
]11;?\xcode tools already installed
curl -OL https://sdk.lunarg.com/sdk/download/1.3.283.0/mac/vulkansdk-macos-1.3.283.0.dmg
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  255M  100  255M    0     0  4000k      0  0:01:05  0:01:05 --:--:-- 4767k
Password:
sudo /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/InstallVulkan --root /Users/jaten/VulkanSDK/1.3.283.0 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.usr com.lunarg.vulkan.sdl2 com.lunarg.vulkan.glm com.lunarg.vulkan.volk com.lunarg.vulkan.vma
[0] Arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/InstallVulkan, --root, /Users/jaten/VulkanSDK/1.3.283.0, --accept-licenses, --default-answer, --confirm-command, install, com.lunarg.vulkan.core, com.lunarg.vulkan.usr, com.lunarg.vulkan.sdl2, com.lunarg.vulkan.glm, com.lunarg.vulkan.volk, com.lunarg.vulkan.vma
[13] Operations sanity check succeeded.
[34] Loaded control script ":/metadata/installer-config/installscript_qs.qs"
[35] Preparing meta information download...
[2132] Retrieving meta information from remote repository...
[3672] Extracting meta information...
[3702] License "MIT 2.0 or Apache" accepted by user.
[3705] Warning: QFont::setPixelSize: Pixel size <= 0 (-1) (text/qfont.cpp:1009, void QFont::setPixelSize(int))
[3705] Selected components without dependencies:
com.lunarg.vulkan 
com.lunarg.vulkan.core 
com.lunarg.vulkan.usr 
com.lunarg.vulkan.glm 
com.lunarg.vulkan.sdl2 
com.lunarg.vulkan.volk 
com.lunarg.vulkan.vma
[3705] Installation space required: "2.36 GB" Temporary space required: "493.65 MB" Local repository size: "0.00 bytes"
[3708] Tmp and install directories are on the same volume. Volume mount point: "/" Free space available: "392.38 GB"
[3708] Installation will use 2.11 GB of disk space.
[3709] perform  operation: Mkdir
[3709]  - arguments: /Users/jaten/VulkanSDK
[3709] Done
[3709] backup  operation: Mkdir
[3709]  - arguments: /Users/jaten/VulkanSDK/1.3.283.0
[3709] Done
[3709] perform  operation: Mkdir
[3709]  - arguments: /Users/jaten/VulkanSDK/1.3.283.0
[3709] Done
[3710] Preparing the installation...
[3710] Install size: 7 components
[3730] Downloading packages...
[3731] Downloading archive "1.3.283.0system.7z.sha1" for component System Global Installation.
[5305] Downloading archive "1.3.283.0system.7z" for component System Global Installation.
[6863] Downloading archive "1.3.283.0glm.7z.sha1" for component GLM Headers..
[8404] Downloading archive "1.3.283.0glm.7z" for component GLM Headers..
[10523] Downloading archive "1.3.283.0sdl2.7z.sha1" for component SDL2 libraries and headers..
[11984] Downloading archive "1.3.283.0sdl2.7z" for component SDL2 libraries and headers..
[15210] Downloading archive "1.3.283.0volk.7z.sha1" for component Volk header, source, and library..
[16801] Downloading archive "1.3.283.0volk.7z" for component Volk header, source, and library..
[19097] Downloading archive "1.3.283.0vma.7z.sha1" for component Vulkan Memory Allocator header..
[20630] Downloading archive "1.3.283.0vma.7z" for component Vulkan Memory Allocator header..
[22775] Installing component Vulkan SDK
[22775] backup com.lunarg.vulkan operation: License
[22776]     - arguments:
[22776] Done
[22776] perform com.lunarg.vulkan operation: License
[22776]     - arguments:
[22777] Done
[22778] Installing component The Vulkan SDK Core (Always Installed)
[22778] backup com.lunarg.vulkan.core operation: Extract
[22778]     - arguments: installer://com.lunarg.vulkan.core/1.3.283.0Helpers.7z, /Users/jaten/VulkanSDK/1.3.283.0
[22778] Done
[22778] perform com.lunarg.vulkan.core operation: Extract
[22778]     - arguments: installer://com.lunarg.vulkan.core/1.3.283.0Helpers.7z, /Users/jaten/VulkanSDK/1.3.283.0
[22904] Done
[22904] backup com.lunarg.vulkan.core operation: Extract
[22905]     - arguments: installer://com.lunarg.vulkan.core/1.3.283.0vulkan.7z, /Users/jaten/VulkanSDK/1.3.283.0
[22905] Done
[22905] perform com.lunarg.vulkan.core operation: Extract
[22905]     - arguments: installer://com.lunarg.vulkan.core/1.3.283.0vulkan.7z, /Users/jaten/VulkanSDK/1.3.283.0
[55271] Done
[55272] backup com.lunarg.vulkan.core operation: License
[55272]     - arguments:
[55272] Done
[55272] perform com.lunarg.vulkan.core operation: License
[55272]     - arguments:
[55273] Done
[55274] Installing component System Global Installation
[55274] backup com.lunarg.vulkan.usr operation: Extract
[55274]     - arguments: installer://com.lunarg.vulkan.usr/1.3.283.0system.7z, /Users/jaten/VulkanSDK/1.3.283.0
[55274] Done
[55274] perform com.lunarg.vulkan.usr operation: Extract
[55274]     - arguments: installer://com.lunarg.vulkan.usr/1.3.283.0system.7z, /Users/jaten/VulkanSDK/1.3.283.0
[55277] Done
[55277] "Execute" as admin: true
[55277] backup com.lunarg.vulkan.usr operation: Execute
[55277]     - arguments: python3, /Users/jaten/VulkanSDK/1.3.283.0/install_vulkan.py, --install-json-location, /Users/jaten/VulkanSDK/1.3.283.0, --force-install, UNDOEXECUTE, bash, -c, /usr/local/share/vulkan/uninstall.sh
[55277] Done
[55277] perform com.lunarg.vulkan.usr operation: Execute
[55277]     - arguments: python3, /Users/jaten/VulkanSDK/1.3.283.0/install_vulkan.py, --install-json-location, /Users/jaten/VulkanSDK/1.3.283.0, --force-install, UNDOEXECUTE, bash, -c, /usr/local/share/vulkan/uninstall.sh
[55331] python3" started, arguments: "/Users/jaten/VulkanSDK/1.3.283.0/install_vulkan.py --install-json-location /Users/jaten/VulkanSDK/1.3.283.0 --force-install
[59132] Copying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/dxc to /usr/local/bin\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-val to /usr/local/bin\nCould not remove /usr/local/bin/spirv-val\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-cross to /usr/local/bin\nCould not remove /usr/local/bin/spirv-cross\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-remap to /usr/local/bin\nCould not remove /usr/local/bin/spirv-remap\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-dis to /usr/local/bin\nCould not remove /usr/local/bin/spirv-dis\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/glslc to /usr/local/bin\nCould not remove /usr/local/bin/glslc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-lint to /usr/local/bin\nCould not remove /usr/local/bin/spirv-lint\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-opt to /usr/local/bin\nCould not remove /usr/local/bin/spirv-opt\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/vkvia to /usr/local/bin\nCould not remove /usr/local/bin/vkvia\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/glslang to /usr/local/bin\nCould not remove /usr/local/bin/glslang\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-reflect to /usr/local/bin\nCould not remove /usr/local/bin/spirv-reflect\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-reflect-pp to /usr/local/bin\nCould not remove /usr/local/bin/spirv-reflect-pp\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-cfg to /usr/local/bin\nCould not remove /usr/local/bin/spirv-cfg\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-lesspipe.sh to /usr/local/bin\nCould not remove /usr/local/bin/spirv-lesspipe.sh\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-reduce to /usr/local/bin\nCould not remove /usr/local/bin/spirv-reduce\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/dxc-3.7 to /usr/local/bin\nCould not remove /usr/local/bin/dxc-3.7\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-link to /usr/local/bin\nCould not remove /usr/local/bin/spirv-link\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/vulkaninfo to /usr/local/bin\nCould not remove /usr/local/bin/vulkaninfo\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/glslangValidator to /usr/local/bin\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/MoltenVKShaderConverter to /usr/local/bin\nCould not remove /usr/local/bin/MoltenVKShaderConverter\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/bin/spirv-as to /usr/local/bin\nCould not remove /usr/local/bin/spirv-as\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-util.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-util.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-c-shared.dylib to /usr/local/lib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-c-shared.0.59.0.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-c-shared.0.59.0.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libMachineIndependent.a to /usr/local/lib\nCould not remove /usr/local/lib/libMachineIndependent.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libshaderc_shared.dylib to /usr/local/lib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools-diff.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools-diff.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libdxcompiler.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libdxcompiler.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools-lint.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools-lint.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libVkLayer_khronos_validation.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libVkLayer_khronos_validation.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libVkLayer_api_dump.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libVkLayer_api_dump.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libVkLayer_screenshot.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libVkLayer_screenshot.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libVkLayer_khronos_profiles.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libVkLayer_khronos_profiles.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libvulkan.dylib to /usr/local/lib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools-link.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools-link.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libvulkan.1.3.283.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libvulkan.1.3.283.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-glsl.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-glsl.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libglslang-default-resource-limits.a to /usr/local/lib\nCould not remove /usr/local/lib/libglslang-default-resource-limits.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools-shared.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools-shared.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libVkLayer_khronos_shader_object.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libVkLayer_khronos_shader_object.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-reflect.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-reflect.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libVkLayer_khronos_synchronization2.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libVkLayer_khronos_synchronization2.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libshaderc_combined.a to /usr/local/lib\nCould not remove /usr/local/lib/libshaderc_combined.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-c.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-c.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libshaderc.a to /usr/local/lib\nCould not remove /usr/local/lib/libshaderc.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools-reduce.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools-reduce.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libMoltenVK.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libMoltenVK.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-cpp.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-cpp.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libOSDependent.a to /usr/local/lib\nCould not remove /usr/local/lib/libOSDependent.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libshaderc_shared.1.dylib to /usr/local/lib\nCould not remove /usr/local/lib/libshaderc_shared.1.dylib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV-Tools-opt.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV-Tools-opt.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libGenericCodeGen.a to /usr/local/lib\nCould not remove /usr/local/lib/libGenericCodeGen.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-core.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-core.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-msl.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-msl.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-hlsl.a to /usr/local/lib\nCould not remove /usr/local/lib/libspirv-cross-hlsl.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libspirv-cross-c-shared.0.dylib to /usr/local/lib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libshaderc_util.a to /usr/local/lib\nCould not remove /usr/local/lib/libshaderc_util.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/MoltenVK.xcframework to /usr/local/lib/MoltenVK.xcframework\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPVRemapper.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPVRemapper.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libvulkan.1.dylib to /usr/local/lib\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libSPIRV.a to /usr/local/lib\nCould not remove /usr/local/lib/libSPIRV.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/libglslang.a to /usr/local/lib\nCould not remove /usr/local/lib/libglslang.a\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/dxc to /usr/local/include/dxc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/shaderc to /usr/local/include/shaderc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/spirv-tools to /usr/local/include/spirv-tools\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/spirv to /usr/local/include/spirv\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/spirv_cross to /usr/local/include/spirv_cross\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/glslang to /usr/local/include/glslang\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/vk_video to /usr/local/include/vk_video\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/MoltenVK to /usr/local/include/MoltenVK\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/include/vulkan to /usr/local/include/vulkan\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools-tools to /usr/local/lib/cmake/vulkan/SPIRV-Tools-tools\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_c_shared to /usr/local/lib/cmake/vulkan/spirv_cross_c_shared\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_util to /usr/local/lib/cmake/vulkan/spirv_cross_util\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_core to /usr/local/lib/cmake/vulkan/spirv_cross_core\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools to /usr/local/lib/cmake/vulkan/SPIRV-Tools\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_reflect to /usr/local/lib/cmake/vulkan/spirv_cross_reflect\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools-link to /usr/local/lib/cmake/vulkan/SPIRV-Tools-link\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools-opt to /usr/local/lib/cmake/vulkan/SPIRV-Tools-opt\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/glslang to /usr/local/lib/cmake/vulkan/glslang\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_msl to /usr/local/lib/cmake/vulkan/spirv_cross_msl\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_cpp to /usr/local/lib/cmake/vulkan/spirv_cross_cpp\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools-diff to /usr/local/lib/cmake/vulkan/SPIRV-Tools-diff\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_glsl to /usr/local/lib/cmake/vulkan/spirv_cross_glsl\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Headers to /usr/local/lib/cmake/vulkan/SPIRV-Headers\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_c to /usr/local/lib/cmake/vulkan/spirv_cross_c\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools-reduce to /usr/local/lib/cmake/vulkan/SPIRV-Tools-reduce\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/SPIRV-Tools-lint to /usr/local/lib/cmake/vulkan/SPIRV-Tools-lint\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/cmake/spirv_cross_hlsl to /usr/local/lib/cmake/vulkan/spirv_cross_hlsl\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/SPIRV-Tools.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/SPIRV-Tools.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/spirv-cross-c-shared.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/spirv-cross-c-shared.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/SPIRV-Tools-shared.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/SPIRV-Tools-shared.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/vulkan.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/vulkan.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/shaderc.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/shaderc.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/SPIRV-Headers.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/SPIRV-Headers.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/lib/pkgconfig/spirv-cross-c.pc to /usr/local/lib/pkgconfig\nCould not remove /usr/local/lib/pkgconfig/spirv-cross-c.pc\nCopying /Users/jaten/VulkanSDK/1.3.283.0/macOS/share/vulkan to /usr/local/share/vulkan\nCopying /Users/jaten/VulkanSDK/1.3.283.0/Applications/vulkanCapsViewer.app to /Applications/vulkanCapsViewer.app\nCopying /Users/jaten/VulkanSDK/1.3.283.0/Applications/vkconfig.app to /Applications/vkconfig.app\nCopying /Users/jaten/VulkanSDK/1.3.283.0/Applications/vkcubepp.app to /Applications/vkcubepp.app\nCopying /Users/jaten/VulkanSDK/1.3.283.0/Applications/vkcube.app to /Applications/vkcube.app\n
[59893] Done
[59895] Installing component GLM Headers.
[59972] backup com.lunarg.vulkan.glm operation: Extract
[59972]     - arguments: installer://com.lunarg.vulkan.glm/1.3.283.0glm.7z, /Users/jaten/VulkanSDK/1.3.283.0
[59972] Done
[59973] perform com.lunarg.vulkan.glm operation: Extract
[59973]     - arguments: installer://com.lunarg.vulkan.glm/1.3.283.0glm.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60249] Done
[60251] Installing component SDL2 libraries and headers.
[60251] backup com.lunarg.vulkan.sdl2 operation: Extract
[60251]     - arguments: installer://com.lunarg.vulkan.sdl2/1.3.283.0sdl2.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60251] Done
[60251] perform com.lunarg.vulkan.sdl2 operation: Extract
[60252]     - arguments: installer://com.lunarg.vulkan.sdl2/1.3.283.0sdl2.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60681] Done
[60683] Installing component Volk header, source, and library.
[60683] backup com.lunarg.vulkan.volk operation: Extract
[60683]     - arguments: installer://com.lunarg.vulkan.volk/1.3.283.0volk.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60683] Done
[60683] perform com.lunarg.vulkan.volk operation: Extract
[60683]     - arguments: installer://com.lunarg.vulkan.volk/1.3.283.0volk.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60724] Done
[60725] Installing component Vulkan Memory Allocator header.
[60726] backup com.lunarg.vulkan.vma operation: Extract
[60726]     - arguments: installer://com.lunarg.vulkan.vma/1.3.283.0vma.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60726] Done
[60726] perform com.lunarg.vulkan.vma operation: Extract
[60726]     - arguments: installer://com.lunarg.vulkan.vma/1.3.283.0vma.7z, /Users/jaten/VulkanSDK/1.3.283.0
[60743] Done
[60749] backup  operation: Mkdir
[60749]     - arguments: /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS
[60752] Done
[60752] perform  operation: Mkdir
[60752]     - arguments: /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS
[60752] Done
[60753] backup  operation: Copy
[60753]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../PkgInfo, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../PkgInfo
[60753] Done
[60753] perform  operation: Copy
[60753]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../PkgInfo, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../PkgInfo
[60785] Done
[60786] backup  operation: Copy
[60786]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../Info.plist, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../Info.plist
[60786] Done
[60786] perform  operation: Copy
[60786]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../Info.plist, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../Info.plist
[60822] Done
[60823] perform  operation: CopyDirectory
[60823]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../Resources/qt_menu.nib, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../Resources/qt_menu.nib
[60823] Done
[60823] backup  operation: Mkdir
[60823]     - arguments: /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/Resources
[60824] Done
[60824] perform  operation: Mkdir
[60824]     - arguments: /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/Resources
[60824] Done
[60824] backup  operation: Copy
[60824]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../Resources/InstallVulkan.icns, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../Resources/InstallVulkan.icns
[60824] Done
[60824] perform  operation: Copy
[60824]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../Resources/InstallVulkan.icns, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../Resources/InstallVulkan.icns
[60877] Done
[60879] perform  operation: CopyDirectory
[60879]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../Frameworks, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../Frameworks
[60879] Done
[60880] perform  operation: CopyDirectory
[60880]     - arguments: /Volumes/vulkansdk-macos-1.3.283.0/InstallVulkan.app/Contents/MacOS/../plugins, /Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/../plugins
[60880] Done
[60882] Writing maintenance tool: "/Users/jaten/VulkanSDK/1.3.283.0/MaintenanceTool.app/Contents/MacOS/MaintenanceTool.new"
[60882] Writing maintenance tool.
[61023] Wrote permissions for maintenance tool.
[61045] Maintenance tool restart: false.
[61045] Installation finished!
[61045] Components installed successfully
core setup succeeded
jaten@barkmbp:~$ go run cogentcore.org/core/examples/demo@main
go: downloading github.com/Bios-Marcel/wastebasket v0.0.4-0.20240213135800-f26f1ae0a7c4
go: downloading github.com/h2non/filetype v1.1.3
go: downloading github.com/fsnotify/fsnotify v1.7.0
go: downloading golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
go: downloading github.com/Masterminds/vcs v1.13.3
go: downloading github.com/alecthomas/chroma/v2 v2.13.0
go: downloading github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240307211618-a69d953ea142
go: downloading github.com/goki/vulkan v1.0.8
go: downloading github.com/dlclark/regexp2 v1.11.0
SIGSEGV: segmentation violation
PC=0x10b7a9ac6 m=0 sigcode=1 addr=0x8
signal arrived during cgo execution

goroutine 1 gp=0xc0000061c0 m=0 mp=0x10a259380 [syscall, locked to thread]:
runtime.cgocall(0x10929c8b0, 0xc01428d308)
    /usr/local/go/src/runtime/cgocall.go:157 +0x4b fp=0xc01428d2e0 sp=0xc01428d2a8 pc=0x10890ab0b
github.com/goki/vulkan._Cfunc_callVkCreateGraphicsPipelines(0x7fcd0201d618, 0x6000037080a0, 0x1, 0x6000034098c0, 0x0, 0xc034926fc8)
    _cgo_gotypes.go:8402 +0x4b fp=0xc01428d308 sp=0xc01428d2e0 pc=0x108c8bb2b
github.com/goki/vulkan.CreateGraphicsPipelines.func1(0x7fcd0201d618, 0x6000037080a0, 0x1, 0x6000034098c0, 0x0, 0xc034926fc8)
    /Users/jaten/go/pkg/mod/github.com/goki/vulkan@v1.0.8/vulkan.go:643 +0xf3 fp=0xc01428d360 sp=0xc01428d308 pc=0x108cbc033
github.com/goki/vulkan.CreateGraphicsPipelines(0x7fcd0201d618, 0x6000037080a0, 0x1, {0xc01428d5d0, 0x1, 0x0?}, 0x0, {0xc034926fc8, 0x1, 0x1})
    /Users/jaten/go/pkg/mod/github.com/goki/vulkan@v1.0.8/vulkan.go:643 +0x9a fp=0xc01428d4a0 sp=0xc01428d360 pc=0x108cbbd5a
cogentcore.org/core/vgpu.(*Pipeline).Config(0xc034986800, 0xb0?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/vgpu/pipeline.go:197 +0x578 fp=0xc01428d6a0 sp=0xc01428d4a0 pc=0x108cf2878
cogentcore.org/core/vgpu.(*System).Config(0xc02bf15688)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/vgpu/system.go:283 +0x131 fp=0xc01428d728 sp=0xc01428d6a0 pc=0x108cf9891
cogentcore.org/core/vgpu/vdraw.(*Drawer).ConfigSys(0xc02bf15688)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/vgpu/vdraw/config.go:106 +0x988 fp=0xc01428d8b0 sp=0xc01428d728 pc=0x108d090c8
cogentcore.org/core/vgpu/vdraw.(*Drawer).ConfigSurface(0xc02bf15688, 0xc02bf33ad0, 0x0?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/vgpu/vdraw/vdraw.go:53 +0xaf fp=0xc01428d8f0 sp=0xc01428d8b0 pc=0x108d0bb4f
cogentcore.org/core/system/driver/desktop.(*App).NewWindow.func2()
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/system/driver/desktop/app.go:139 +0xb1 fp=0xc01428d938 sp=0xc01428d8f0 pc=0x108dfa071
cogentcore.org/core/system/driver/base.(*App).RunOnMain(0x0?, 0x0?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/system/driver/base/app.go:90 +0xa9 fp=0xc01428d970 sp=0xc01428d938 pc=0x108c88289
cogentcore.org/core/system/driver/desktop.(*App).NewWindow(0x10a257b80, 0xc0003dba40?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/system/driver/desktop/app.go:135 +0x474 fp=0xc01428dc80 sp=0xc01428d970 pc=0x108df98b4
cogentcore.org/core/core.newRenderWindow({0xc015344360, 0x22}, {0x1092b8f06, 0x10}, 0xc0003dba40)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/renderwindow.go:108 +0xa5 fp=0xc01428dce0 sp=0xc01428dc80 pc=0x108eb6605
cogentcore.org/core/core.(*Stage).newRenderWindow(0xc01549cd20)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/mainstage.go:343 +0x20a fp=0xc01428dd80 sp=0xc01428dce0 pc=0x108eaf5aa
cogentcore.org/core/core.(*Stage).runWindow(0xc01549cd20)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/mainstage.go:226 +0x6dc fp=0xc01428de40 sp=0xc01428dd80 pc=0x108eaeb7c
cogentcore.org/core/core.(*Stage).run(0x41a0000042a00000?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/stage.go:280 +0x88 fp=0xc01428de70 sp=0xc01428de40 pc=0x108ecfec8
cogentcore.org/core/core.(*Stage).Run(0x0?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/stage.go:259 +0x7a fp=0xc01428de90 sp=0xc01428de70 pc=0x108ecfd9a
cogentcore.org/core/core.(*Body).RunWindow(0xc014cee008?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/mainstage.go:69 +0x26 fp=0xc01428deb0 sp=0xc01428de90 pc=0x108eada66
cogentcore.org/core/core.(*Body).RunMainWindow(0xc000388008?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/core/mainstage.go:59 +0x131 fp=0xc01428df00 sp=0xc01428deb0 pc=0x108ead911
main.main()
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/examples/demo/demo.go:44 +0xcf fp=0xc01428df50 sp=0xc01428df00 pc=0x10927aa6f
runtime.main()
    /usr/local/go/src/runtime/proc.go:271 +0x29d fp=0xc01428dfe0 sp=0xc01428df50 pc=0x1089410fd
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc01428dfe8 sp=0xc01428dfe0 pc=0x108975121

goroutine 2 gp=0xc000006c40 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000070fa8 sp=0xc000070f88 pc=0x10894152e
runtime.goparkunlock(...)
    /usr/local/go/src/runtime/proc.go:408
runtime.forcegchelper()
    /usr/local/go/src/runtime/proc.go:326 +0xb3 fp=0xc000070fe0 sp=0xc000070fa8 pc=0x1089413b3
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc000070fe8 sp=0xc000070fe0 pc=0x108975121
created by runtime.init.6 in goroutine 1
    /usr/local/go/src/runtime/proc.go:314 +0x1a

goroutine 3 gp=0xc000007180 m=nil [runnable]:
runtime.goschedIfBusy()
    /usr/local/go/src/runtime/proc.go:365 +0x28 fp=0xc000071780 sp=0xc000071768 pc=0x108941448
runtime.bgsweep(0xc00007c000)
    /usr/local/go/src/runtime/mgcsweep.go:302 +0x14f fp=0xc0000717c8 sp=0xc000071780 pc=0x10892c4af
runtime.gcenable.gowrap1()
    /usr/local/go/src/runtime/mgc.go:203 +0x25 fp=0xc0000717e0 sp=0xc0000717c8 pc=0x108920d45
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc0000717e8 sp=0xc0000717e0 pc=0x108975121
created by runtime.gcenable in goroutine 1
    /usr/local/go/src/runtime/mgc.go:203 +0x66

goroutine 4 gp=0xc000007340 m=nil [GC scavenge wait]:
runtime.gopark(0x10000?, 0x1097d34e0?, 0x0?, 0x0?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000071f78 sp=0xc000071f58 pc=0x10894152e
runtime.goparkunlock(...)
    /usr/local/go/src/runtime/proc.go:408
runtime.(*scavengerState).park(0x10a257940)
    /usr/local/go/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc000071fa8 sp=0xc000071f78 pc=0x108929de9
runtime.bgscavenge(0xc00007c000)
    /usr/local/go/src/runtime/mgcscavenge.go:658 +0x59 fp=0xc000071fc8 sp=0xc000071fa8 pc=0x10892a399
runtime.gcenable.gowrap2()
    /usr/local/go/src/runtime/mgc.go:204 +0x25 fp=0xc000071fe0 sp=0xc000071fc8 pc=0x108920ce5
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc000071fe8 sp=0xc000071fe0 pc=0x108975121
created by runtime.gcenable in goroutine 1
    /usr/local/go/src/runtime/mgc.go:204 +0xa5

goroutine 18 gp=0xc0000ac700 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0xc0348d3050?, 0x0?, 0xc0?, 0x1000000010?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000070620 sp=0xc000070600 pc=0x10894152e
runtime.runfinq()
    /usr/local/go/src/runtime/mfinal.go:194 +0x107 fp=0xc0000707e0 sp=0xc000070620 pc=0x10891fd87
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc0000707e8 sp=0xc0000707e0 pc=0x108975121
created by runtime.createfing in goroutine 1
    /usr/local/go/src/runtime/mfinal.go:164 +0x3d

goroutine 19 gp=0xc0000aca80 m=nil [GC worker (idle)]:
runtime.gopark(0x152de65578a1a?, 0x1?, 0xfc?, 0x52?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc00006c750 sp=0xc00006c730 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc00006c7e0 sp=0xc00006c750 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc00006c7e8 sp=0xc00006c7e0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 20 gp=0xc0000acc40 m=nil [GC worker (idle)]:
runtime.gopark(0x152de6536a150?, 0x3?, 0xb5?, 0xe5?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc00006cf50 sp=0xc00006cf30 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc00006cfe0 sp=0xc00006cf50 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc00006cfe8 sp=0xc00006cfe0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 5 gp=0xc000007880 m=nil [GC worker (idle)]:
runtime.gopark(0x152de623c9e51?, 0x3?, 0x36?, 0xba?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000072750 sp=0xc000072730 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc0000727e0 sp=0xc000072750 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc0000727e8 sp=0xc0000727e0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 6 gp=0xc000007a40 m=nil [GC worker (idle)]:
runtime.gopark(0x152de655788cd?, 0x3?, 0x19?, 0x5d?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000072f50 sp=0xc000072f30 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc000072fe0 sp=0xc000072f50 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc000072fe8 sp=0xc000072fe0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 21 gp=0xc0000ace00 m=nil [GC worker (idle)]:
runtime.gopark(0x152de65578933?, 0x1?, 0x20?, 0xb3?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc00006d750 sp=0xc00006d730 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc00006d7e0 sp=0xc00006d750 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc00006d7e8 sp=0xc00006d7e0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 7 gp=0xc000007c00 m=nil [GC worker (idle)]:
runtime.gopark(0x152de6506670b?, 0x3?, 0x6e?, 0xdb?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000073750 sp=0xc000073730 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc0000737e0 sp=0xc000073750 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc0000737e8 sp=0xc0000737e0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 34 gp=0xc000502000 m=nil [GC worker (idle)]:
runtime.gopark(0x152de65368df7?, 0x3?, 0x29?, 0xa4?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000508750 sp=0xc000508730 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc0005087e0 sp=0xc000508750 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc0005087e8 sp=0xc0005087e0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 35 gp=0xc0005021c0 m=nil [GC worker (idle)]:
runtime.gopark(0x152de26942f48?, 0x3?, 0x66?, 0xf?, 0x0?)
    /usr/local/go/src/runtime/proc.go:402 +0xce fp=0xc000508f50 sp=0xc000508f30 pc=0x10894152e
runtime.gcBgMarkWorker()
    /usr/local/go/src/runtime/mgc.go:1310 +0xe5 fp=0xc000508fe0 sp=0xc000508f50 pc=0x108922e25
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc000508fe8 sp=0xc000508fe0 pc=0x108975121
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/local/go/src/runtime/mgc.go:1234 +0x1c

goroutine 22 gp=0xc000503880 m=nil [runnable]:
runtime.mapaccess1_faststr(0x1098ba540, 0xc01269fec0, {0xc0140049e0, 0x6})
    /usr/local/go/src/runtime/map_faststr.go:13 +0x3a5 fp=0xc000088ee0 sp=0xc000088ed8 pc=0x108919b05
cogentcore.org/core/spell.(*Model).createSuggestKeys(0xc00028a9c0, {0xc0128f4f06, 0x7})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/spell/model.go:115 +0x87 fp=0xc000088f70 sp=0xc000088ee0 pc=0x109094087
cogentcore.org/core/spell.(*Model).addSuggestionsForWords(0xc00028a9c0, {0xc012ac2000, 0x7fc0, 0x0?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/spell/model.go:68 +0x5a fp=0xc000088fb0 sp=0xc000088f70 pc=0x109093aba
cogentcore.org/core/spell.(*Model).SetDicts.gowrap1()
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/spell/model.go:60 +0x2c fp=0xc000088fe0 sp=0xc000088fb0 pc=0x109093a2c
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc000088fe8 sp=0xc000088fe0 pc=0x108975121
created by cogentcore.org/core/spell.(*Model).SetDicts in goroutine 1
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/spell/model.go:60 +0x14a

goroutine 23 gp=0xc000503a40 m=nil [runnable]:
runtime.mapassign(0x1098e7aa0?, 0xc050c5bbf0?, 0xc04fa79a88?)
    /usr/local/go/src/runtime/map.go:579 +0x525 fp=0xc04fa79970 sp=0xc04fa79968 pc=0x108916505
cogentcore.org/core/parse/parser.ScopeRuleSet.Add(...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/state.go:397
cogentcore.org/core/parse/parser.(*State).AddNonMatch(...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/state.go:409
cogentcore.org/core/parse/parser.(*Rule).Match(0xc012718d20, 0xc04dbb0fd8, 0xc0123f4c00, {{0xa6?, 0x5?}, {0xa6?, 0x6?}}, 0x0, 0xc0510b0750)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:795 +0x6ca fp=0xc04fa79b60 sp=0xc04fa79970 pc=0x1090a794a
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc012718d20, 0xc04dbb0fd8, 0xc012718960, 0xc0123f4c00, {{0x1d?, 0x1?}, {0x2?, 0x2914058870?}}, 0xc0510b0750, 0x25)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:675 +0x11a fp=0xc04fa79c18 sp=0xc04fa79b60 pc=0x1090a693a
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012718780?, 0xc04dbb0fd8?, 0xc01270a780?, 0xc0123f4c00?, {{0x10?, 0x1098f92e0?}, {0xc000077b01?, 0x2?}}, 0xc0510b0750?, 0x25)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa79ce0 sp=0xc04fa79c18 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012718960, 0xc04dbb0fd8, 0xc04dbb0e08?, 0xc0123f4c00, {{0xc0123f4c00?, 0xc0123f4a80?}, {0x1099f91e0?, 0xc04fa79e60?}}, 0x1090b3eec?, 0x24)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa79da8 sp=0xc04fa79ce0 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01270a780, 0xc04dbb0fd8, 0xc01270a780?, 0xc0123f4c00, {{0xc0123f4a80?, 0xc0145cfa00?}, {0x1?, 0xc01271c5a0?}}, 0xc012748480?, 0x23)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa79e70 sp=0xc04fa79da8 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01271c5a0, 0xc04dbb0fd8, 0xc01270a780, 0xc0123f4a80, {{0xc0510b0750?, 0x2?}, {0x2?, 0x1?}}, {0xc0145cfa00, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7a070 sp=0xc04fa79e70 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01271c5a0, 0xc04dbb0fd8, 0xc01270a780, 0xc0123f4a80, {{0x21212121?, 0x100?}, {0xf0?, 0xc04fa7a1c0?}}, 0xc0510b0750, 0x22)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7a128 sp=0xc04fa7a070 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012718960?, 0xc04dbb0fd8?, 0x100?, 0xc0123f4a80?, {{0x100?, 0xc000077b08?}, {0xc0153e1200?, 0x0?}}, 0x0?, 0x22)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7a1f0 sp=0xc04fa7a128 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01270a780, 0xc04dbb0fd8, 0xc04dbb0fd8?, 0xc0123f4a80, {{0xc04fa7a340?, 0x10992f300?}, {0x4?, 0x0?}}, 0x0?, 0x21)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7a2b8 sp=0xc04fa7a1f0 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0126d0780, 0xc04dbb0fd8, 0xc0126cb680, 0xc0123f4a80, {{0xc0510b0750?, 0x1e?}, {0xc04fa7a530?, 0x10895c13e?}}, {0xc0145cfa00, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7a4b8 sp=0xc04fa7a2b8 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0126d0780, 0xc04dbb0fd8, 0xc0126cb680, 0xc0123f4a80, {{0xc0140587ec?, 0xc0140587ec?}, {0xc04fa7a6b8?, 0x1090816ee?}}, 0xc0510b0750, 0x20)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7a570 sp=0xc04fa7a4b8 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc04fa7a678?, 0x1090a271c?, 0xc04dbb0e08?, 0xc0123f4780?, {{0xc0123f4a80?, 0xc0123f4780?}, {0x1099f91e0?, 0xc04fa7a6f0?}}, 0xc04fa7a6b8?, 0x20)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7a638 sp=0xc04fa7a570 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126cb680, 0xc04dbb0fd8, 0xc04dbb0e08?, 0xc0123f4a80, {{0xc0126d0960?, 0xc018bd5960?}, {0xc01484b940?, 0xc01270a5a0?}}, 0x0?, 0x1f)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7a700 sp=0xc04fa7a638 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0126cba40, 0xc04dbb0fd8, 0xc0126cb680, 0xc0123f4780, {{0xc0510b0750?, 0xf?}, {0xc0127183c0?, 0xa6?}}, {0xc01484b940, 0x2, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7a900 sp=0xc04fa7a700 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0126cba40, 0xc04dbb0fd8, 0xc0126cb680, 0xc0123f4780, {{0x40?, 0x10a2fc5b8?}, {0x40?, 0xc04fa7ab48?}}, 0xc0510b0750, 0x1e)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7a9b8 sp=0xc04fa7a900 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc00034b2c0?, 0xc04fa7ac80?, 0x1090a7b0b?, 0xa6?, {{0x4?, 0xa6?}, {0xf?, 0x10992f300?}}, 0xc04fa7ab48?, 0x1e)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7aa80 sp=0xc04fa7a9b8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126cb680, 0xc04dbb0fd8, 0xc04dbb0fd8?, 0xc0123f4780, {{0xc04fa7ac80?, 0xc0127483c0?}, {0x0?, 0xc04fa7ac10?}}, 0x10891471b?, 0x1d)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7ab48 sp=0xc04fa7aa80 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0126cb4a0, 0xc04dbb0fd8, 0xc0126cab40, 0xc0123f4780, {{0xc0510b0750?, 0x10895bbd8?}, {0x11?, 0x24?}}, {0xc01484b940, 0x2, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7ad48 sp=0xc04fa7ab48 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0126cb4a0, 0xc04dbb0fd8, 0xc0126cab40, 0xc0123f4780, {{0x109839649?, 0x10000000020?}, {0x15cbbc268?, 0x10?}}, 0xc0510b0750, 0x1c)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7ae00 sp=0xc04fa7ad48 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x10895c514?, 0xc01274846f?, 0x23?, 0x1?, {{0x2?, 0x30140587d0?}, {0x1f?, 0x20?}}, 0x23?, 0x1c)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7aec8 sp=0xc04fa7ae00 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126cab40, 0xc04dbb0fd8, 0x20?, 0xc0123f4780, {{0xc000077b01?, 0x2?}, {0xc0123f4780?, 0xc04fa7afa0?}}, 0xc04fa7b008?, 0x1b)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7af90 sp=0xc04fa7aec8 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRulesRevBinExp(0xc01270a5a0, 0xc04dbb0fd8, 0xa1?, 0x0?, {{0x0?, 0x15ca2da98?}, {0x100?, 0x10a2fc5b8?}}, {0xc02ebd24e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1409 +0x5b5 fp=0xc04fa7b110 sp=0xc04fa7af90 pc=0x1090addd5
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01270a5a0, 0xc04dbb0fd8, 0xc0126d0960, 0xc0123f4180, {{0xc0510b0750?, 0x11?}, {0xc0126cb0e0?, 0xa6?}}, {0xc02ebd24e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1242 +0x3fa fp=0xc04fa7b310 sp=0xc04fa7b110 pc=0x1090ac33a
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01270a5a0, 0xc04dbb0fd8, 0xc0126d0960, 0xc0123f4180, {{0xc02ebd24e0?, 0x3?}, {0x3?, 0xc04fa7b660?}}, 0xc0510b0750, 0x1a)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7b3c8 sp=0xc04fa7b310 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x67?, 0x6600010000?, 0x6700000056?, 0xa6?, {{0x3?, 0xc0?}, {0xa6?, 0x3?}}, 0x0?, 0x1a)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7b490 sp=0xc04fa7b3c8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126d0960, 0xc04dbb0fd8, 0xc050c5bbf0?, 0xc0123f4180, {{0x1?, 0xc02ebd24e0?}, {0xc04fa7b768?, 0xc0126cb2c0?}}, 0xc0145cf980?, 0x19)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7b558 sp=0xc04fa7b490 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0126cb2c0, 0xc04dbb0fd8, 0xc0126cab40, 0xc0123f4180, {{0xc0510b0750?, 0xc04fa7b9a0?}, {0x1090acabd?, 0xa6?}}, {0xc02ebd24e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7b758 sp=0xc04fa7b558 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0126cb2c0, 0xc04dbb0fd8, 0xc0126cab40, 0xc0123f4180, {{0x2121212121212121?, 0x200?}, {0x1f0?, 0xc04fa7b8a8?}}, 0xc0510b0750, 0x18)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7b810 sp=0xc04fa7b758 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x0?, 0x15ccce9f8?, 0x200?, 0x10a2fc5b8?, {{0x200?, 0xc000077b08?}, {0xc02d6f5200?, 0x0?}}, 0x0?, 0x18)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7b8d8 sp=0xc04fa7b810 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126cab40, 0xc04dbb0fd8, 0xc04dbb0fd8?, 0xc0123f4180, {{0x15?, 0x10992f300?}, {0xc04dbb0fd8?, 0xc01273b0e0?}}, 0x0?, 0x17)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7b9a0 sp=0xc04fa7b8d8 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0126ca960, 0xc04dbb0fd8, 0xc0126ca5a0, 0xc0123f4180, {{0xc0510b0750?, 0xc050f33a40?}, {0x4?, 0xc050f33a58?}}, {0xc02ebd24e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7bba0 sp=0xc04fa7b9a0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0126ca960, 0xc04dbb0fd8, 0xc0126ca5a0, 0xc0123f4180, {{0xc0510b0750?, 0x108915501?}, {0xccd69fddce8fff77?, 0x1?}}, 0xc0510b0750, 0x16)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7bc58 sp=0xc04fa7bba0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc04fa7bd60?, 0x1090a271c?, 0xc04dbb0e08?, 0xc03b9c0c00?, {{0xc0123f4180?, 0xc03b9c0c00?}, {0x1099f91e0?, 0xc04fa7bdd8?}}, 0xc04fa7bda0?, 0x16)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7bd20 sp=0xc04fa7bc58 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126ca5a0, 0xc04dbb0fd8, 0xc04dbb0e08?, 0xc0123f4180, {{0x21212121?, 0x100?}, {0x11?, 0x0?}}, 0x0?, 0x15)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7bde8 sp=0xc04fa7bd20 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01274e780, 0xc04dbb0fd8, 0xc01274e5a0, 0xc03b9c0c00, {{0x0?, 0x11?}, {0xc01274cb40?, 0xa6?}}, {0xc0145cf980, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7bfe8 sp=0xc04fa7bde8 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01274e780, 0xc04dbb0fd8, 0xc01274e5a0, 0xc03b9c0c00, {{0xc0145cf980?, 0x4?}, {0x4?, 0xc04fa7c338?}}, 0x0, 0x14)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7c0a0 sp=0xc04fa7bfe8 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x11?, 0xc018bd5900?, 0x1?, 0x1?, {{0x10908192f?, 0xc04fa7c1d0?}, {0x108915c31?, 0x4?}}, 0x1090a66af?, 0x14)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7c168 sp=0xc04fa7c0a0 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01274e5a0, 0xc04dbb0fd8, 0xc050c5bbf0?, 0xc03b9c0c00, {{0xc000190375?, 0xc0145cf980?}, {0x1090a8cdf?, 0xc01274cd20?}}, 0x15d767958?, 0x13)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7c230 sp=0xc04fa7c168 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01274cd20, 0xc04dbb0fd8, 0xc01274c780, 0xc03b9c0c00, {{0x0?, 0x1?}, {0x4?, 0xa6?}}, {0xc0145cf980, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7c430 sp=0xc04fa7c230 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01274cd20, 0xc04dbb0fd8, 0xc01274c780, 0xc03b9c0c00, {{0xc0001330a0?, 0x0?}, {0x0?, 0xc04fa7c678?}}, 0x0, 0x12)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7c4e8 sp=0xc04fa7c430 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x0?, 0x3?, 0xa6?, 0xa6?, {{0x0?, 0xa6?}, {0x11?, 0x0?}}, 0xc04fa7c678?, 0x12)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7c5b0 sp=0xc04fa7c4e8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01274c780, 0xc04dbb0fd8, 0xc04dbb0fd8?, 0xc03b9c0c00, {{0xf0?, 0x10a2fc5b8?}, {0xf0?, 0xc000077b08?}}, 0x0?, 0x11)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7c678 sp=0xc04fa7c5b0 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01274c5a0, 0xc04dbb0fd8, 0xc01273b4a0, 0xc03b9c0c00, {{0x0?, 0xc04fa7c8e8?}, {0x108957ea9?, 0x60?}}, {0xc0145cf980, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7c878 sp=0xc04fa7c678 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01274c5a0, 0xc04dbb0fd8, 0xc01273b4a0, 0xc03b9c0c00, {{0x21?, 0x40?}, {0x30?, 0xc04fa7c9c8?}}, 0x0, 0x10)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7c930 sp=0xc04fa7c878 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012746f00?, 0xc04dbb0fd8?, 0x40?, 0xc03b9c0c00?, {{0x40?, 0xc000077b08?}, {0xc00034b240?, 0x0?}}, 0x0?, 0x10)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7c9f8 sp=0xc04fa7c930 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0, 0xc04dbb0fd8, 0xc04dbb0fd8?, 0xc03b9c0c00, {{0x97?, 0x10992f300?}, {0xa1?, 0x1?}}, 0x0?, 0xf)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7cac0 sp=0xc04fa7c9f8 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a8c0?}, {0x450c5bbf0?, 0x2?}}, {0xc02ebd2240, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7ccc0 sp=0xc04fa7cac0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a8c0?, 0x0?}}, 0x0, 0xe)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7cd78 sp=0xc04fa7ccc0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x96?, 0x10992f300?}, {0x95?, 0xc03b9c0c00?}}, 0x0?, 0xe)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7ce40 sp=0xc04fa7cd78 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a800?}, {0x4098e7aa0?, 0x1?}}, {0xc02ea681e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7d040 sp=0xc04fa7ce40 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a800?, 0x0?}}, 0x0, 0xd)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7d0f8 sp=0xc04fa7d040 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x95?, 0x10992f300?}, {0x93?, 0xc03b9c0c00?}}, 0x0?, 0xd)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7d1c0 sp=0xc04fa7d0f8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a6c0?}, {0x400000091?, 0x1?}}, {0xc01a839f20, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7d3c0 sp=0xc04fa7d1c0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a6c0?, 0x0?}}, 0x0, 0xc)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7d478 sp=0xc04fa7d3c0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x93?, 0x10992f300?}, {0x91?, 0xc03b9c0c00?}}, 0x0?, 0xc)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7d540 sp=0xc04fa7d478 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a580?}, {0x450c5bbf0?, 0x1?}}, {0xc01a839a40, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7d740 sp=0xc04fa7d540 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a580?, 0x0?}}, 0x0, 0xb)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7d7f8 sp=0xc04fa7d740 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x91?, 0x10992f300?}, {0xc04fa7d958?, 0xc03b9c0c00?}}, 0x0?, 0xb)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7d8c0 sp=0xc04fa7d7f8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a400?}, {0x4098e7aa0?, 0x1?}}, {0xc01a8397a0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7dac0 sp=0xc04fa7d8c0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a400?, 0x0?}}, 0x0, 0xa)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7db78 sp=0xc04fa7dac0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x8e?, 0x10992f300?}, {0x90?, 0x1?}}, 0x0?, 0xa)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7dc40 sp=0xc04fa7db78 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a240?}, {0x4098e7aa0?, 0x2?}}, {0xc01a8393e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7de40 sp=0xc04fa7dc40 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a240?, 0x0?}}, 0x0, 0x9)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7def8 sp=0xc04fa7de40 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x8d?, 0x10992f300?}, {0x8b?, 0xc03b9c0c00?}}, 0x0?, 0x9)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7dfc0 sp=0xc04fa7def8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a140?}, {0x450c5bbf0?, 0x1?}}, {0xc01a838f60, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7e1c0 sp=0xc04fa7dfc0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a140?, 0x0?}}, 0x0, 0x8)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7e278 sp=0xc04fa7e1c0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x8b?, 0x10992f300?}, {0x89?, 0xc03b9c0c00?}}, 0x0?, 0x8)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7e340 sp=0xc04fa7e278 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc00034a080?}, {0x4098e7aa0?, 0x1?}}, {0xc01a838e40, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7e540 sp=0xc04fa7e340 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc00034a080?, 0x0?}}, 0x0, 0x7)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7e5f8 sp=0xc04fa7e540 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x89?, 0x10992f300?}, {0xc04fa7e780?, 0xc03b9c0c00?}}, 0x0?, 0x7)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7e6c0 sp=0xc04fa7e5f8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x0?, 0xc0002a9f40?}, {0x400000001?, 0x1?}}, {0xc01a838c60, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7e8c0 sp=0xc04fa7e6c0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01273b0e0, 0xc03b9c0c00, {{0x40?, 0xc000077b08?}, {0xc0002a9f40?, 0x0?}}, 0x0, 0x6)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7e978 sp=0xc04fa7e8c0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb0fd8?, 0xc04dbb0fd8?, 0xc03b9c0c00?, {{0x10891471b?, 0x10992f300?}, {0x10891471b?, 0x3?}}, 0x0?, 0x6)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7ea40 sp=0xc04fa7e978 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01274c3c0, 0xc03b9c0c00, {{0x0?, 0x1?}, {0x108d847f6?, 0x1099f91e0?}}, {0xc01a838ae0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7ec40 sp=0xc04fa7ea40 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb0fd8, 0xc01274c3c0, 0xc03b9c0c00, {{0xc03b9c0c00?, 0xc03b7c1e00?}, {0x1099f91e0?, 0xc04fa7edb0?}}, 0x0, 0x5)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7ecf8 sp=0xc04fa7ec40 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x1090a7b0b?, 0xc0127372e8?, 0xc04dbb0e08?, 0xc03b7c1e00?, {{0x88?, 0x10992f300?}, {0x1e0000001e?, 0xc03b9c0300?}}, 0x0?, 0x5)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7edc0 sp=0xc04fa7ecf8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01274c3c0, 0xc04dbb0fd8, 0xc0127345a0, 0xc03b7c1e00, {{0x0?, 0x35?}, {0x108d847f6?, 0x1099f91e0?}}, {0xc0145cee00, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7efc0 sp=0xc04fa7edc0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01274c3c0, 0xc04dbb0fd8, 0xc0127345a0, 0xc03b7c1e00, {{0xc03b7c1e00?, 0xc035f86c00?}, {0x1099f91e0?, 0xc04fa7f130?}}, 0x0, 0x4)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7f078 sp=0xc04fa7efc0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc04dbb0fd8?, 0x3?, 0xc0127341e0?, 0xc03b7c1e00?, {{0xc035f86c00?, 0x5?}, {0x1?, 0xc035f87800?}}, 0xc012727860?, 0x4)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7f140 sp=0xc04fa7f078 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0127345a0, 0xc04dbb0fd8, 0xc0127341e0, 0xc035f86c00, {{0x0?, 0x0?}, {0x1?, 0x88?}}, {0xc050dac3c0, 0x5, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7f340 sp=0xc04fa7f140 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0127345a0, 0xc04dbb0fd8, 0xc0127341e0, 0xc035f86c00, {{0x21212121?, 0x100?}, {0xf0?, 0xc04fa7f490?}}, 0x0, 0x3)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7f3f8 sp=0xc04fa7f340 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x0?, 0x15cbcfae8?, 0x100?, 0x10a2fc5b8?, {{0x100?, 0xc000077b08?}, {0xc014778100?, 0x0?}}, 0x0?, 0x3)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7f4c0 sp=0xc04fa7f3f8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0127341e0, 0xc04dbb0fd8, 0xc04dbb0fd8?, 0xc035f86c00, {{0xc035f86c00?, 0x10992f300?}, {0x10?, 0x10?}}, 0x0?, 0x2)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7f588 sp=0xc04fa7f4c0 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01268cf00, 0xc04dbb0fd8, 0xc01268c3c0, 0xc035f86c00, {{0x0?, 0x10917b925?}, {0x109179498?, 0x108975121?}}, {0xc01484afc0, 0x2, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc04fa7f788 sp=0xc04fa7f588 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01268cf00, 0xc04dbb0fd8, 0xc01268c3c0, 0xc035f86c00, {{0x0?, 0x0?}, {0x2c?, 0x30?}}, 0x0, 0x1)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc04fa7f840 sp=0xc04fa7f788 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc04fa7f940?, 0x108d847f6?, 0x99f91e0?, 0x15d7b0ae8?, {{0x30?, 0x10a2fc5b8?}, {0x30?, 0xc000077b08?}}, 0xc050c5bbf0?, 0x1)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc04fa7f908 sp=0xc04fa7f840 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01268c3c0, 0xc04dbb0fd8, 0x108915659?, 0xc035f86c00, {{0xc04b66aa20?, 0xc04fa7fa28?}, {0x39c6?, 0xc0164d0000?}}, 0xc04b66aa50?, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc04fa7f9d0 sp=0xc04fa7f908 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).StartParse(0xc01268c000, 0xc04dbb0fd8)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:597 +0x292 fp=0xc04fa7fa88 sp=0xc04fa7f9d0 pc=0x1090a62d2
cogentcore.org/core/parse.(*Parser).ParseRun(0xc0002a1a40, 0xc04dbb0e08)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser.go:205 +0x45 fp=0xc04fa7fab0 sp=0xc04fa7fa88 pc=0x1090c0965
cogentcore.org/core/parse.(*Parser).ParseAll(0xc0002a1a40, 0xc04dbb0e08)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser.go:218 +0x4d fp=0xc04fa7faf8 sp=0xc04fa7fab0 pc=0x1090c09ed
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDirImpl(0x10a253950, 0xc012689678, {0xc012c80321, 0x4}, {0xc5?, 0x4a?, 0x91?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:228 +0x9da fp=0xc04fa7fdd0 sp=0xc04fa7faf8 pc=0x10917ad3a
cogentcore.org/core/parse/languages/golang.(*ParseDirLocks).ParseDir(0x10a2542d0, 0x10a253950, 0xc012689678, {0xc012c80321, 0x4}, {0x3?, 0x0?, 0x0?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:75 +0x228 fp=0xc04fa7fe40 sp=0xc04fa7fdd0 pc=0x10917a208
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDir(0xffffffffffffffff?, 0xc012c80320?, {0xc012c80321?, 0xc0127947b0?}, {0xc0?, 0xb7?, 0x8c?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:100 +0x51 fp=0xc04fa7fe80 sp=0xc04fa7fe40 pc=0x10917a2f1
cogentcore.org/core/parse/languages/golang.(*GoLang).AddImportToExts(0x10a253950, 0xc012689678, {0xc012c80320?, 0xc0003a3314?}, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:381 +0x59 fp=0xc04fa7fed0 sp=0xc04fa7fe80 pc=0x10917ba59
cogentcore.org/core/parse/languages/golang.(*GoLang).AddImportsToExts(0x10a253950, 0xc012689678?, 0xc012689678, 0xc01252acc0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:361 +0x165 fp=0xc04fa7ff90 sp=0xc04fa7fed0 pc=0x10917b925
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseFile.func1()
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/golang.go:86 +0x58 fp=0xc04fa7ffe0 sp=0xc04fa7ff90 pc=0x109179498
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc04fa7ffe8 sp=0xc04fa7ffe0 pc=0x108975121
created by cogentcore.org/core/parse/languages/golang.(*GoLang).ParseFile in goroutine 1
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/golang.go:84 +0x494

goroutine 87 gp=0xc01487aa80 m=nil [runnable]:
runtime.mapassign(0x1098e7aa0?, 0xc04f469bf0?, 0xc03a60ab20?)
    /usr/local/go/src/runtime/map.go:579 +0x525 fp=0xc03a60aa08 sp=0xc03a60aa00 pc=0x108916505
cogentcore.org/core/parse/parser.ScopeRuleSet.Add(...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/state.go:397
cogentcore.org/core/parse/parser.(*State).AddNonMatch(...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/state.go:409
cogentcore.org/core/parse/parser.(*Rule).Match(0xc0127405a0, 0xc04dbb01d8, 0xc012402180, {{0x64?, 0x0?}, {0x67?, 0x1?}}, 0x0, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:795 +0x6ca fp=0xc03a60abf8 sp=0xc03a60aa08 pc=0x1090a794a
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0127405a0, 0xc04dbb01d8, 0xc01273b4a0, 0xc012402180, {{0x64?, 0xc000351f80?}, {0x10?, 0x10?}}, 0x0, 0x15)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:675 +0x11a fp=0xc03a60acb0 sp=0xc03a60abf8 pc=0x1090a693a
cogentcore.org/core/parse/parser.(*Rule).Parse(0x68?, 0xc03a60ae10?, 0x10891471b?, 0x0?, {{0x62?, 0x4?}, {0x1?, 0x0?}}, 0x10000000003?, 0x15)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60ad78 sp=0xc03a60acb0 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0, 0xc04dbb01d8, 0xc04f469bf0?, 0xc012402180, {{0x24?, 0xc03a60aef8?}, {0x10891471b?, 0x3?}}, 0xc012739ce0?, 0x14)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60ae40 sp=0xc03a60ad78 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b2c0, 0xc012402180, {{0x0?, 0x656361727d090909?}, {0x28656c62616e452e?, 0x1099f9129?}}, {0xc02ec64360, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60b040 sp=0xc03a60ae40 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b2c0, 0xc012402180, {{0xc012402180?, 0xc04ba7fb00?}, {0x1099f91e0?, 0xc03a60b1b0?}}, 0x0, 0x13)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60b0f8 sp=0xc03a60b040 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x1090a7b0b?, 0xc012736820?, 0x9?, 0xc04ba7fb00?, {{0x62?, 0x10992f300?}, {0x10891471b?, 0xc04ba7fb00?}}, 0xc0126d0960?, 0x13)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60b1c0 sp=0xc03a60b0f8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b2c0, 0xc04dbb01d8, 0xc012740d20, 0xc04ba7fb00, {{0x0?, 0xb?}, {0x1098e7820?, 0xc04f469ec0?}}, {0xc02ec64360, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60b3c0 sp=0xc03a60b1c0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b2c0, 0xc04dbb01d8, 0xc012740d20, 0xc04ba7fb00, {{0xc04ba7fb00?, 0xc04ba7b800?}, {0x1099f91e0?, 0xc03a60b530?}}, 0x0, 0x12)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60b478 sp=0xc03a60b3c0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0126cab40?, 0xc04dbb01d8?, 0xc04dbb0008?, 0xc04ba7fb00?, {{0x1089099d4?, 0x10992f300?}, {0xc01276b810?, 0x0?}}, 0x0?, 0x12)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60b540 sp=0xc03a60b478 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc012740d20, 0xc04dbb01d8, 0xc012740b40, 0xc04ba7b800, {{0x0?, 0x2?}, {0x400000000?, 0x69?}}, {0xc012f43c00, 0x7, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60b740 sp=0xc03a60b540 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc012740d20, 0xc04dbb01d8, 0xc012740b40, 0xc04ba7b800, {{0x62?, 0x0?}, {0x69?, 0x1?}}, 0x0, 0x11)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60b7f8 sp=0xc03a60b740 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012740960?, 0xc04dbb01d8?, 0xc01273b4a0?, 0xc04ba7b800?, {{0x21?, 0x40?}, {0x30?, 0xc03a60b958?}}, 0x0?, 0x11)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60b8c0 sp=0xc03a60b7f8 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012740b40, 0xc04dbb01d8, 0x40?, 0xc04ba7b800, {{0x40?, 0xc000580908?}, {0xc000351480?, 0x0?}}, 0x0?, 0x10)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60b988 sp=0xc03a60b8c0 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0, 0xc04dbb01d8, 0xc04dbb01d8?, 0xc04ba7b800, {{0x61?, 0x10992f300?}, {0x60?, 0xc04ba7b800?}}, 0x0?, 0xf)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60ba50 sp=0xc03a60b988 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7b800, {{0x0?, 0xc000351380?}, {0x40000005f?, 0x1?}}, {0xc02ec64060, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60bc50 sp=0xc03a60ba50 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7b800, {{0x40?, 0xc000580908?}, {0xc000351380?, 0x0?}}, 0x0, 0xe)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60bd08 sp=0xc03a60bc50 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb01d8?, 0xc04dbb01d8?, 0xc04ba7b800?, {{0x60?, 0x10992f300?}, {0x5f?, 0xc04ba7b800?}}, 0x0?, 0xe)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60bdd0 sp=0xc03a60bd08 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7b800, {{0x0?, 0xc000351280?}, {0x40895853e?, 0x1?}}, {0xc02eb9fe60, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60bfd0 sp=0xc03a60bdd0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7b800, {{0x40?, 0xc000580908?}, {0xc000351280?, 0x0?}}, 0x0, 0xd)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60c088 sp=0xc03a60bfd0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb01d8?, 0xc04dbb01d8?, 0xc04ba7b800?, {{0x5f?, 0x10992f300?}, {0x5c?, 0xc04ba7b800?}}, 0x0?, 0xd)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60c150 sp=0xc03a60c088 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7b800, {{0x0?, 0xc01273b0e0?}, {0xc04dbb01d8?, 0x1?}}, {0xc02eb9fb60, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60c350 sp=0xc03a60c150 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7b800, {{0xc0003a2070?, 0xc01276a420?}, {0x9?, 0x0?}}, 0x0, 0xc)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60c408 sp=0xc03a60c350 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb01d8?, 0xc04f469bf0?, 0xc04ba7b800?, {{0x10891471b?, 0xc03a60c588?}, {0x10891471b?, 0x3?}}, 0xc0127392f0?, 0xc)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60c4d0 sp=0xc03a60c408 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b2c0, 0xc04ba7b800, {{0x0?, 0xc03a60c748?}, {0x108d847f6?, 0x1099f91e0?}}, {0xc02eb9f6e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60c6d0 sp=0xc03a60c4d0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b2c0, 0xc04ba7b800, {{0xc04ba7b800?, 0xc04ba7b680?}, {0x1099f91e0?, 0xc03a60c840?}}, 0x0, 0xb)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60c788 sp=0xc03a60c6d0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x1090a7b0b?, 0xc012736820?, 0x9?, 0xc04ba7b680?, {{0x10891471b?, 0x10992f300?}, {0x10891471b?, 0x3?}}, 0xc012739260?, 0xb)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60c850 sp=0xc03a60c788 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b2c0, 0xc04dbb01d8, 0xc012741a40, 0xc04ba7b680, {{0x0?, 0x5?}, {0x108d847f6?, 0x1099f91e0?}}, {0xc02eb9f6e0, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60ca50 sp=0xc03a60c850 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b2c0, 0xc04dbb01d8, 0xc012741a40, 0xc04ba7b680, {{0xc04ba7b680?, 0xc04ba7a600?}, {0x1099f91e0?, 0xc03a60cbc0?}}, 0x0, 0xa)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60cb08 sp=0xc03a60ca50 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x1090a7b0b?, 0xc012736da0?, 0xc04dbb0008?, 0xc04ba7a600?, {{0x1089099d4?, 0x10992f300?}, {0xc01276b810?, 0x0?}}, 0x0?, 0xa)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60cbd0 sp=0xc03a60cb08 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc012741a40, 0xc04dbb01d8, 0xc0127410e0, 0xc04ba7a600, {{0x0?, 0x2?}, {0x400000000?, 0x7d?}}, {0xc013247140, 0x6, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60cdd0 sp=0xc03a60cbd0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc012741a40, 0xc04dbb01d8, 0xc0127410e0, 0xc04ba7a600, {{0x5e?, 0x0?}, {0x7d?, 0x1?}}, 0x0, 0x9)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60ce88 sp=0xc03a60cdd0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc012740960?, 0xc04dbb01d8?, 0xc01273b4a0?, 0xc04ba7a600?, {{0x21?, 0x40?}, {0x30?, 0xc03a60cfe8?}}, 0x0?, 0x9)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60cf50 sp=0xc03a60ce88 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0127410e0, 0xc04dbb01d8, 0x40?, 0xc04ba7a600, {{0x40?, 0xc000580908?}, {0xc000351100?, 0x0?}}, 0x0?, 0x8)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60d018 sp=0xc03a60cf50 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0, 0xc04dbb01d8, 0xc04dbb01d8?, 0xc04ba7a600, {{0x5b?, 0x10992f300?}, {0x5d?, 0x1?}}, 0x0?, 0x7)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60d0e0 sp=0xc03a60d018 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7a600, {{0x0?, 0xc000350fc0?}, {0xc03a60d368?, 0x2?}}, {0xc02eb9f680, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60d2e0 sp=0xc03a60d0e0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01273b0e0, 0xc04ba7a600, {{0x40?, 0xc000580908?}, {0xc000350fc0?, 0x0?}}, 0x0, 0x6)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60d398 sp=0xc03a60d2e0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01273b4a0?, 0xc04dbb01d8?, 0xc04dbb01d8?, 0xc04ba7a600?, {{0x10891471b?, 0x10992f300?}, {0x10891471b?, 0x3?}}, 0x0?, 0x6)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60d460 sp=0xc03a60d398 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01274c3c0, 0xc04ba7a600, {{0x0?, 0x1?}, {0x108d847f6?, 0x1099f91e0?}}, {0xc02eb9f260, 0x3, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60d660 sp=0xc03a60d460 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01273b0e0, 0xc04dbb01d8, 0xc01274c3c0, 0xc04ba7a600, {{0xc04ba7a600?, 0xc04ba79980?}, {0x1099f91e0?, 0xc03a60d7d0?}}, 0x0, 0x5)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60d718 sp=0xc03a60d660 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x1090a7b0b?, 0xc0127372e8?, 0xc04dbb0008?, 0xc04ba79980?, {{0x5a?, 0x10992f300?}, {0x2100000021?, 0xc04ba7a300?}}, 0x0?, 0x5)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60d7e0 sp=0xc03a60d718 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01274c3c0, 0xc04dbb01d8, 0xc0127343c0, 0xc04ba79980, {{0x0?, 0x1b?}, {0x108d847f6?, 0x1099f91e0?}}, {0xc00053d500, 0x4, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60d9e0 sp=0xc03a60d7e0 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01274c3c0, 0xc04dbb01d8, 0xc0127343c0, 0xc04ba79980, {{0xc04ba79980?, 0xc01a860000?}, {0x1099f91e0?, 0xc03a60db50?}}, 0x0, 0x4)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60da98 sp=0xc03a60d9e0 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc04dbb01d8?, 0x6?, 0xc0127341e0?, 0xc04ba79980?, {{0xc01a860000?, 0x10992f300?}, {0x1?, 0x1097d36f0?}}, 0x0?, 0x4)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60db60 sp=0xc03a60da98 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc0127343c0, 0xc04dbb01d8, 0xc0127341e0, 0xc01a860000, {{0x0?, 0x0?}, {0x1?, 0x5a?}}, {0xc04c2a3800, 0x8, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60dd60 sp=0xc03a60db60 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc0127343c0, 0xc04dbb01d8, 0xc0127341e0, 0xc01a860000, {{0x21212121?, 0x100?}, {0xf0?, 0xc03a60deb0?}}, 0x0, 0x3)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60de18 sp=0xc03a60dd60 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0x0?, 0x15cd2d518?, 0x100?, 0x10a2fc108?, {{0x100?, 0xc000580908?}, {0xc014f29e00?, 0x0?}}, 0x0?, 0x3)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60dee0 sp=0xc03a60de18 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc0127341e0, 0xc04dbb01d8, 0xc04dbb01d8?, 0xc01a860000, {{0xc01a860000?, 0x10992f300?}, {0x10?, 0x10?}}, 0x0?, 0x2)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60dfa8 sp=0xc03a60dee0 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).DoRules(0xc01268cf00, 0xc04dbb01d8, 0xc01268c3c0, 0xc01a860000, {{0x0?, 0x0?}, {0x109a01800?, 0xc03a60e270?}}, {0xc000621200, 0x2, ...}, ...)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:1336 +0x106f fp=0xc03a60e1a8 sp=0xc03a60dfa8 pc=0x1090acfaf
cogentcore.org/core/parse/parser.(*Rule).ParseRules(0xc01268cf00, 0xc04dbb01d8, 0xc01268c3c0, 0xc01a860000, {{0xc03a60e2a0?, 0x2?}, {0x2c?, 0x30?}}, 0x0, 0x1)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:699 +0x405 fp=0xc03a60e260 sp=0xc03a60e1a8 pc=0x1090a6c25
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc03a60e360?, 0x108d847f6?, 0x99f91e0?, 0x15d7612f8?, {{0x30?, 0x10a2fc108?}, {0x30?, 0xc000580908?}}, 0xc04f469bf0?, 0x1)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:641 +0x1ef fp=0xc03a60e328 sp=0xc03a60e260 pc=0x1090a66af
cogentcore.org/core/parse/parser.(*Rule).Parse(0xc01268c3c0, 0xc04dbb01d8, 0x108915659?, 0xc01a860000, {{0xc04f469170?, 0xc03a60e448?}, {0x1194?, 0xc014a64000?}}, 0xc04f4691a0?, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:654 +0x2bf fp=0xc03a60e3f0 sp=0xc03a60e328 pc=0x1090a677f
cogentcore.org/core/parse/parser.(*Rule).StartParse(0xc01268c000, 0xc04dbb01d8)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser/rule.go:597 +0x292 fp=0xc03a60e4a8 sp=0xc03a60e3f0 pc=0x1090a62d2
cogentcore.org/core/parse.(*Parser).ParseRun(0xc0002a1a40, 0xc04dbb0008)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser.go:205 +0x45 fp=0xc03a60e4d0 sp=0xc03a60e4a8 pc=0x1090c0965
cogentcore.org/core/parse.(*Parser).ParseAll(0xc0002a1a40, 0xc04dbb0008)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/parser.go:218 +0x4d fp=0xc03a60e518 sp=0xc03a60e4d0 pc=0x1090c09ed
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDirImpl(0x10a253950, 0xc042320e08, {0xc04684a2c1, 0x4}, {0xff?, 0xff?, 0xff?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:228 +0x9da fp=0xc03a60e7f0 sp=0xc03a60e518 pc=0x10917ad3a
cogentcore.org/core/parse/languages/golang.(*ParseDirLocks).ParseDir(0x10a2542d0, 0x10a253950, 0xc042320e08, {0xc04684a2c1, 0x4}, {0x70?, 0x25?, 0x14?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:75 +0x228 fp=0xc03a60e860 sp=0xc03a60e7f0 pc=0x10917a208
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDir(0xc048142008?, 0xc04684a2c0?, {0xc04684a2c1?, 0x0?}, {0xa?, 0x0?, 0x0?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:100 +0x51 fp=0xc03a60e8a0 sp=0xc03a60e860 pc=0x10917a2f1
cogentcore.org/core/parse/languages/golang.(*GoLang).AddImportToExts(0x10a253950, 0xc042320e08, {0xc04684a2c0?, 0xc0492ec3e0?}, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:381 +0x59 fp=0xc03a60e8f0 sp=0xc03a60e8a0 pc=0x10917ba59
cogentcore.org/core/parse/languages/golang.(*GoLang).PkgSyms(0x10a253950, 0xc042320e08, 0xc04685acf0, {0xc0492ec3e0, 0x4})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:338 +0x96 fp=0xc03a60e930 sp=0xc03a60e8f0 pc=0x10917b736
cogentcore.org/core/parse/languages/golang.(*GoLang).FindTypeName(0x10a253950, {0xc0492ec3e0?, 0xc0496e7f80?}, 0xc042320e08, 0xc0468566c0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:82 +0x12e fp=0xc03a60ea00 sp=0xc03a60e930 pc=0x10917e62e
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromASTPrim(0x10a253950, 0xc042320e08, 0xc0468566c0, 0x0, 0xc0492fb980)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:228 +0x110 fp=0xc03a60eb10 sp=0xc03a60ea00 pc=0x10917f2d0
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromAST(0x10a253950, 0xc042320e08, 0xc0468566c0, 0x0, 0xc0492fb980)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:215 +0x149 fp=0xc03a60eb58 sp=0xc03a60eb10 pc=0x10917f129
cogentcore.org/core/parse/languages/golang.(*GoLang).SubTypeFromAST(0x0?, 0xc0481429a0?, 0x1098cb7c0?, 0x108917bfa?, 0xc04685acf0?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:163 +0xe5 fp=0xc03a60ebc0 sp=0xc03a60eb58 pc=0x10917eec5
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromASTComp(0x10a253950, 0xc042320e08, 0xc0468566c0, 0xc047cf69c0, 0xc0492fb500)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:358 +0x1448 fp=0xc03a60ed48 sp=0xc03a60ebc0 pc=0x109181088
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromAST(0x10a253950, 0xc042320e08, 0xc0468566c0, 0xc047cf69c0, 0xc0492fb500)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:217 +0x125 fp=0xc03a60ed90 sp=0xc03a60ed48 pc=0x10917f105
cogentcore.org/core/parse/languages/golang.(*GoLang).InitTypeFromAST(0x10a253950, 0xc042320e08, 0xc0468566c0, 0xc047cf69c0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:149 +0x133 fp=0xc03a60edf8 sp=0xc03a60ed90 pc=0x10917ecf3
cogentcore.org/core/parse/languages/golang.(*GoLang).TypesFromAST(0x10a253950, 0xc042320e08, 0xc0468566c0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:118 +0x22c fp=0xc03a60eec0 sp=0xc03a60edf8 pc=0x10917eb6c
cogentcore.org/core/parse/languages/golang.(*GoLang).ResolveTypes(0x10a253950, 0xc042320e08, 0xc0468566c0, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:108 +0x4c fp=0xc03a60ef00 sp=0xc03a60eec0 pc=0x10917e8cc
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDirImpl(0x10a253950, 0xc0351de008, {0xc03afe2b38, 0x2}, {0xff?, 0xff?, 0xff?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:252 +0xaab fp=0xc03a60f1d8 sp=0xc03a60ef00 pc=0x10917ae0b
cogentcore.org/core/parse/languages/golang.(*ParseDirLocks).ParseDir(0x10a2542d0, 0x10a253950, 0xc0351de008, {0xc03afe2b38, 0x2}, {0xe8?, 0x57?, 0x9b?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:75 +0x228 fp=0xc03a60f248 sp=0xc03a60f1d8 pc=0x10917a208
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDir(0xc02e9b5008?, 0xc03afe2b37?, {0xc03afe2b38?, 0x0?}, {0xf?, 0x0?, 0x0?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:100 +0x51 fp=0xc03a60f288 sp=0xc03a60f248 pc=0x10917a2f1
cogentcore.org/core/parse/languages/golang.(*GoLang).AddImportToExts(0x10a253950, 0xc0351de008, {0xc03afe2b37?, 0xc03bb3c1e0?}, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:381 +0x59 fp=0xc03a60f2d8 sp=0xc03a60f288 pc=0x10917ba59
cogentcore.org/core/parse/languages/golang.(*GoLang).PkgSyms(0x10a253950, 0xc0351de008, 0xc014690a20, {0xc03bb3c1e0, 0x2})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:338 +0x96 fp=0xc03a60f318 sp=0xc03a60f2d8 pc=0x10917b736
cogentcore.org/core/parse/languages/golang.(*GoLang).FindTypeName(0x10a253950, {0xc03bb3c1e0?, 0xc01535d258?}, 0xc0351de008, 0xc034400cc0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:82 +0x12e fp=0xc03a60f3e8 sp=0xc03a60f318 pc=0x10917e62e
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromASTPrim(0x10a253950, 0xc0351de008, 0xc034400cc0, 0x0, 0xc03bb42780)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:228 +0x110 fp=0xc03a60f4f8 sp=0xc03a60f3e8 pc=0x10917f2d0
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromAST(0x10a253950, 0xc0351de008, 0xc034400cc0, 0x0, 0xc03bb42780)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:215 +0x149 fp=0xc03a60f540 sp=0xc03a60f4f8 pc=0x10917f129
cogentcore.org/core/parse/languages/golang.(*GoLang).SubTypeFromAST(0x10891471b?, 0x10891caf8?, 0x0?, 0xc044eddb20?, 0xc000334010?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:163 +0xe5 fp=0xc03a60f5a8 sp=0xc03a60f540 pc=0x10917eec5
cogentcore.org/core/parse/languages/golang.(*GoLang).ParamsFromAST(0x10a253950, 0xc0351de008, 0xc034400cc0, 0xc03bb42300, 0xc04557c840, {0x1092a52da, 0x5})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/funcs.go:166 +0x4f3 fp=0xc03a60f708 sp=0xc03a60f5a8 pc=0x1091784d3
cogentcore.org/core/parse/languages/golang.(*GoLang).FuncTypeFromAST(0x10a253950, 0xc0351de008, 0xc034400cc0, 0xc03bb42000, 0x1098f35e0?)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/funcs.go:114 +0x445 fp=0xc03a60f7b8 sp=0xc03a60f708 pc=0x109177d05
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromASTComp(0x10a253950, 0xc0351de008, 0xc034400cc0, 0xc03b9e5bc0, 0xc03bb37200)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:396 +0xe4b fp=0xc03a60f940 sp=0xc03a60f7b8 pc=0x109180a8b
cogentcore.org/core/parse/languages/golang.(*GoLang).TypeFromAST(0x10a253950, 0xc0351de008, 0xc034400cc0, 0xc03b9e5bc0, 0xc03bb37200)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:217 +0x125 fp=0xc03a60f988 sp=0xc03a60f940 pc=0x10917f105
cogentcore.org/core/parse/languages/golang.(*GoLang).InitTypeFromAST(0x10a253950, 0xc0351de008, 0xc034400cc0, 0xc03b9e5bc0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:149 +0x133 fp=0xc03a60f9f0 sp=0xc03a60f988 pc=0x10917ecf3
cogentcore.org/core/parse/languages/golang.(*GoLang).TypesFromAST(0x10a253950, 0xc0351de008, 0xc034400cc0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:118 +0x22c fp=0xc03a60fab8 sp=0xc03a60f9f0 pc=0x10917eb6c
cogentcore.org/core/parse/languages/golang.(*GoLang).ResolveTypes(0x10a253950, 0xc0351de008, 0xc034400cc0, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/types.go:108 +0x4c fp=0xc03a60faf8 sp=0xc03a60fab8 pc=0x10917e8cc
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDirImpl(0x10a253950, 0xc012689988, {0xc02e9354a1, 0x7}, {0xe0?, 0x71?, 0x9?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:252 +0xaab fp=0xc03a60fdd0 sp=0xc03a60faf8 pc=0x10917ae0b
cogentcore.org/core/parse/languages/golang.(*ParseDirLocks).ParseDir(0x10a2542d0, 0x10a253950, 0xc012689988, {0xc02e9354a1, 0x7}, {0x0?, 0x0?, 0x0?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:75 +0x228 fp=0xc03a60fe40 sp=0xc03a60fdd0 pc=0x10917a208
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseDir(0xffffffffffffffff?, 0xc02e9354a0?, {0xc02e9354a1?, 0xc0325b5920?}, {0xc0?, 0xb7?, 0x8c?})
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:100 +0x51 fp=0xc03a60fe80 sp=0xc03a60fe40 pc=0x10917a2f1
cogentcore.org/core/parse/languages/golang.(*GoLang).AddImportToExts(0x10a253950, 0xc012689988, {0xc02e9354a0?, 0xc0003a3314?}, 0x0)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:381 +0x59 fp=0xc03a60fed0 sp=0xc03a60fe80 pc=0x10917ba59
cogentcore.org/core/parse/languages/golang.(*GoLang).AddImportsToExts(0x10a253950, 0xc012689988?, 0xc012689988, 0xc02e77b740)
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/parsedir.go:361 +0x165 fp=0xc03a60ff90 sp=0xc03a60fed0 pc=0x10917b925
cogentcore.org/core/parse/languages/golang.(*GoLang).ParseFile.func1()
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/golang.go:86 +0x58 fp=0xc03a60ffe0 sp=0xc03a60ff90 pc=0x109179498
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc03a60ffe8 sp=0xc03a60ffe0 pc=0x108975121
created by cogentcore.org/core/parse/languages/golang.(*GoLang).ParseFile in goroutine 82
    /Users/jaten/go/pkg/mod/cogentcore.org/core@v0.3.1-0.20240725221608-2aa1af792e92/parse/languages/golang/golang.go:84 +0x494

rax    0x600000624a00
rbx    0x7fcd0180cb10
rcx    0x7ff7b75f8b70
rdx    0x0
rdi    0x7fcd0202d400
rsi    0x600000624a00
rbp    0x7ff7b75f8b50
rsp    0x7ff7b75f8a20
r8     0x2
r9     0x35
r10    0x7ff847beafd2
r11    0x7ff80598db36
r12    0x600003f0c830
r13    0x4
r14    0x7fcd0202d400
r15    0x600002219080
rip    0x10b7a9ac6
rflags 0x10202
cs     0x2b
fs     0x0
gs     0x0
exit status 2
jaten@barkmbp:~$ uname -a
Darwin barkmbp.chimera-bass.ts.net 23.5.0 Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64 x86_64
jaten@barkmbp:~$ # running MacOS version: Sonoma 14.5
jaten@barkmbp:~$
kkoreilly commented 1 month ago

Thank you for reporting this! Does this reliably happen every time you run the demo? Can you try running the basic example (go run cogentcore.org/core/examples/basic@main)? Can you send the output of running vulkaninfo? Thank you!

glycerine commented 1 month ago

Thank you for reporting this

Sure. No problem. Are you shutting off signals before you enter C code? Are you setting the the SA_ONSTACK flag with sigaction before calling C code? In my experience embedding R (a big C based system) inside Go, I had to prevent Go from catching any signals while C code is running. Notes and examples here: https://github.com/glycerine/embedr/blob/master/cpp/embedr.cpp#L101

Signal wise, I've found that I can only have either Go code or C code running at once. When I have Go code running, I need to insure that it has its signal handlers and none of C code's signal handlers. And vice versa. C code needs to not get Go's signals, and Go code needs to not get C's signals.

Does this reliably happen every time you run the demo?

I tried running the demo five more times. None of the five additional runs crashed. It crashed only the first time I tried.

Can you try running the basic example (go run cogentcore.org/core/examples/basic@main)?

I ran it after the above five runs. It did not crash either.

Can you send the output of running vulkaninfo?

Pasting that below.

jaten@barkmbp:~$ vulkaninfo
WARNING: [MoltenVK] Code 0 : vkCreateMacOSSurfaceMVK() is deprecated. Use vkCreateMetalSurfaceEXT() from the VK_EXT_metal_surface extension.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.283

Instance Extensions: count = 17
===============================
    VK_EXT_debug_report                    : extension revision 10
    VK_EXT_debug_utils                     : extension revision 2
    VK_EXT_headless_surface                : extension revision 1
    VK_EXT_layer_settings                  : extension revision 2
    VK_EXT_metal_surface                   : extension revision 1
    VK_EXT_surface_maintenance1            : extension revision 1
    VK_EXT_swapchain_colorspace            : extension revision 4
    VK_KHR_device_group_creation           : extension revision 1
    VK_KHR_external_fence_capabilities     : extension revision 1
    VK_KHR_external_memory_capabilities    : extension revision 1
    VK_KHR_external_semaphore_capabilities : extension revision 1
    VK_KHR_get_physical_device_properties2 : extension revision 2
    VK_KHR_get_surface_capabilities2       : extension revision 1
    VK_KHR_portability_enumeration         : extension revision 1
    VK_KHR_surface                         : extension revision 25
    VK_LUNARG_direct_driver_loading        : extension revision 1
    VK_MVK_macos_surface                   : extension revision 3

Layers: count = 6
=================
VK_LAYER_KHRONOS_profiles (Khronos Profiles layer) Vulkan version 1.3.283, layer version 1:
    Layer Extensions: count = 1
        VK_EXT_layer_settings : extension revision 2
    Devices: count = 1
        GPU id = 0 (Intel(R) Iris(TM) Plus Graphics)
        Layer-Device Extensions: count = 1
            VK_EXT_tooling_info : extension revision 1

VK_LAYER_KHRONOS_shader_object (Khronos Shader object layer) Vulkan version 1.3.283, layer version 1:
    Layer Extensions: count = 1
        VK_EXT_layer_settings : extension revision 2
    Devices: count = 1
        GPU id = 0 (Intel(R) Iris(TM) Plus Graphics)
        Layer-Device Extensions: count = 1
            VK_EXT_shader_object : extension revision 1

VK_LAYER_KHRONOS_synchronization2 (Khronos Synchronization2 layer) Vulkan version 1.3.283, layer version 1:
    Layer Extensions: count = 1
        VK_EXT_layer_settings : extension revision 2
    Devices: count = 1
        GPU id = 0 (Intel(R) Iris(TM) Plus Graphics)
        Layer-Device Extensions: count = 1
            VK_KHR_synchronization2 : extension revision 1

VK_LAYER_KHRONOS_validation (Khronos Validation Layer) Vulkan version 1.3.283, layer version 1:
    Layer Extensions: count = 4
        VK_EXT_debug_report        : extension revision 9
        VK_EXT_debug_utils         : extension revision 1
        VK_EXT_layer_settings      : extension revision 2
        VK_EXT_validation_features : extension revision 2
    Devices: count = 1
        GPU id = 0 (Intel(R) Iris(TM) Plus Graphics)
        Layer-Device Extensions: count = 3
            VK_EXT_debug_marker     : extension revision 4
            VK_EXT_tooling_info     : extension revision 1
            VK_EXT_validation_cache : extension revision 1

VK_LAYER_LUNARG_api_dump (LunarG API dump layer) Vulkan version 1.3.283, layer version 2:
    Layer Extensions: count = 1
        VK_EXT_layer_settings : extension revision 2
    Devices: count = 1
        GPU id = 0 (Intel(R) Iris(TM) Plus Graphics)
        Layer-Device Extensions: count = 1
            VK_EXT_tooling_info : extension revision 1

VK_LAYER_LUNARG_screenshot (LunarG image capture layer) Vulkan version 1.3.283, layer version 1:
    Layer Extensions: count = 1
        VK_EXT_layer_settings : extension revision 2
    Devices: count = 1
        GPU id = 0 (Intel(R) Iris(TM) Plus Graphics)
        Layer-Device Extensions: count = 1
            VK_EXT_tooling_info : extension revision 1

Presentable Surfaces:
=====================
GPU id : 0 (Intel(R) Iris(TM) Plus Graphics):
    Surface types: count = 2
        VK_EXT_metal_surface
        VK_MVK_macos_surface
    Formats: count = 60
        SurfaceFormat[0]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[2]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[3]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[4]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[5]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
        SurfaceFormat[6]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
        SurfaceFormat[7]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
        SurfaceFormat[8]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
        SurfaceFormat[9]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
        SurfaceFormat[10]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
        SurfaceFormat[11]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
        SurfaceFormat[12]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
        SurfaceFormat[13]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
        SurfaceFormat[14]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_DCI_P3_NONLINEAR_EXT
        SurfaceFormat[15]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
        SurfaceFormat[16]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
        SurfaceFormat[17]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
        SurfaceFormat[18]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
        SurfaceFormat[19]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_BT709_NONLINEAR_EXT
        SurfaceFormat[20]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
        SurfaceFormat[21]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
        SurfaceFormat[22]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
        SurfaceFormat[23]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
        SurfaceFormat[24]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
        SurfaceFormat[25]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
        SurfaceFormat[26]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
        SurfaceFormat[27]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
        SurfaceFormat[28]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
        SurfaceFormat[29]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_PASS_THROUGH_EXT
        SurfaceFormat[30]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
        SurfaceFormat[31]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
        SurfaceFormat[32]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
        SurfaceFormat[33]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
        SurfaceFormat[34]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
        SurfaceFormat[35]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
        SurfaceFormat[36]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
        SurfaceFormat[37]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
        SurfaceFormat[38]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
        SurfaceFormat[39]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
        SurfaceFormat[40]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
        SurfaceFormat[41]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
        SurfaceFormat[42]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
        SurfaceFormat[43]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
        SurfaceFormat[44]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
        SurfaceFormat[45]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
        SurfaceFormat[46]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
        SurfaceFormat[47]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
        SurfaceFormat[48]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
        SurfaceFormat[49]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_BT2020_LINEAR_EXT
        SurfaceFormat[50]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_HDR10_HLG_EXT
        SurfaceFormat[51]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_HDR10_HLG_EXT
        SurfaceFormat[52]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_HDR10_HLG_EXT
        SurfaceFormat[53]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_HDR10_HLG_EXT
        SurfaceFormat[54]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_HDR10_HLG_EXT
        SurfaceFormat[55]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
        SurfaceFormat[56]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
        SurfaceFormat[57]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
        SurfaceFormat[58]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
        SurfaceFormat[59]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_HDR10_ST2084_EXT
    Present Modes: count = 2
        PRESENT_MODE_FIFO_KHR
        PRESENT_MODE_IMMEDIATE_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount = 2
        maxImageCount = 3
        currentExtent:
            width  = 512
            height = 512
        minImageExtent:
            width  = 1
            height = 1
        maxImageExtent:
            width  = 16384
            height = 16384
        maxImageArrayLayers = 1
        supportedTransforms: count = 1
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha: count = 3
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
            COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
            COMPOSITE_ALPHA_INHERIT_BIT_KHR
        supportedUsageFlags: count = 5
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
    VK_EXT_surface_maintenance1:
    ----------------------------
        PRESENT_MODE_FIFO_KHR:
            minImageCount = 2
            maxImageCount = 3
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling: count = 3
                    PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
                    PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
                    PRESENT_SCALING_STRETCH_BIT_EXT
                supportedPresentGravityX: count = 3
                    PRESENT_GRAVITY_MIN_BIT_EXT
                    PRESENT_GRAVITY_MAX_BIT_EXT
                    PRESENT_GRAVITY_CENTERED_BIT_EXT
                supportedPresentGravityY: count = 3
                    PRESENT_GRAVITY_MIN_BIT_EXT
                    PRESENT_GRAVITY_MAX_BIT_EXT
                    PRESENT_GRAVITY_CENTERED_BIT_EXT
                minScaledImageExtent:
                    width  = 1
                    height = 1
                maxScaledImageExtent:
                    width  = 16384
                    height = 16384
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 2
                pPresentModes: count = 2
                    PRESENT_MODE_FIFO_KHR
                    PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_IMMEDIATE_KHR:
            minImageCount = 3
            maxImageCount = 3
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling: count = 3
                    PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
                    PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
                    PRESENT_SCALING_STRETCH_BIT_EXT
                supportedPresentGravityX: count = 3
                    PRESENT_GRAVITY_MIN_BIT_EXT
                    PRESENT_GRAVITY_MAX_BIT_EXT
                    PRESENT_GRAVITY_CENTERED_BIT_EXT
                supportedPresentGravityY: count = 3
                    PRESENT_GRAVITY_MIN_BIT_EXT
                    PRESENT_GRAVITY_MAX_BIT_EXT
                    PRESENT_GRAVITY_CENTERED_BIT_EXT
                minScaledImageExtent:
                    width  = 1
                    height = 1
                maxScaledImageExtent:
                    width  = 16384
                    height = 16384
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 2
                pPresentModes: count = 2
                    PRESENT_MODE_IMMEDIATE_KHR
                    PRESENT_MODE_FIFO_KHR

Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
    apiVersion        = 1.2.283 (4202779)
    driverVersion     = 0.2.2017 (10209)
    vendorID          = 0x8086
    deviceID          = 0x8a53
    deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
    deviceName        = Intel(R) Iris(TM) Plus Graphics
    pipelineCacheUUID = bf097edc-0e05-07d2-0000-000000000000

VkPhysicalDeviceLimits:
-----------------------
    maxImageDimension1D                             = 16384
    maxImageDimension2D                             = 16384
    maxImageDimension3D                             = 2048
    maxImageDimensionCube                           = 16384
    maxImageArrayLayers                             = 2048
    maxTexelBufferElements                          = 67108864
    maxUniformBufferRange                           = 65536
    maxStorageBufferRange                           = 2147483648
    maxPushConstantsSize                            = 4096
    maxMemoryAllocationCount                        = 1073741824
    maxSamplerAllocationCount                       = 1073741824
    bufferImageGranularity                          = 0x00000100
    sparseAddressSpaceSize                          = 0x00000000
    maxBoundDescriptorSets                          = 8
    maxPerStageDescriptorSamplers                   = 16
    maxPerStageDescriptorUniformBuffers             = 31
    maxPerStageDescriptorStorageBuffers             = 31
    maxPerStageDescriptorSampledImages              = 128
    maxPerStageDescriptorStorageImages              = 8
    maxPerStageDescriptorInputAttachments           = 128
    maxPerStageResources                            = 159
    maxDescriptorSetSamplers                        = 80
    maxDescriptorSetUniformBuffers                  = 155
    maxDescriptorSetUniformBuffersDynamic           = 155
    maxDescriptorSetStorageBuffers                  = 155
    maxDescriptorSetStorageBuffersDynamic           = 155
    maxDescriptorSetSampledImages                   = 640
    maxDescriptorSetStorageImages                   = 40
    maxDescriptorSetInputAttachments                = 640
    maxVertexInputAttributes                        = 31
    maxVertexInputBindings                          = 31
    maxVertexInputAttributeOffset                   = 4095
    maxVertexInputBindingStride                     = 4096
    maxVertexOutputComponents                       = 124
    maxTessellationGenerationLevel                  = 64
    maxTessellationPatchSize                        = 32
    maxTessellationControlPerVertexInputComponents  = 124
    maxTessellationControlPerVertexOutputComponents = 124
    maxTessellationControlPerPatchOutputComponents  = 120
    maxTessellationControlTotalOutputComponents     = 4088
    maxTessellationEvaluationInputComponents        = 124
    maxTessellationEvaluationOutputComponents       = 124
    maxGeometryShaderInvocations                    = 0
    maxGeometryInputComponents                      = 0
    maxGeometryOutputComponents                     = 0
    maxGeometryOutputVertices                       = 0
    maxGeometryTotalOutputComponents                = 0
    maxFragmentInputComponents                      = 124
    maxFragmentOutputAttachments                    = 8
    maxFragmentDualSrcAttachments                   = 1
    maxFragmentCombinedOutputResources              = 159
    maxComputeSharedMemorySize                      = 65536
    maxComputeWorkGroupCount: count = 3
        1073741824
        1073741824
        1073741824
    maxComputeWorkGroupInvocations                  = 1024
    maxComputeWorkGroupSize: count = 3
        1024
        1024
        1024
    subPixelPrecisionBits                           = 4
    subTexelPrecisionBits                           = 4
    mipmapPrecisionBits                             = 4
    maxDrawIndexedIndexValue                        = 4294967295
    maxDrawIndirectCount                            = 1073741824
    maxSamplerLodBias                               = 4
    maxSamplerAnisotropy                            = 16
    maxViewports                                    = 16
    maxViewportDimensions: count = 2
        16384
        16384
    viewportBoundsRange: count = 2
        -32768
        32767
    viewportSubPixelBits                            = 0
    minMemoryMapAlignment                           = 256
    minTexelBufferOffsetAlignment                   = 0x00000010
    minUniformBufferOffsetAlignment                 = 0x00000100
    minStorageBufferOffsetAlignment                 = 0x00000010
    minTexelOffset                                  = -8
    maxTexelOffset                                  = 7
    minTexelGatherOffset                            = -8
    maxTexelGatherOffset                            = 7
    minInterpolationOffset                          = -0.5
    maxInterpolationOffset                          = 0.5
    subPixelInterpolationOffsetBits                 = 4
    maxFramebufferWidth                             = 16384
    maxFramebufferHeight                            = 16384
    maxFramebufferLayers                            = 2048
    framebufferColorSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    framebufferDepthSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    framebufferStencilSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    framebufferNoAttachmentsSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    maxColorAttachments                             = 8
    sampledImageColorSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    sampledImageIntegerSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    sampledImageDepthSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    sampledImageStencilSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    storageImageSampleCounts: count = 1
        SAMPLE_COUNT_1_BIT
    maxSampleMaskWords                              = 1
    timestampComputeAndGraphics                     = true
    timestampPeriod                                 = 52.2527
    maxClipDistances                                = 8
    maxCullDistances                                = 0
    maxCombinedClipAndCullDistances                 = 8
    discreteQueuePriorities                         = 2
    pointSizeRange: count = 2
        1
        256
    lineWidthRange: count = 2
        1
        1
    pointSizeGranularity                            = 1
    lineWidthGranularity                            = 0
    strictLines                                     = true
    standardSampleLocations                         = true
    optimalBufferCopyOffsetAlignment                = 0x00000100
    optimalBufferCopyRowPitchAlignment              = 0x00000001
    nonCoherentAtomSize                             = 0x00000100

VkPhysicalDeviceSparseProperties:
---------------------------------
    residencyStandard2DBlockShape            = false
    residencyStandard2DMultisampleBlockShape = false
    residencyStandard3DBlockShape            = false
    residencyAlignedMipSize                  = false
    residencyNonResidentStrict               = false

VkPhysicalDeviceExtendedDynamicState3PropertiesEXT:
---------------------------------------------------
    dynamicPrimitiveTopologyUnrestricted = false

VkPhysicalDeviceExternalMemoryHostPropertiesEXT:
------------------------------------------------
    minImportedHostPointerAlignment = 0x00001000

VkPhysicalDeviceInlineUniformBlockPropertiesEXT:
------------------------------------------------
    maxInlineUniformBlockSize                               = 4096
    maxPerStageDescriptorInlineUniformBlocks                = 13
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 13
    maxDescriptorSetInlineUniformBlocks                     = 52
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 52

VkPhysicalDevicePortabilitySubsetPropertiesKHR:
-----------------------------------------------
    minVertexInputBindingStrideAlignment = 4

VkPhysicalDevicePushDescriptorPropertiesKHR:
--------------------------------------------
    maxPushDescriptors = 159

VkPhysicalDeviceRobustness2PropertiesEXT:
-----------------------------------------
    robustStorageBufferAccessSizeAlignment = 0x00000001
    robustUniformBufferAccessSizeAlignment = 0x00000001

VkPhysicalDeviceSampleLocationsPropertiesEXT:
---------------------------------------------
    sampleLocationSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    maxSampleLocationGridSize:
        width  = 1
        height = 1
    sampleLocationCoordinateRange: count = 2
        0
        0.9375
    sampleLocationSubPixelBits       = 4
    variableSampleLocations          = true

VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR:
-----------------------------------------------------
    integerDotProduct8BitUnsignedAccelerated                                      = false
    integerDotProduct8BitSignedAccelerated                                        = false
    integerDotProduct8BitMixedSignednessAccelerated                               = false
    integerDotProduct4x8BitPackedUnsignedAccelerated                              = false
    integerDotProduct4x8BitPackedSignedAccelerated                                = false
    integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = false
    integerDotProduct16BitUnsignedAccelerated                                     = false
    integerDotProduct16BitSignedAccelerated                                       = false
    integerDotProduct16BitMixedSignednessAccelerated                              = false
    integerDotProduct32BitUnsignedAccelerated                                     = false
    integerDotProduct32BitSignedAccelerated                                       = false
    integerDotProduct32BitMixedSignednessAccelerated                              = false
    integerDotProduct64BitUnsignedAccelerated                                     = false
    integerDotProduct64BitSignedAccelerated                                       = false
    integerDotProduct64BitMixedSignednessAccelerated                              = false
    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = false
    integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = false
    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = false
    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = false
    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = false
    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = false
    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = false
    integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = false
    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = false
    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = false
    integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = false
    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = false
    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = false
    integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = false
    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = false

VkPhysicalDeviceSubgroupSizeControlPropertiesEXT:
-------------------------------------------------
    minSubgroupSize              = 8
    maxSubgroupSize              = 32
    maxComputeWorkgroupSubgroups = 128
    requiredSubgroupSizeStages:
        None

VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT:
--------------------------------------------------
    storageTexelBufferOffsetAlignmentBytes       = 0x00000010
    storageTexelBufferOffsetSingleTexelAlignment = true
    uniformTexelBufferOffsetAlignmentBytes       = 0x00000010
    uniformTexelBufferOffsetSingleTexelAlignment = true

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
----------------------------------------------------
    maxVertexAttribDivisor = 1073741824

VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR:
----------------------------------------------------
    maxVertexAttribDivisor       = 1073741824
    supportsNonZeroFirstInstance = true

VkPhysicalDeviceVulkan11Properties:
-----------------------------------
    deviceUUID                        = 00008086-0000-8a53-0000-000000000000
    driverUUID                        = 4d564b00-0000-27e1-0e05-07d200000000
    deviceLUID                        = 00000001-000004a4
    deviceNodeMask                    = 1
    deviceLUIDValid                   = true
    subgroupSize                      = 32
    subgroupSupportedStages: count = 3
        SHADER_STAGE_TESSELLATION_CONTROL_BIT
        SHADER_STAGE_FRAGMENT_BIT
        SHADER_STAGE_COMPUTE_BIT
    subgroupSupportedOperations: count = 7
        SUBGROUP_FEATURE_BASIC_BIT
        SUBGROUP_FEATURE_VOTE_BIT
        SUBGROUP_FEATURE_ARITHMETIC_BIT
        SUBGROUP_FEATURE_BALLOT_BIT
        SUBGROUP_FEATURE_SHUFFLE_BIT
        SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
        SUBGROUP_FEATURE_QUAD_BIT
    subgroupQuadOperationsInAllStages = true
    pointClippingBehavior             = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
    maxMultiviewViewCount             = 32
    maxMultiviewInstanceIndex         = 134217727
    protectedNoFault                  = false
    maxPerSetDescriptors              = 1024
    maxMemoryAllocationSize           = 0x80000000

VkPhysicalDeviceVulkan12Properties:
-----------------------------------
    driverID                                             = DRIVER_ID_MOLTENVK
    driverName                                           = MoltenVK
    driverInfo                                           = 1.2.9
    conformanceVersion:
        major    = 0
        minor    = 0
        subminor = 0
        patch    = 0
    denormBehaviorIndependence                           = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
    roundingModeIndependence                             = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
    shaderSignedZeroInfNanPreserveFloat16                = true
    shaderSignedZeroInfNanPreserveFloat32                = true
    shaderSignedZeroInfNanPreserveFloat64                = false
    shaderDenormPreserveFloat16                          = false
    shaderDenormPreserveFloat32                          = false
    shaderDenormPreserveFloat64                          = false
    shaderDenormFlushToZeroFloat16                       = false
    shaderDenormFlushToZeroFloat32                       = false
    shaderDenormFlushToZeroFloat64                       = false
    shaderRoundingModeRTEFloat16                         = false
    shaderRoundingModeRTEFloat32                         = false
    shaderRoundingModeRTEFloat64                         = false
    shaderRoundingModeRTZFloat16                         = false
    shaderRoundingModeRTZFloat32                         = false
    shaderRoundingModeRTZFloat64                         = false
    maxUpdateAfterBindDescriptorsInAllPools              = 1073741824
    shaderUniformBufferArrayNonUniformIndexingNative     = false
    shaderSampledImageArrayNonUniformIndexingNative      = true
    shaderStorageBufferArrayNonUniformIndexingNative     = false
    shaderStorageImageArrayNonUniformIndexingNative      = true
    shaderInputAttachmentArrayNonUniformIndexingNative   = true
    robustBufferAccessUpdateAfterBind                    = true
    quadDivergentImplicitLod                             = false
    maxPerStageDescriptorUpdateAfterBindSamplers         = 16
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 31
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 31
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 128
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 8
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 128
    maxPerStageUpdateAfterBindResources                  = 159
    maxDescriptorSetUpdateAfterBindSamplers              = 80
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 155
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 155
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 155
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 155
    maxDescriptorSetUpdateAfterBindSampledImages         = 640
    maxDescriptorSetUpdateAfterBindStorageImages         = 40
    maxDescriptorSetUpdateAfterBindInputAttachments      = 640
    supportedDepthResolveModes: count = 3
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    supportedStencilResolveModes: count = 1
        RESOLVE_MODE_SAMPLE_ZERO_BIT
    independentResolveNone                               = true
    independentResolve                                   = true
    filterMinmaxSingleComponentFormats                   = false
    filterMinmaxImageComponentMapping                    = false
    maxTimelineSemaphoreValueDifference                  = 18446744073709551615
    framebufferIntegerColorSampleCounts: count = 4
        SAMPLE_COUNT_1_BIT
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT

VkPhysicalDeviceHostImageCopyPropertiesEXT:
-------------------------------------------
    copySrcLayoutCount                  = 18
    pCopySrcLayouts: count = 18
        IMAGE_LAYOUT_UNDEFINED
        IMAGE_LAYOUT_GENERAL
        IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
        IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
        IMAGE_LAYOUT_PREINITIALIZED
        IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_PRESENT_SRC_KHR
    copyDstLayoutCount                  = 18
    pCopyDstLayouts: count = 18
        IMAGE_LAYOUT_UNDEFINED
        IMAGE_LAYOUT_GENERAL
        IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
        IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
        IMAGE_LAYOUT_PREINITIALIZED
        IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_READ_ONLY_OPTIMAL
        IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
        IMAGE_LAYOUT_PRESENT_SRC_KHR
    optimalTilingLayoutUUID             = 00008086-0000-8a53-cdcc-604100000000
    identicalMemoryTypeRequirements     = false

Device Extensions: count = 88
    VK_AMD_gpu_shader_half_float              : extension revision 2
    VK_AMD_negative_viewport_height           : extension revision 1
    VK_AMD_shader_trinary_minmax              : extension revision 1
    VK_EXT_4444_formats                       : extension revision 1
    VK_EXT_buffer_device_address              : extension revision 2
    VK_EXT_calibrated_timestamps              : extension revision 2
    VK_EXT_debug_marker                       : extension revision 4
    VK_EXT_descriptor_indexing                : extension revision 2
    VK_EXT_extended_dynamic_state             : extension revision 1
    VK_EXT_extended_dynamic_state2            : extension revision 1
    VK_EXT_extended_dynamic_state3            : extension revision 2
    VK_EXT_external_memory_host               : extension revision 1
    VK_EXT_fragment_shader_interlock          : extension revision 1
    VK_EXT_hdr_metadata                       : extension revision 2
    VK_EXT_host_image_copy                    : extension revision 1
    VK_EXT_host_query_reset                   : extension revision 1
    VK_EXT_image_robustness                   : extension revision 1
    VK_EXT_inline_uniform_block               : extension revision 1
    VK_EXT_memory_budget                      : extension revision 1
    VK_EXT_metal_objects                      : extension revision 2
    VK_EXT_pipeline_creation_cache_control    : extension revision 3
    VK_EXT_pipeline_creation_feedback         : extension revision 1
    VK_EXT_private_data                       : extension revision 1
    VK_EXT_robustness2                        : extension revision 1
    VK_EXT_sample_locations                   : extension revision 1
    VK_EXT_scalar_block_layout                : extension revision 1
    VK_EXT_separate_stencil_usage             : extension revision 1
    VK_EXT_shader_atomic_float                : extension revision 1
    VK_EXT_shader_demote_to_helper_invocation : extension revision 1
    VK_EXT_shader_stencil_export              : extension revision 1
    VK_EXT_shader_subgroup_ballot             : extension revision 1
    VK_EXT_shader_subgroup_vote               : extension revision 1
    VK_EXT_shader_viewport_index_layer        : extension revision 1
    VK_EXT_subgroup_size_control              : extension revision 2
    VK_EXT_swapchain_maintenance1             : extension revision 1
    VK_EXT_texel_buffer_alignment             : extension revision 1
    VK_EXT_vertex_attribute_divisor           : extension revision 3
    VK_GOOGLE_display_timing                  : extension revision 1
    VK_INTEL_shader_integer_functions2        : extension revision 1
    VK_KHR_16bit_storage                      : extension revision 1
    VK_KHR_8bit_storage                       : extension revision 1
    VK_KHR_bind_memory2                       : extension revision 1
    VK_KHR_buffer_device_address              : extension revision 1
    VK_KHR_calibrated_timestamps              : extension revision 1
    VK_KHR_copy_commands2                     : extension revision 1
    VK_KHR_create_renderpass2                 : extension revision 1
    VK_KHR_dedicated_allocation               : extension revision 3
    VK_KHR_deferred_host_operations           : extension revision 4
    VK_KHR_depth_stencil_resolve              : extension revision 1
    VK_KHR_descriptor_update_template         : extension revision 1
    VK_KHR_device_group                       : extension revision 4
    VK_KHR_driver_properties                  : extension revision 1
    VK_KHR_dynamic_rendering                  : extension revision 1
    VK_KHR_external_fence                     : extension revision 1
    VK_KHR_external_memory                    : extension revision 1
    VK_KHR_external_semaphore                 : extension revision 1
    VK_KHR_format_feature_flags2              : extension revision 2
    VK_KHR_get_memory_requirements2           : extension revision 1
    VK_KHR_image_format_list                  : extension revision 1
    VK_KHR_imageless_framebuffer              : extension revision 1
    VK_KHR_incremental_present                : extension revision 2
    VK_KHR_maintenance1                       : extension revision 2
    VK_KHR_maintenance2                       : extension revision 1
    VK_KHR_maintenance3                       : extension revision 1
    VK_KHR_map_memory2                        : extension revision 1
    VK_KHR_multiview                          : extension revision 1
    VK_KHR_portability_subset                 : extension revision 1
    VK_KHR_push_descriptor                    : extension revision 2
    VK_KHR_relaxed_block_layout               : extension revision 1
    VK_KHR_sampler_mirror_clamp_to_edge       : extension revision 3
    VK_KHR_sampler_ycbcr_conversion           : extension revision 14
    VK_KHR_separate_depth_stencil_layouts     : extension revision 1
    VK_KHR_shader_draw_parameters             : extension revision 1
    VK_KHR_shader_float16_int8                : extension revision 1
    VK_KHR_shader_float_controls              : extension revision 4
    VK_KHR_shader_integer_dot_product         : extension revision 1
    VK_KHR_shader_non_semantic_info           : extension revision 1
    VK_KHR_shader_subgroup_extended_types     : extension revision 1
    VK_KHR_spirv_1_4                          : extension revision 1
    VK_KHR_storage_buffer_storage_class       : extension revision 1
    VK_KHR_swapchain                          : extension revision 70
    VK_KHR_swapchain_mutable_format           : extension revision 1
    VK_KHR_synchronization2                   : extension revision 1
    VK_KHR_timeline_semaphore                 : extension revision 2
    VK_KHR_uniform_buffer_standard_layout     : extension revision 1
    VK_KHR_variable_pointers                  : extension revision 1
    VK_KHR_vertex_attribute_divisor           : extension revision 1
    VK_NV_glsl_shader                         : extension revision 1

VkQueueFamilyProperties:
========================
    queueProperties[0]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 1
        queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
        timestampValidBits          = 64
        present support             = true

    queueProperties[1]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 1
        queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
        timestampValidBits          = 64
        present support             = true

    queueProperties[2]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 1
        queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
        timestampValidBits          = 64
        present support             = true

    queueProperties[3]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 1
        queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
        timestampValidBits          = 64
        present support             = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
    memoryHeaps[0]:
        size   = 17179869184 (0x400000000) (16.00 GiB)
        budget = 1610612736 (0x60000000) (1.50 GiB)
        usage  = 8699904 (0x0084c000) (8.30 MiB)
        flags: count = 1
            MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 3
    memoryTypes[0]:
        heapIndex     = 0
        propertyFlags = 0x0001: count = 1
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
                (non-sparse)
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)
    memoryTypes[1]:
        heapIndex     = 0
        propertyFlags = 0x000f: count = 4
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
            MEMORY_PROPERTY_HOST_CACHED_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)
    memoryTypes[2]:
        heapIndex     = 0
        propertyFlags = 0x000b: count = 3
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_CACHED_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                (non-sparse)
            IMAGE_TILING_LINEAR:
                color images
                (non-sparse, non-transient)

VkPhysicalDeviceFeatures:
=========================
    robustBufferAccess                      = true
    fullDrawIndexUint32                     = true
    imageCubeArray                          = true
    independentBlend                        = true
    geometryShader                          = false
    tessellationShader                      = true
    sampleRateShading                       = true
    dualSrcBlend                            = true
    logicOp                                 = false
    multiDrawIndirect                       = true
    drawIndirectFirstInstance               = true
    depthClamp                              = true
    depthBiasClamp                          = true
    fillModeNonSolid                        = true
    depthBounds                             = false
    wideLines                               = false
    largePoints                             = true
    alphaToOne                              = true
    multiViewport                           = true
    samplerAnisotropy                       = true
    textureCompressionETC2                  = false
    textureCompressionASTC_LDR              = false
    textureCompressionBC                    = true
    occlusionQueryPrecise                   = true
    pipelineStatisticsQuery                 = false
    vertexPipelineStoresAndAtomics          = true
    fragmentStoresAndAtomics                = true
    shaderTessellationAndGeometryPointSize  = true
    shaderImageGatherExtended               = true
    shaderStorageImageExtendedFormats       = true
    shaderStorageImageMultisample           = false
    shaderStorageImageReadWithoutFormat     = true
    shaderStorageImageWriteWithoutFormat    = true
    shaderUniformBufferArrayDynamicIndexing = true
    shaderSampledImageArrayDynamicIndexing  = true
    shaderStorageBufferArrayDynamicIndexing = true
    shaderStorageImageArrayDynamicIndexing  = true
    shaderClipDistance                      = true
    shaderCullDistance                      = false
    shaderFloat64                           = false
    shaderInt64                             = true
    shaderInt16                             = true
    shaderResourceResidency                 = false
    shaderResourceMinLod                    = true
    sparseBinding                           = false
    sparseResidencyBuffer                   = false
    sparseResidencyImage2D                  = false
    sparseResidencyImage3D                  = false
    sparseResidency2Samples                 = false
    sparseResidency4Samples                 = false
    sparseResidency8Samples                 = false
    sparseResidency16Samples                = false
    sparseResidencyAliased                  = false
    variableMultisampleRate                 = false
    inheritedQueries                        = true

VkPhysicalDevice4444FormatsFeaturesEXT:
---------------------------------------
    formatA4R4G4B4 = false
    formatA4B4G4R4 = false

VkPhysicalDeviceBufferDeviceAddressFeaturesEXT:
-----------------------------------------------
    bufferDeviceAddress              = true
    bufferDeviceAddressCaptureReplay = false
    bufferDeviceAddressMultiDevice   = false

VkPhysicalDeviceDynamicRenderingFeaturesKHR:
--------------------------------------------
    dynamicRendering = true

VkPhysicalDeviceExtendedDynamicState2FeaturesEXT:
-------------------------------------------------
    extendedDynamicState2                   = true
    extendedDynamicState2LogicOp            = false
    extendedDynamicState2PatchControlPoints = true

VkPhysicalDeviceExtendedDynamicState3FeaturesEXT:
-------------------------------------------------
    extendedDynamicState3TessellationDomainOrigin         = false
    extendedDynamicState3DepthClampEnable                 = true
    extendedDynamicState3PolygonMode                      = true
    extendedDynamicState3RasterizationSamples             = false
    extendedDynamicState3SampleMask                       = false
    extendedDynamicState3AlphaToCoverageEnable            = false
    extendedDynamicState3AlphaToOneEnable                 = false
    extendedDynamicState3LogicOpEnable                    = false
    extendedDynamicState3ColorBlendEnable                 = false
    extendedDynamicState3ColorBlendEquation               = false
    extendedDynamicState3ColorWriteMask                   = false
    extendedDynamicState3RasterizationStream              = false
    extendedDynamicState3ConservativeRasterizationMode    = false
    extendedDynamicState3ExtraPrimitiveOverestimationSize = false
    extendedDynamicState3DepthClipEnable                  = true
    extendedDynamicState3SampleLocationsEnable            = true
    extendedDynamicState3ColorBlendAdvanced               = false
    extendedDynamicState3ProvokingVertexMode              = false
    extendedDynamicState3LineRasterizationMode            = false
    extendedDynamicState3LineStippleEnable                = false
    extendedDynamicState3DepthClipNegativeOneToOne        = false
    extendedDynamicState3ViewportWScalingEnable           = false
    extendedDynamicState3ViewportSwizzle                  = false
    extendedDynamicState3CoverageToColorEnable            = false
    extendedDynamicState3CoverageToColorLocation          = false
    extendedDynamicState3CoverageModulationMode           = false
    extendedDynamicState3CoverageModulationTableEnable    = false
    extendedDynamicState3CoverageModulationTable          = false
    extendedDynamicState3CoverageReductionMode            = false
    extendedDynamicState3RepresentativeFragmentTestEnable = false
    extendedDynamicState3ShadingRateImageEnable           = false

VkPhysicalDeviceExtendedDynamicStateFeaturesEXT:
------------------------------------------------
    extendedDynamicState = true

VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT:
---------------------------------------------------
    fragmentShaderSampleInterlock      = true
    fragmentShaderPixelInterlock       = true
    fragmentShaderShadingRateInterlock = false

VkPhysicalDeviceHostImageCopyFeaturesEXT:
-----------------------------------------
    hostImageCopy = true

VkPhysicalDeviceImageRobustnessFeaturesEXT:
-------------------------------------------
    robustImageAccess = true

VkPhysicalDeviceInlineUniformBlockFeaturesEXT:
----------------------------------------------
    inlineUniformBlock                                 = true
    descriptorBindingInlineUniformBlockUpdateAfterBind = true

VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT:
--------------------------------------------------------
    pipelineCreationCacheControl = true

VkPhysicalDevicePortabilitySubsetFeaturesKHR:
---------------------------------------------
    constantAlphaColorBlendFactors         = true
    events                                 = true
    imageViewFormatReinterpretation        = true
    imageViewFormatSwizzle                 = true
    imageView2DOn3DImage                   = false
    multisampleArrayImage                  = true
    mutableComparisonSamplers              = true
    pointPolygons                          = false
    samplerMipLodBias                      = false
    separateStencilMaskRef                 = true
    shaderSampleRateInterpolationFunctions = true
    tessellationIsolines                   = false
    tessellationPointMode                  = false
    triangleFans                           = true
    vertexAttributeAccessBeyondStride      = true

VkPhysicalDevicePrivateDataFeaturesEXT:
---------------------------------------
    privateData = true

VkPhysicalDeviceRobustness2FeaturesEXT:
---------------------------------------
    robustBufferAccess2 = false
    robustImageAccess2  = true
    nullDescriptor      = false

VkPhysicalDeviceShaderAtomicFloatFeaturesEXT:
---------------------------------------------
    shaderBufferFloat32Atomics   = true
    shaderBufferFloat32AtomicAdd = true
    shaderBufferFloat64Atomics   = false
    shaderBufferFloat64AtomicAdd = false
    shaderSharedFloat32Atomics   = true
    shaderSharedFloat32AtomicAdd = true
    shaderSharedFloat64Atomics   = false
    shaderSharedFloat64AtomicAdd = false
    shaderImageFloat32Atomics    = false
    shaderImageFloat32AtomicAdd  = false
    sparseImageFloat32Atomics    = false
    sparseImageFloat32AtomicAdd  = false

VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT:
----------------------------------------------------------
    shaderDemoteToHelperInvocation = true

VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR:
---------------------------------------------------
    shaderIntegerDotProduct = true

VkPhysicalDeviceSubgroupSizeControlFeaturesEXT:
-----------------------------------------------
    subgroupSizeControl  = true
    computeFullSubgroups = true

VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT:
-------------------------------------------------
    swapchainMaintenance1 = true

VkPhysicalDeviceSynchronization2FeaturesKHR:
--------------------------------------------
    synchronization2 = true

VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT:
------------------------------------------------
    texelBufferAlignment = true

VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR:
--------------------------------------------------
    vertexAttributeInstanceRateDivisor     = true
    vertexAttributeInstanceRateZeroDivisor = true

VkPhysicalDeviceVulkan11Features:
---------------------------------
    storageBuffer16BitAccess           = true
    uniformAndStorageBuffer16BitAccess = true
    storagePushConstant16              = true
    storageInputOutput16               = true
    multiview                          = true
    multiviewGeometryShader            = false
    multiviewTessellationShader        = false
    variablePointersStorageBuffer      = true
    variablePointers                   = true
    protectedMemory                    = false
    samplerYcbcrConversion             = true
    shaderDrawParameters               = true

VkPhysicalDeviceVulkan12Features:
---------------------------------
    samplerMirrorClampToEdge                           = true
    drawIndirectCount                                  = false
    storageBuffer8BitAccess                            = true
    uniformAndStorageBuffer8BitAccess                  = true
    storagePushConstant8                               = true
    shaderBufferInt64Atomics                           = false
    shaderSharedInt64Atomics                           = false
    shaderFloat16                                      = true
    shaderInt8                                         = true
    descriptorIndexing                                 = true
    shaderInputAttachmentArrayDynamicIndexing          = true
    shaderUniformTexelBufferArrayDynamicIndexing       = true
    shaderStorageTexelBufferArrayDynamicIndexing       = true
    shaderUniformBufferArrayNonUniformIndexing         = true
    shaderSampledImageArrayNonUniformIndexing          = true
    shaderStorageBufferArrayNonUniformIndexing         = true
    shaderStorageImageArrayNonUniformIndexing          = true
    shaderInputAttachmentArrayNonUniformIndexing       = true
    shaderUniformTexelBufferArrayNonUniformIndexing    = true
    shaderStorageTexelBufferArrayNonUniformIndexing    = true
    descriptorBindingUniformBufferUpdateAfterBind      = true
    descriptorBindingSampledImageUpdateAfterBind       = true
    descriptorBindingStorageImageUpdateAfterBind       = true
    descriptorBindingStorageBufferUpdateAfterBind      = true
    descriptorBindingUniformTexelBufferUpdateAfterBind = true
    descriptorBindingStorageTexelBufferUpdateAfterBind = true
    descriptorBindingUpdateUnusedWhilePending          = true
    descriptorBindingPartiallyBound                    = true
    descriptorBindingVariableDescriptorCount           = true
    runtimeDescriptorArray                             = true
    samplerFilterMinmax                                = false
    scalarBlockLayout                                  = true
    imagelessFramebuffer                               = true
    uniformBufferStandardLayout                        = true
    shaderSubgroupExtendedTypes                        = true
    separateDepthStencilLayouts                        = true
    hostQueryReset                                     = true
    timelineSemaphore                                  = true
    bufferDeviceAddress                                = true
    bufferDeviceAddressCaptureReplay                   = false
    bufferDeviceAddressMultiDevice                     = false
    vulkanMemoryModel                                  = false
    vulkanMemoryModelDeviceScope                       = false
    vulkanMemoryModelAvailabilityVisibilityChains      = false
    shaderOutputViewportIndex                          = true
    shaderOutputLayer                                  = true
    subgroupBroadcastDynamicId                         = true

jaten@barkmbp:~$
glycerine commented 1 month ago

Also, a basic question: Are you locking the first goroutine to its thread to be used for graphics? I don't know if Vulkan needs this, but many GUI systems do, and a quick github search did not find any calls to runtime.LockOSThread() in core.

See https://go.dev/wiki/LockOSThread for discussion. The thread local state used by the GUI libraries typically is what necessitates this.

kkoreilly commented 1 month ago

Yes, we are calling runtime.LockOSThread: https://github.com/cogentcore/core/blob/main/system/driver/desktop/app.go#L28.

glycerine commented 1 month ago

Yes, we are calling runtime.LockOSThread: https://github.com/cogentcore/core/blob/main/system/driver/desktop/app.go#L28.

Sorry if this is too simple a concern, but is Init() with a capital I called by an init() with a lowercase i function? Because only lower case init() func are guaranteed to be called sequentially and on the first goroutine during library initialization. If this is the case, it is likely worth a comment above the Init() func; at https://github.com/cogentcore/core/blob/main/system/driver/desktop/app.go#L25

kkoreilly commented 1 month ago

Yes, it is called by little init here: https://github.com/cogentcore/core/blob/main/system/driver/driver_desktop.go#L30. This is a pattern followed by all of our drivers; see https://github.com/cogentcore/core/blob/main/system/driver/base/app.go#L61 for more information. I can add a comment to base.Init that Init is always called by an init, but I don't think that we need to state that on each implementation. Thank you for the suggestion!

kkoreilly commented 1 month ago

See #1057.

kkoreilly commented 1 month ago

(Also just to be clear we have this somewhat contrived init->Init structure because we need control over which driver is used not just by build tags but also by bool logic, as you can see in the driver_desktop.go file above, so we can't just make each driver package automatically have side effects).

rcoreilly commented 1 month ago

@glycerine thanks for the tips on signal handlers -- I was not aware of any of those constraints wrt cgo, and I'm not sure if the vulkan wrapper folks did any of the necessary steps -- it is an abandonware package that I got working..

glycerine commented 1 month ago

You're welcome. I'm really just guessing, of course. But I did used to see that cgo got a signal message alot until I isolated the runtimes from each other as much as possible.

kkoreilly commented 2 weeks ago

Now that we are using WebGPU instead of Vulkan (#507 / #1112), this issue is extremely unlikely to still exist. I will close it, and if anyone somehow has it again, they can comment and I will reopen it.