fyne-io / fyne

Cross platform GUI toolkit in Go inspired by Material Design

Home Page:https://fyne.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

widget.NewTreeWithStrings crashes when branch with "" is clicked

dliu2223 opened this issue · comments

Checklist

  • I have searched the issue tracker for open issues that relate to the same problem, before opening a new one.
  • This issue only relates to a single bug. I will open new issues for any other problems.

Describe the bug

data map[:[A] A:[B C D H J L O P S V Z] B:[C] C:[] D:[E] E:[F G] F:[adef] G:[adeg] H:[I] I:[ahi] O:[ao] P:[Q] Q:[R] R:[apqr] S:[T] T:[U] U:[astu] V:[W] W:[X] X:[Y] Y:[zzz] Z:[0 1 2 3 4 5 6 7 8 9]]2024/03/25 13:52:13 Lifecycle: Started
2024/03/25 13:52:14 Lifecycle: Entered Foreground
runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc022202370 stack=[0xc022202000, 0xc042202000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x100740702?, 0x200000008?})
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/panic.go:1077 +0x5c fp=0x700017dd5d88 sp=0x700017dd5d58 pc=0x100036efc
runtime.newstack()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/stack.go:1107 +0x5ac fp=0x700017dd5f38 sp=0x700017dd5d88 pc=0x1000509cc
runtime.morestack()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:593 +0x8f fp=0x700017dd5f40 sp=0x700017dd5f38 pc=0x100067c4f

