fyne-io / fyne

Cross platform GUI toolkit in Go inspired by Material Design
https://fyne.io/
Other
25.14k stars 1.4k forks source link

widget.NewTreeWithStrings crashes when branch with "" is clicked #4743

Closed dliu2223 closed 7 months ago

dliu2223 commented 7 months ago

Checklist

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_
andydotxyz commented 7 months ago

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.

dliu2223 commented 7 months ago

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

dliu2223 commented 7 months ago

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

dliu2223 commented 7 months ago

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

andydotxyz commented 7 months ago

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.

andydotxyz commented 7 months ago

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.