goroutine 14 [running]:
fyne.io/fyne/v2/app.(*settings).Theme.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings.go:67 +0x30 fp=0xc022202380 sp=0xc022202378 pc=0x100599ad0
fyne.io/fyne/v2/app.(*settings).Theme(0x100599a55?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings.go:68 +0x95 fp=0xc0222023d8 sp=0xc022202380 pc=0x100599a55
fyne.io/fyne/v2/theme.current()
/Users/liuda5f/go/src/fyne.io/fyne/v2/theme/theme.go:179 +0x31 fp=0xc022202408 sp=0xc0222023d8 pc=0x1002d9ad1
fyne.io/fyne/v2/theme.Padding()
/Users/liuda5f/go/src/fyne.io/fyne/v2/theme/size.go:117 +0x13 fp=0xc022202430 sp=0xc022202408 pc=0x1002d8f93
fyne.io/fyne/v2/widget.(*treeContentRenderer).MinSize.func1({0x100858070?, 0x10054ee22?}, {0xc00019c2a0?, 0xc000255020?}, 0x1, 0x10054ea0c?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:754 +0x65 fp=0xc022202468 sp=0xc022202430 pc=0x100551825
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100858070, 0x1}, {0x100857fd8, 0x1}, 0x555542, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:507 +0x98 fp=0xc0222024c8 sp=0xc022202468 pc=0x100550238
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555541, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202528 sp=0xc0222024c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555540, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202588 sp=0xc022202528 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55553f, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222025e8 sp=0xc022202588 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55553e, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202648 sp=0xc0222025e8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55553d, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222026a8 sp=0xc022202648 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55553c, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202708 sp=0xc0222026a8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55553b, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202768 sp=0xc022202708 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55553a, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222027c8 sp=0xc022202768 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555539, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202828 sp=0xc0222027c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555538, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202888 sp=0xc022202828 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555537, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222028e8 sp=0xc022202888 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555536, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202948 sp=0xc0222028e8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555535, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222029a8 sp=0xc022202948 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555534, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202a08 sp=0xc0222029a8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555533, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202a68 sp=0xc022202a08 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555532, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202ac8 sp=0xc022202a68 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555531, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202b28 sp=0xc022202ac8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555530, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202b88 sp=0xc022202b28 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55552f, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202be8 sp=0xc022202b88 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55552e, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202c48 sp=0xc022202be8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55552d, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202ca8 sp=0xc022202c48 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55552c, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202d08 sp=0xc022202ca8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55552b, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202d68 sp=0xc022202d08 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55552a, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202dc8 sp=0xc022202d68 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555529, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202e28 sp=0xc022202dc8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555528, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202e88 sp=0xc022202e28 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555527, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202ee8 sp=0xc022202e88 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555526, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202f48 sp=0xc022202ee8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555525, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202fa8 sp=0xc022202f48 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555524, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203008 sp=0xc022202fa8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555523, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203068 sp=0xc022203008 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555522, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222030c8 sp=0xc022203068 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555521, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203128 sp=0xc0222030c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555520, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203188 sp=0xc022203128 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55551f, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222031e8 sp=0xc022203188 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55551e, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203248 sp=0xc0222031e8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55551d, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222032a8 sp=0xc022203248 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55551c, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203308 sp=0xc0222032a8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55551b, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203368 sp=0xc022203308 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55551a, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222033c8 sp=0xc022203368 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555519, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203428 sp=0xc0222033c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555518, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203488 sp=0xc022203428 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555517, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222034e8 sp=0xc022203488 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555516, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203548 sp=0xc0222034e8 pc=0x1005502ea
...5592307 frames elided...
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x22, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422010c8 sp=0xc042201068 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x21, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201128 sp=0xc0422010c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x20, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201188 sp=0xc042201128 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x1f, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422011e8 sp=0xc042201188 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x1e, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201248 sp=0xc0422011e8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x1d, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422012a8 sp=0xc042201248 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x1c, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201308 sp=0xc0422012a8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x1b, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201368 sp=0xc042201308 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x1a, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422013c8 sp=0xc042201368 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x19, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201428 sp=0xc0422013c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x18, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201488 sp=0xc042201428 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x17, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422014e8 sp=0xc042201488 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x16, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201548 sp=0xc0422014e8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x15, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422015a8 sp=0xc042201548 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x14, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201608 sp=0xc0422015a8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x13, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201668 sp=0xc042201608 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x12, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422016c8 sp=0xc042201668 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x11, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201728 sp=0xc0422016c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x10, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201788 sp=0xc042201728 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0xf, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422017e8 sp=0xc042201788 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0xe, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201848 sp=0xc0422017e8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0xd, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422018a8 sp=0xc042201848 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0xc, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201908 sp=0xc0422018a8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0xb, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201968 sp=0xc042201908 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0xa, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422019c8 sp=0xc042201968 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x9, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201a28 sp=0xc0422019c8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x8, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201a88 sp=0xc042201a28 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x7, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201ae8 sp=0xc042201a88 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x6, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201b48 sp=0xc042201ae8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x5, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201ba8 sp=0xc042201b48 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x4, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201c08 sp=0xc042201ba8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x3, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201c68 sp=0xc042201c08 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x2, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201cc8 sp=0xc042201c68 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x1, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201d28 sp=0xc042201cc8 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x0, 0x0}, 0x0, 0xc042201de0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201d88 sp=0xc042201d28 pc=0x1005502ea
fyne.io/fyne/v2/widget.(*Tree).walkAll(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:523
fyne.io/fyne/v2/widget.(*treeContentRenderer).MinSize(0xc0002d0600)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:742 +0xca fp=0xc042201e10 sp=0xc042201d88 pc=0x10055176a
fyne.io/fyne/v2/widget.(*BaseWidget).MinSize(0xc001d85e20?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/widget.go:91 +0x26 fp=0xc042201e30 sp=0xc042201e10 pc=0x1005534c6
fyne.io/fyne/v2/widget.(*treeContent).MinSize(0x100553045?)
:1 +0x1e fp=0xc042201e48 sp=0xc042201e30 pc=0x10055f87e
fyne.io/fyne/v2/internal/widget.(*Scroll).updateOffset(0xc00023c000, 0x0, 0x0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/widget/scroller.go:485 +0x115 fp=0xc042201e80 sp=0xc042201e48 pc=0x1002e2cd5
fyne.io/fyne/v2/internal/widget.(*Scroll).Refresh(0xc00023c000)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/widget/scroller.go:442 +0x1e fp=0xc042201ea0 sp=0xc042201e80 pc=0x1002e299e
fyne.io/fyne/v2/widget.(*treeRenderer).Refresh(0xc000255050)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:555 +0x86 fp=0xc042201ec8 sp=0xc042201ea0 pc=0x100550526
fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc0001ff978?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/widget.go:139 +0x26 fp=0xc042201ee8 sp=0xc042201ec8 pc=0x1005537a6
fyne.io/fyne/v2/widget.(*Tree).OpenBranch(0xc0001ff950, {0x1007358fb, 0x1})
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:231 +0x9e fp=0xc042201f20 sp=0xc042201ee8 pc=0x10054f1de
fyne.io/fyne/v2/widget.(*Tree).ToggleBranch(0x100584ede?, {0x1007358fb, 0x1})
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:325 +0x53 fp=0xc042201f50 sp=0xc042201f20 pc=0x10054f693
fyne.io/fyne/v2/widget.(*branchIcon).Tapped(0xc001d85fb0?, 0xc0000e0201?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:1033 +0x25 fp=0xc042201f78 sp=0xc042201f50 pc=0x100552de5
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseClickedHandleTapDoubleTap.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:650 +0x22 fp=0xc042201f98 sp=0xc042201f78 pc=0x100586682
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/common/window.go:35 +0x38 fp=0xc042201fc8 sp=0xc042201f98 pc=0x10040d2b8
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1.1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:960 +0x25 fp=0xc042201fe0 sp=0xc042201fc8 pc=0x100588a05
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc042201fe8 sp=0xc042201fe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:960 +0x139

goroutine 1 [sync.RWMutex.RLock, locked to thread]:
runtime.gopark(0x4080000040800000?, 0xc0013079f8?, 0x0?, 0x9e?, 0xc001307180?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc001307150 sp=0xc001307130 pc=0x100039d6e
runtime.goparkunlock(...)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:404
runtime.semacquire1(0xc0000c8804, 0x28?, 0x3, 0x0, 0x18?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/sema.go:160 +0x218 fp=0xc0013071b8 sp=0xc001307150 pc=0x10004a7f8
sync.runtime_SemacquireRWMutexR(0xc001307220?, 0x30?, 0x10000c11a?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/sema.go:82 +0x25 fp=0xc0013071f0 sp=0xc0013071b8 pc=0x100065965
sync.(*RWMutex).RLock(...)
/usr/local/Cellar/go/1.21.1/libexec/src/sync/rwmutex.go:71
fyne.io/fyne/v2/widget.(*BaseWidget).Visible(0xc0000c87d0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/widget/widget.go:97 +0x48 fp=0xc001307238 sp=0xc0013071f0 pc=0x100553548
fyne.io/fyne/v2/widget.(*treeContent).Visible(0x10068fdc0?)
:1 +0x1e fp=0xc001307250 sp=0xc001307238 pc=0x10055fabe
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x1008676e0, 0xc0000c87d0}, 0x0, {0x1008665f8, 0xc00023c000}, {0x5850a5?, 0x1?}, {0x5530a0?, 0x1?}, {0x866418?, ...}, ...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:150 +0xc2 fp=0xc001307320 sp=0xc001307250 pc=0x10025ddc2
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x1008665f8, 0xc00023c000}, 0x0, {0x100866418, 0xc0001ff950}, {0x5850a5?, 0x1?}, {0x2bc440?, 0x1?}, {0x8663b8?, ...}, ...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:192 +0x41f fp=0xc0013073f0 sp=0xc001307320 pc=0x10025e11f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x100866418, 0xc0001ff950}, 0x0, {0x1008663b8, 0xc0000c86e0}, {0x5850a5?, 0x1?}, {0x5530a0?, 0x1?}, {0x8663b8?, ...}, ...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:192 +0x41f fp=0xc0013074c0 sp=0xc0013073f0 pc=0x10025e11f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x1008663b8, 0xc0000c86e0}, 0x0, {0x1008663b8, 0xc0000c8780}, {0x5850a5?, 0x1?}, {0x5530a0?, 0x1?}, {0x8664d8?, ...}, ...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:192 +0x41f fp=0xc001307590 sp=0xc0013074c0 pc=0x10025e11f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x1008663b8, 0xc0000c8780}, 0x0, {0x1008664d8, 0xc00023cfc0}, {0x25e11f?, 0x1?}, {0x8663b8?, 0x1?}, {0xc8780?, ...}, ...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:192 +0x41f fp=0xc001307660 sp=0xc001307590 pc=0x10025e11f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x1008664d8, 0xc00023cfc0}, 0x0, {0x0, 0x0}, {0x1307770?, 0xc0?}, {0x7e1e?, 0x1?}, {0x67b52?, ...}, ...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:192 +0x41f fp=0xc001307730 sp=0xc001307660 pc=0x10025e11f
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0x1008664d8?, 0xc00023cfc0?}, 0xc0000a36c0?, 0xc001307808?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:134 +0x46 fp=0xc001307798 sp=0xc001307730 pc=0x10025dcc6
fyne.io/fyne/v2/internal/driver.FindObjectAtPositionMatching({0x7e00?, 0x1?}, 0xc001307868?, {0x0?, 0x0?}, {0xc001307870?, 0x2, 0x3f800000006b9001?})
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/util.go:73 +0x105 fp=0xc001307818 sp=0xc001307798 pc=0x10025d885
fyne.io/fyne/v2/internal/driver/glfw.(*window).findObjectAtPositionMatching(0xc0000e027c?, 0xc0002ae000, {0xad?, 0x0?}, 0x1008675c0?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:352 +0xb0 fp=0xc0013078a0 sp=0xc001307818 pc=0x100583d10
fyne.io/fyne/v2/internal/driver/glfw.(*window).processMouseMoved(0xc0000e01e0, 0x406ab11000000000, 0x4065b4ec00000000)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:367 +0x1b6 fp=0xc001307a38 sp=0xc0013078a0 pc=0x100583f16
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseMoved(...)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window_desktop.go:379
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseMoved-fm(0x4420000043e60000?, 0xc001d83ca8?, 0xc001d83c80?)
:1 +0x25 fp=0xc001307a60 sp=0xc001307a38 pc=0x10058f145
github.com/go-gl/glfw/v3.3/glfw.goCursorPosCB(0x43320c0040800000?, 0x406ab11000000000, 0x4065b4ec00000000)
/Users/liuda5f/go/src/github.com/go-gl/glfw/v3.3/glfw/input.go:340 +0x3e fp=0xc001307a88 sp=0xc001307a60 pc=0x10056657e
_cgoexp_fa14aea24473_goCursorPosCB(0xc001d83af8?)
_cgo_gotypes.go:2572 +0x25 fp=0xc001307ab0 sp=0xc001307a88 pc=0x10056b165
runtime.cgocallbackg1(0x10056b140, 0xc001307c70?, 0x0)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/cgocall.go:329 +0x2b3 fp=0xc001307b80 sp=0xc001307ab0 pc=0x100006a93
runtime.cgocallbackg(0x1000411fc?, 0xc0000081a0?, 0x300000002?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/cgocall.go:245 +0x109 fp=0xc001307c10 sp=0xc001307b80 pc=0x100006749
runtime.cgocallbackg(0x10056b140, 0x7ff7bfefeb08, 0x0)
:1 +0x29 fp=0xc001307c38 sp=0xc001307c10 pc=0x10006c009
runtime.cgocallback(0xc001307c98, 0x1000065d5, 0x1005f3970)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1035 +0xcc fp=0xc001307c60 sp=0xc001307c38 pc=0x1000698cc
runtime.systemstack_switch()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:474 +0x8 fp=0xc001307c70 sp=0xc001307c60 pc=0x100067b08
runtime.cgocall(0x1005f3970, 0xc001307cd0)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/cgocall.go:175 +0x75 fp=0xc001307ca8 sp=0xc001307c70 pc=0x1000065d5
github.com/go-gl/glfw/v3.3/glfw._Cfunc_glfwPollEvents()
_cgo_gotypes.go:1497 +0x3f fp=0xc001307cd0 sp=0xc001307ca8 pc=0x1005638df
github.com/go-gl/glfw/v3.3/glfw.PollEvents()
/Users/liuda5f/go/src/github.com/go-gl/glfw/v3.3/glfw/window.go:964 +0xf fp=0xc001307ce0 sp=0xc001307cd0 pc=0x10056afaf
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).tryPollEvents(0xc001307df8?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/loop_desktop.go:34 +0x30 fp=0xc001307d00 sp=0xc001307ce0 pc=0x100580b10
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc00023dd50)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/loop.go:141 +0x1b9 fp=0xc001307e38 sp=0xc001307d00 pc=0x10057ff39
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc00023dd50)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver.go:168 +0x6f fp=0xc001307e58 sp=0xc001307e38 pc=0x10057e9af
fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0000e01e0)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:232 +0x26 fp=0xc001307e70 sp=0xc001307e58 pc=0x100583366
main.main()
/Users/liuda5f/go/src/fyne.io/fyne/v2/cmd/fyne_demo/main.go:68 +0x4cd fp=0xc001307f40 sp=0xc001307e70 pc=0x1005db14d
runtime.main()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:267 +0x2bb fp=0xc001307fe0 sp=0xc001307f40 pc=0x10003991b
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc001307fe8 sp=0xc001307fe0 pc=0x100069b01

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc00006afa8 sp=0xc00006af88 pc=0x100039d6e
runtime.goparkunlock(...)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:404
runtime.forcegchelper()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:322 +0xb3 fp=0xc00006afe0 sp=0xc00006afa8 pc=0x100039bf3
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006afe8 sp=0xc00006afe0 pc=0x100069b01
created by runtime.init.6 in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:310 +0x1a

goroutine 18 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000066778 sp=0xc000066758 pc=0x100039d6e
runtime.goparkunlock(...)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:404
runtime.bgsweep(0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgcsweep.go:321 +0xdf fp=0xc0000667c8 sp=0xc000066778 pc=0x10002669f
runtime.gcenable.func1()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:200 +0x25 fp=0xc0000667e0 sp=0xc0000667c8 pc=0x10001b9e5
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000667e8 sp=0xc0000667e0 pc=0x100069b01
created by runtime.gcenable in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:200 +0x66

goroutine 19 [GC scavenge wait]:
runtime.gopark(0xc00007c000?, 0x100857ea0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000066f70 sp=0xc000066f50 pc=0x100039d6e
runtime.goparkunlock(...)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:404
runtime.(*scavengerState).park(0x10135da60)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc000066fa0 sp=0xc000066f70 pc=0x100023ee9
runtime.bgscavenge(0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgcscavenge.go:658 +0x59 fp=0xc000066fc8 sp=0xc000066fa0 pc=0x100024499
runtime.gcenable.func2()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:201 +0x25 fp=0xc000066fe0 sp=0xc000066fc8 pc=0x10001b985
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000066fe8 sp=0xc000066fe0 pc=0x100069b01
created by runtime.gcenable in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:201 +0xa5

goroutine 3 [finalizer wait]:
runtime.gopark(0x100731f60?, 0x10003af01?, 0x0?, 0x0?, 0x100041ec5?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc00006a628 sp=0xc00006a608 pc=0x100039d6e
runtime.runfinq()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mfinal.go:193 +0x107 fp=0xc00006a7e0 sp=0xc00006a628 pc=0x10001aa67
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006a7e8 sp=0xc00006a7e0 pc=0x100069b01
created by runtime.createfing in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mfinal.go:163 +0x3d

goroutine 4 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc00006b6f0 sp=0xc00006b6d0 pc=0x100039d6e
runtime.chanrecv(0xc0000464e0, 0x0, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc00006b768 sp=0xc00006b6f0 pc=0x10000896d
runtime.chanrecv1(0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:442 +0x12 fp=0xc00006b790 sp=0xc00006b768 pc=0x100008572
fyne.io/fyne/v2/test.NewApp.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/test/testapp.go:166 +0x45 fp=0xc00006b7e0 sp=0xc00006b790 pc=0x1005d2d45
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006b7e8 sp=0xc00006b7e0 pc=0x100069b01
created by fyne.io/fyne/v2/test.NewApp in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/test/testapp.go:164 +0x325

goroutine 5 [syscall]:
syscall.syscall6(0x0?, 0x0?, 0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/sys_darwin.go:45 +0x98 fp=0xc00006bbc0 sp=0xc00006bb00 pc=0x100066638
golang.org/x/sys/unix.kevent(0x0?, 0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/Users/liuda5f/go/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:276 +0x4e fp=0xc00006bc28 sp=0xc00006bbc0 pc=0x10058f94e
golang.org/x/sys/unix.Kevent(0x0?, {0x0?, 0x0?, 0x0?}, {0xc00006be70?, 0x0?, 0x0?}, 0x0?)
/Users/liuda5f/go/src/golang.org/x/sys/unix/syscall_bsd.go:399 +0x35 fp=0xc00006bc68 sp=0xc00006bc28 pc=0x10058f7f5
github.com/fsnotify/fsnotify.(*Watcher).read(0x0?, {0xc00006be70?, 0x0?, 0xa})
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:764 +0x39 fp=0xc00006bcc0 sp=0xc00006bc68 pc=0x100592d19
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc00023ddc0)
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:534 +0xcb fp=0xc00006bfc8 sp=0xc00006bcc0 pc=0x10059188b
github.com/fsnotify/fsnotify.NewWatcher.func1()
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:166 +0x25 fp=0xc00006bfe0 sp=0xc00006bfc8 pc=0x100590305
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006bfe8 sp=0xc00006bfe0 pc=0x100069b01
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:166 +0x225

goroutine 6 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc00006c6c8 sp=0xc00006c6a8 pc=0x100039d6e
runtime.chanrecv(0xc000046600, 0xc00006c7b8, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc00006c740 sp=0xc00006c6c8 pc=0x10000896d
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:447 +0x12 fp=0xc00006c768 sp=0xc00006c740 pc=0x100008592
fyne.io/fyne/v2/app.watchFile.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings_desktop.go:43 +0x66 fp=0xc00006c7e0 sp=0xc00006c768 pc=0x10059a8e6
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006c7e8 sp=0xc00006c7e0 pc=0x100069b01
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings_desktop.go:42 +0xf8

goroutine 34 [syscall]:
syscall.syscall6(0x0?, 0x0?, 0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/sys_darwin.go:45 +0x98 fp=0xc00006cbc0 sp=0xc00006cb00 pc=0x100066638
golang.org/x/sys/unix.kevent(0x0?, 0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/Users/liuda5f/go/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go:276 +0x4e fp=0xc00006cc28 sp=0xc00006cbc0 pc=0x10058f94e
golang.org/x/sys/unix.Kevent(0x0?, {0x0?, 0x0?, 0x0?}, {0xc00006ce70?, 0x0?, 0x0?}, 0x0?)
/Users/liuda5f/go/src/golang.org/x/sys/unix/syscall_bsd.go:399 +0x35 fp=0xc00006cc68 sp=0xc00006cc28 pc=0x10058f7f5
github.com/fsnotify/fsnotify.(*Watcher).read(0x0?, {0xc00006ce70?, 0x0?, 0xa})
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:764 +0x39 fp=0xc00006ccc0 sp=0xc00006cc68 pc=0x100592d19
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0002b6070)
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:534 +0xcb fp=0xc00006cfc8 sp=0xc00006ccc0 pc=0x10059188b
github.com/fsnotify/fsnotify.NewWatcher.func1()
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:166 +0x25 fp=0xc00006cfe0 sp=0xc00006cfc8 pc=0x100590305
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006cfe8 sp=0xc00006cfe0 pc=0x100069b01
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
/Users/liuda5f/go/src/github.com/fsnotify/fsnotify/backend_kqueue.go:166 +0x225

goroutine 35 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c26c8 sp=0xc0002c26a8 pc=0x100039d6e
runtime.chanrecv(0xc0002bc000, 0xc0002c27b8, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc0002c2740 sp=0xc0002c26c8 pc=0x10000896d
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:447 +0x12 fp=0xc0002c2768 sp=0xc0002c2740 pc=0x100008592
fyne.io/fyne/v2/app.watchFile.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings_desktop.go:43 +0x66 fp=0xc0002c27e0 sp=0xc0002c2768 pc=0x10059a8e6
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c27e8 sp=0xc0002c27e0 pc=0x100069b01
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings_desktop.go:42 +0xf8

goroutine 37 [select, locked to thread]:
runtime.gopark(0xc001303f90?, 0x4?, 0x0?, 0x0?, 0xc001303f38?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc001303dd8 sp=0xc001303db8 pc=0x100039d6e
runtime.selectgo(0xc001303f90, 0xc001303f30, 0x0?, 0x0, 0x0?, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/select.go:327 +0x725 fp=0xc001303ef8 sp=0xc001303dd8 pc=0x1000497c5
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThr()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/loop.go:250 +0xf1 fp=0xc001303fe0 sp=0xc001303ef8 pc=0x1005807d1
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc001303fe8 sp=0xc001303fe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/loop.go:246 +0xbb

goroutine 38 [select]:
runtime.gopark(0xc0002c3f68?, 0x2?, 0xe5?, 0x32?, 0xc0002c3f08?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c3da0 sp=0xc0002c3d80 pc=0x100039d6e
runtime.selectgo(0xc0002c3f68, 0xc0002c3f04, 0x0?, 0x0, 0x0?, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/select.go:327 +0x725 fp=0xc0002c3ec0 sp=0xc0002c3da0 pc=0x1000497c5
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc0002aa480)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/async/chan_func.go:45 +0xd5 fp=0xc0002c3fc8 sp=0xc0002c3ec0 pc=0x1002e9975
fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/async/chan_func.go:22 +0x25 fp=0xc0002c3fe0 sp=0xc0002c3fc8 pc=0x1002e9825
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c3fe8 sp=0xc0002c3fe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/async/chan_func.go:22 +0xe5

goroutine 39 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c46f8 sp=0xc0002c46d8 pc=0x100039d6e
runtime.chanrecv(0xc0002a2180, 0xc0002c47b0, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc0002c4770 sp=0xc0002c46f8 pc=0x10000896d
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:447 +0x12 fp=0xc0002c4798 sp=0xc0002c4770 pc=0x100008592
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/common/window.go:34 +0x47 fp=0xc0002c47c8 sp=0xc0002c4798 pc=0x10040d2c7
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1.1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:960 +0x25 fp=0xc0002c47e0 sp=0xc0002c47c8 pc=0x100588a05
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c47e8 sp=0xc0002c47e0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/window.go:960 +0x139

goroutine 8 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc00006d750 sp=0xc00006d730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006d7e0 sp=0xc00006d750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006d7e8 sp=0xc00006d7e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 20 [GC worker (idle)]:
runtime.gopark(0x240d860645a3c?, 0x3?, 0xb3?, 0x2e?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000067750 sp=0xc000067730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0000677e0 sp=0xc000067750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000677e8 sp=0xc0000677e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 40 [GC worker (idle)]:
runtime.gopark(0x240d86064ef1b?, 0x3?, 0x36?, 0xff?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c3750 sp=0xc0002c3730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0002c37e0 sp=0xc0002c3750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c37e8 sp=0xc0002c37e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 21 [GC worker (idle)]:
runtime.gopark(0x240d860645e91?, 0x3?, 0x88?, 0x1b?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000067f50 sp=0xc000067f30 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc000067fe0 sp=0xc000067f50 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000067fe8 sp=0xc000067fe0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 9 [GC worker (idle)]:
runtime.gopark(0x240d860645b9b?, 0x3?, 0x6b?, 0x19?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc00006df50 sp=0xc00006df30 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006dfe0 sp=0xc00006df50 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006dfe8 sp=0xc00006dfe0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 41 [GC worker (idle)]:
runtime.gopark(0x240d8606458b9?, 0x1?, 0x7e?, 0xe4?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c4f50 sp=0xc0002c4f30 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0002c4fe0 sp=0xc0002c4f50 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c4fe8 sp=0xc0002c4fe0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 22 [GC worker (idle)]:
runtime.gopark(0x10138e4e0?, 0x1?, 0xfc?, 0x44?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000068750 sp=0xc000068730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0000687e0 sp=0xc000068750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000687e8 sp=0xc0000687e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 42 [GC worker (idle)]:
runtime.gopark(0x240d860647f05?, 0x3?, 0xb2?, 0x5?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c5750 sp=0xc0002c5730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0002c57e0 sp=0xc0002c5750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c57e8 sp=0xc0002c57e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 23 [GC worker (idle)]:
runtime.gopark(0x240d860645a75?, 0x1?, 0x80?, 0x5?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000068f50 sp=0xc000068f30 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc000068fe0 sp=0xc000068f50 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000068fe8 sp=0xc000068fe0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 24 [GC worker (idle)]:
runtime.gopark(0x240d860645922?, 0x3?, 0xc5?, 0xf?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000069750 sp=0xc000069730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0000697e0 sp=0xc000069750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000697e8 sp=0xc0000697e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 10 [GC worker (idle)]:
runtime.gopark(0x240d860645b3c?, 0x3?, 0x11?, 0xc5?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002be750 sp=0xc0002be730 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0002be7e0 sp=0xc0002be750 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002be7e8 sp=0xc0002be7e0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 11 [GC worker (idle)]:
runtime.gopark(0x10138e4e0?, 0x1?, 0xb5?, 0x5?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002bef50 sp=0xc0002bef30 pc=0x100039d6e
runtime.gcBgMarkWorker()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1293 +0xe5 fp=0xc0002befe0 sp=0xc0002bef50 pc=0x10001d365
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002befe8 sp=0xc0002befe0 pc=0x100069b01
created by runtime.gcBgMarkStartWorkers in goroutine 1
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/mgc.go:1217 +0x1c

goroutine 12 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc000069f08 sp=0xc000069ee8 pc=0x100039d6e
runtime.chanrecv(0xc000046720, 0xc000069fbf, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc000069f80 sp=0xc000069f08 pc=0x10000896d
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:447 +0x12 fp=0xc000069fa8 sp=0xc000069f80 pc=0x100008592
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:150 +0x34 fp=0xc000069fe0 sp=0xc000069fa8 pc=0x10057f2b4
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000069fe8 sp=0xc000069fe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:149 +0xee

goroutine 13 [select]:
runtime.gopark(0xc0002c5f68?, 0x2?, 0xe5?, 0x32?, 0xc0002c5f08?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c5da0 sp=0xc0002c5d80 pc=0x100039d6e
runtime.selectgo(0xc0002c5f68, 0xc0002c5f04, 0x0?, 0x0, 0x0?, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/select.go:327 +0x725 fp=0xc0002c5ec0 sp=0xc0002c5da0 pc=0x1000497c5
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc000254570)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/async/chan_func.go:45 +0xd5 fp=0xc0002c5fc8 sp=0xc0002c5ec0 pc=0x1002e9975
fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/async/chan_func.go:22 +0x25 fp=0xc0002c5fe0 sp=0xc0002c5fc8 pc=0x1002e9825
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c5fe8 sp=0xc0002c5fe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/async/chan_func.go:22 +0xe5

goroutine 16 [chan receive]:
runtime.gopark(0xc0006c16e0?, 0x100570205?, 0x1?, 0xd1?, 0xc0006c1758?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0006c16c8 sp=0xc0006c16a8 pc=0x100039d6e
runtime.chanrecv(0xc0002a2480, 0x0, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc0006c1740 sp=0xc0006c16c8 pc=0x10000896d
runtime.chanrecv1(0xc0002a2480?, 0xc0006c1798?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:442 +0x12 fp=0xc0006c1768 sp=0xc0006c1740 pc=0x100008572
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).catchTerm(0x0?)
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:183 +0x85 fp=0xc0006c17c8 sp=0xc0006c1768 pc=0x10057f445
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver.go:167 +0x25 fp=0xc0006c17e0 sp=0xc0006c17c8 pc=0x10057ea05
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0006c17e8 sp=0xc0006c17e0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run in goroutine 1
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver.go:167 +0x65

goroutine 50 [select, locked to thread]:
runtime.gopark(0xc0006bcfa8?, 0x2?, 0x9?, 0xa0?, 0xc0006bcfa4?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0006bce40 sp=0xc0006bce20 pc=0x100039d6e
runtime.selectgo(0xc0006bcfa8, 0xc0006bcfa0, 0x0?, 0x0, 0x0?, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/select.go:327 +0x725 fp=0xc0006bcf60 sp=0xc0006bce40 pc=0x1000497c5
runtime.ensureSigM.func1()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/signal_unix.go:1014 +0x16f fp=0xc0006bcfe0 sp=0xc0006bcf60 pc=0x100060bef
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0006bcfe8 sp=0xc0006bcfe0 pc=0x100069b01
created by runtime.ensureSigM in goroutine 16
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/signal_unix.go:997 +0xc8

goroutine 51 [syscall]:
runtime.sigNoteSleep(0x0)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/os_darwin.go:124 +0x18 fp=0xc0006bd7a0 sp=0xc0006bd768 pc=0x1000341b8
os/signal.signal_recv()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/sigqueue.go:149 +0x25 fp=0xc0006bd7c0 sp=0xc0006bd7a0 pc=0x100065fa5
os/signal.loop()
/usr/local/Cellar/go/1.21.1/libexec/src/os/signal/signal_unix.go:23 +0x13 fp=0xc0006bd7e0 sp=0xc0006bd7c0 pc=0x100570533
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0006bd7e8 sp=0xc0006bd7e0 pc=0x100069b01
created by os/signal.Notify.func1.1 in goroutine 16
/usr/local/Cellar/go/1.21.1/libexec/src/os/signal/signal.go:151 +0x1f

goroutine 25 [chan receive]:
runtime.gopark(0x0?, 0x3?, 0x80?, 0x4?, 0xc0002b80a0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0002c2f08 sp=0xc0002c2ee8 pc=0x100039d6e
runtime.chanrecv(0xc0014ba060, 0xc0002c2fbf, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc0002c2f80 sp=0xc0002c2f08 pc=0x10000896d
runtime.chanrecv2(0xc0002c2fd0?, 0x1005707ef?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:447 +0x12 fp=0xc0002c2fa8 sp=0xc0002c2f80 pc=0x100008592
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:150 +0x34 fp=0xc0002c2fe0 sp=0xc0002c2fa8 pc=0x10057f2b4
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0002c2fe8 sp=0xc0002c2fe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 36
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:149 +0xee

goroutine 26 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/proc.go:398 +0xce fp=0xc0007fef08 sp=0xc0007feee8 pc=0x100039d6e
runtime.chanrecv(0xc0014ba0c0, 0xc0007fefbf, 0x1)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:583 +0x3cd fp=0xc0007fef80 sp=0xc0007fef08 pc=0x10000896d
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/chan.go:447 +0x12 fp=0xc0007fefa8 sp=0xc0007fef80 pc=0x100008592
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:150 +0x34 fp=0xc0007fefe0 sp=0xc0007fefa8 pc=0x10057f2b4
runtime.goexit()
/usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0007fefe8 sp=0xc0007fefe0 pc=0x100069b01
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 36
/Users/liuda5f/go/src/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go:149 +0xee
liuda5f fyne_demo %

How to reproduce

See example code, modify the fyne demo tree tab branch C with "" and click branch C

Screenshots

No response

Example code

func makeTreeTab(_ fyne.Window) fyne.CanvasObject {
data := map[string][]string{
"": {"A"},
"A": {"B", "C", "D", "H", "J", "L", "O", "P", "S", "V", "Z"},
"C": {""},
.......

Fyne version

2.4.4

Go compiler version

go version go1.21.1 darwin/amd64

Operating system and version

Mac sonoma 14.4

Additional Information

No response

The "" ID is used for the root, and your tree IDs must always be unique. By specifying that "" is the child of another node you have created a circular reference in the hierarchy and therefore an infinite loop.

Thanks for the quick response, I can work around it. Our application uses the string tree to represent network data (i.e., OpenConfig YANG model as JSON encoded text RFC 7951), the leaves of the JSON tree is the value and JSON supports null or "". I understand the []string is used to look up the child tree ID in map, in the future, it would be nice the []string could be []interface e.g., an interface supports GetValue() or GetIndex() to distinguish between leaf value or index to another branch.

For now, I just leave the branch empty when no data present. Let me know if this can be enhanced in the future and I will close it after your response. Thanks

1 more issue in using tree to represent JSON caused by the unique tree node id constraint, the following valid json cannot be represented in the map[string][]string for NewTreeWithStrings()
{
"list": [
{"foo": "123"},
{"foo": "456"}
]
}

Separation of the tree node display label and tree node id seems necessary to make it work, any suggestion? Thanks

1 more issue just found with following data, when B is selected, C value ("leaf") disappear, again, the "leaf" is a value which has no branch defined in the map.
data := map[string][]string{
"": {"A"},
"A": {"B", "C"},
"B": {"leaf"},
"C": {"leaf"},
}
If this is also a expected behavior, it creates major issues for working on JSON data, please advise. Thanks

Separation of the tree node display label and tree node id seems necessary to make it work, any suggestion? Thanks

Correct, the NewTreeWithStrings is just a shorthand where the content can also be the unique ID. for non-unique node data you will need to use NewTree or NewTreeWithData. The latter can take a binding.StringTree where you will see the id and the value are indeed separated.

the "leaf" is a value which has no branch defined in the map

In this demo you have used the ID "leaf" twice - which is not unique. A common way to work with this would be to put the parent ID as a prefix to a child so the path is unique even though the final node id is the same. As with a file path where two files have the same name in different directories.

I'm closing this issue as I don't think its the responsibility of 'widget.Tree' to function with infinite loops in the data source.