Open matwachich opened 1 year ago
It is like Items are populated before Headers...
Perhaps related crash in develop (2.3.6 20230618081107-)
"sync: RUnlock of unlocked RWMutex"
Stack:
1 0x00007ff73070b0de in sync.fatal
at C:/Program Files/Go/src/runtime/panic.go:1031
2 0x00007ff73072549d in sync.(*RWMutex).rUnlockSlow
at C:/Program Files/Go/src/sync/rwmutex.go:129
3 0x00007ff730725407 in sync.(*RWMutex).RUnlock
at C:/Program Files/Go/src/sync/rwmutex.go:119
4 0x00007ff7312b63cb in fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func2
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:95
7 0x00007ff7310eded2 in fyne.io/fyne/v2/widget.(*accordionRenderer).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/accordion.go:154
8 0x00007ff73113bde2 in fyne.io/fyne/v2/widget.(*BaseWidget).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/widget.go:91
9 0x00007ff7310ed2b6 in fyne.io/fyne/v2/widget.(*Accordion).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/accordion.go:65
10 0x00007ff73152c7c5 in main.(*wPatientSummary).MinSize
at <autogenerated>:1
11 0x00007ff730dc0a4b in fyne.io/fyne/v2/internal/widget.(*Scroll).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/widget/scroller.go:426
12 0x00007ff7311677a4 in fyne.io/fyne/v2/container.(*baseTabsRenderer).minSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/tabs.go:388
13 0x00007ff73115d99a in fyne.io/fyne/v2/container.(*appTabsRenderer).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/apptabs.go:304
14 0x00007ff73113bde2 in fyne.io/fyne/v2/widget.(*BaseWidget).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/widget.go:91
15 0x00007ff73115ccf6 in fyne.io/fyne/v2/container.(*AppTabs).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/apptabs.go:142
16 0x00007ff730db76e7 in fyne.io/fyne/v2/layout.(*borderLayout).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/layout/borderlayout.go:79
17 0x00007ff730cbedf2 in fyne.io/fyne/v2.(*Container).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container.go:90
18 0x00007ff731163a76 in fyne.io/fyne/v2/container.(*splitContainerRenderer).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/split.go:133
19 0x00007ff73113bde2 in fyne.io/fyne/v2/widget.(*BaseWidget).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/widget.go:91
20 0x00007ff73116c5e5 in fyne.io/fyne/v2/container.(*Split).MinSize
at <autogenerated>:1
21 0x00007ff7311640c8 in fyne.io/fyne/v2/container.(*splitContainerRenderer).minTrailingWidth
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/split.go:200
22 0x00007ff7311636a7 in fyne.io/fyne/v2/container.(*splitContainerRenderer).Layout
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/split.go:98
23 0x00007ff731163ca5 in fyne.io/fyne/v2/container.(*splitContainerRenderer).Refresh
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/split.go:153
24 0x00007ff73113c1e9 in fyne.io/fyne/v2/widget.(*BaseWidget).Refresh
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/widget.go:139
25 0x00007ff73116c7ae in fyne.io/fyne/v2/container.(*Split).Refresh
at <autogenerated>:1
26 0x00007ff73113c2a6 in fyne.io/fyne/v2/widget.(*BaseWidget).setFieldsAndRefresh
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/widget.go:153
27 0x00007ff73113c026 in fyne.io/fyne/v2/widget.(*BaseWidget).Show
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/widget/widget.go:109
28 0x00007ff73116c8ae in fyne.io/fyne/v2/container.(*Split).Show
at <autogenerated>:1
29 0x00007ff7311672e7 in fyne.io/fyne/v2/container.(*baseTabsRenderer).layout
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/tabs.go:360
30 0x00007ff731160425 in fyne.io/fyne/v2/container.(*docTabsRenderer).Layout
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/container/doctabs.go:247
31 0x00007ff7312b99aa in fyne.io/fyne/v2/internal/driver/common.(*Canvas).updateLayout
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:602
32 0x00007ff7312b6328 in fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:132
33 0x00007ff7312b8bb7 in fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:514
34 0x00007ff73115434d in fyne.io/fyne/v2/internal/driver.walkObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/util.go:197
35 0x00007ff731153bc5 in fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/util.go:134
36 0x00007ff7312b8a0b in fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:520
37 0x00007ff7312b81fb in fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:432
38 0x00007ff7312b5db6 in fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/common/canvas.go:137
39 0x00007ff7312e9525 in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/glfw/loop.go:199
40 0x00007ff7312f63b9 in fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/glfw/window.go:904
41 0x00007ff7312e94b2 in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/glfw/loop.go:198
42 0x00007ff7312e8b3b in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/glfw/loop.go:106
43 0x00007ff7312e994f in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.3.6-0.20230618081107-a984816deecd/internal/driver/glfw/loop.go:254
The same line is involved in the crash (see screenshot), but the actual crash happens elsewhere (in RWMutex)
This bug stills the same in develop 05/08/2023.
When looking at the code of Accordion, I noticed something:
MinSize calls CreateRenderer and not updateObjects. It is updateObjects that kind of "syncs" Headers slice with Items slice. Could this be the cause of the crash?
hi, could https://github.com/fyne-io/fyne/issues/4009 be a similar bug?
Perhaps yes, there definitly something not working well in accordion and tabs. The crash stills in v2.3.6-0.20230812072749-e63d4e8030ef
I don't know the cause of this crash, but I stumbled onto the reason for the sync: RUnlock of unlocked RWMutex
. I was messing around with TextGrid (misusing it, really) and caused a panic due to an out-of-bounds index in widget.textGridRenderer.Layout()
.
This is probably my fault, not a bug. I'm not complaining about it.
However what happens if you panic there is as the stack starts to unwind, you pass through the call to renderer.Layout()
in common.Contour.updateLayout()
, leaving the common.Canvas
object's mutex unlocked. After that you unwind through common.Contour.EnsureMinSize()
which has a deferred call to common.Canvas.RUnlock()
, causing a second panic, and masking the original panic in the stack trace.
There's a lot of that going on in common.Canvas
: the mutex unlocking just long enough to do something that acquires a new lock, then re-lock it. If there's a panic in the middle of that procedure you run into issues with double-unlocking.
It might be better to wrap these unlock/relock code sections in a closure
c.RUnlock()
renderer.Layout(cont.Size())
c.RLock()
Becomes this
func() {
c.RUnlock()
defer c.RLock()
renderer.Layout(cont.Size())
}()
... which guarantees a good unwind.
Adopting that style would be a lot more code, and harder to read IMHO. If you try to figure out all the places that it could panic and adjust accordingly you're going to be fighting a losing battle. Considering our aim is that Fyne should never panic during app runtime it seems like wasted effort...
The crash stills in v2.4.1-0.20231002192343-df6e0297c26d It's been a loong time I did not encounter it, totally forgot it! I think I will change the Accordion for a list widget... util the crash is resolved
"sync: RUnlock of unlocked RWMutex"
Stack:
1 0x00007ff6b4b5b25e in sync.fatal
at C:/Users/Matwachich/sdk/go1.20.7/src/runtime/panic.go:1031
2 0x00007ff6b4b7543d in sync.(*RWMutex).rUnlockSlow
at C:/Users/Matwachich/sdk/go1.20.7/src/sync/rwmutex.go:129
3 0x00007ff6b4b753a7 in sync.(*RWMutex).RUnlock
at C:/Users/Matwachich/sdk/go1.20.7/src/sync/rwmutex.go:119
4 0x00007ff6b58163eb in fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func2
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/common/canvas.go:95
7 0x00007ff6b554ec4f in fyne.io/fyne/v2/widget.(*accordionRenderer).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/widget/accordion.go:175
8 0x00007ff6b55a1182 in fyne.io/fyne/v2/widget.(*BaseWidget).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/widget/widget.go:92
9 0x00007ff6b554deb6 in fyne.io/fyne/v2/widget.(*Accordion).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/widget/accordion.go:65
10 0x00007ff6b520ee2b in fyne.io/fyne/v2/internal/widget.(*Scroll).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/widget/scroller.go:426
11 0x00007ff6b5211b2c in fyne.io/fyne/v2/internal/widget.(*SimpleRenderer).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/widget/simple_renderer.go:46
12 0x00007ff6b55a1182 in fyne.io/fyne/v2/widget.(*BaseWidget).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/widget/widget.go:92
13 0x00007ff6b5a03ac5 in main.(*wPatientSummary).MinSize
at <autogenerated>:1
14 0x00007ff6b55cc7e4 in fyne.io/fyne/v2/container.(*baseTabsRenderer).minSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/container/tabs.go:390
15 0x00007ff6b55c2a9a in fyne.io/fyne/v2/container.(*appTabsRenderer).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/container/apptabs.go:307
16 0x00007ff6b55a1182 in fyne.io/fyne/v2/widget.(*BaseWidget).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/widget/widget.go:92
17 0x00007ff6b55c1df6 in fyne.io/fyne/v2/container.(*AppTabs).MinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/container/apptabs.go:142
18 0x00007ff6b5816002 in fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/common/canvas.go:119
19 0x00007ff6b5818bd7 in fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/common/canvas.go:520
20 0x00007ff6b55b8e4d in fyne.io/fyne/v2/internal/driver.walkObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:199
21 0x00007ff6b55b90cb in fyne.io/fyne/v2/internal/driver.walkObjectTree.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:178
22 0x00007ff6b55b8ddd in fyne.io/fyne/v2/internal/driver.walkObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:192
23 0x00007ff6b55b90cb in fyne.io/fyne/v2/internal/driver.walkObjectTree.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:178
24 0x00007ff6b55b8ddd in fyne.io/fyne/v2/internal/driver.walkObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:192
25 0x00007ff6b55b90cb in fyne.io/fyne/v2/internal/driver.walkObjectTree.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:178
26 0x00007ff6b55b8ddd in fyne.io/fyne/v2/internal/driver.walkObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:192
27 0x00007ff6b55b90cb in fyne.io/fyne/v2/internal/driver.walkObjectTree.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:178
28 0x00007ff6b55b8ddd in fyne.io/fyne/v2/internal/driver.walkObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:192
29 0x00007ff6b55b8685 in fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/util.go:134
30 0x00007ff6b5818a2b in fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/common/canvas.go:526
31 0x00007ff6b581821b in fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/common/canvas.go:438
32 0x00007ff6b5815c76 in fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/common/canvas.go:143
33 0x00007ff6b584935b in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/glfw/loop.go:192
34 0x00007ff6b5856539 in fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/glfw/window.go:924
35 0x00007ff6b58492f2 in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/glfw/loop.go:191
36 0x00007ff6b584881b in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/glfw/loop.go:88
37 0x00007ff6b584974f in fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1
at C:/Users/Matwachich/go/pkg/mod/fyne.io/fyne/v2@v2.4.1-0.20231002192343-df6e0297c26d/internal/driver/glfw/loop.go:245
Adopting that style would be a lot more code, and harder to read IMHO. If you try to figure out all the places that it could panic and adjust accordingly you're going to be fighting a losing battle. Considering our aim is that Fyne should never panic during app runtime it seems like wasted effort...
I'm not sure this is a good approach for an important project like a gui library.
one of go's proverbs is "don't panic": https://go-proverbs.github.io which I think is a good thing.
Hello, I'm not using Accordion, but I have the same error. It takes some hours to occur, but fyne always crashes.
fatal error: sync: RUnlock of unlocked RWMutex
fatal error: sync: RUnlock of unlocked RWMutex
goroutine 6 [running, locked to thread]:
sync.fatal({0x7ff607b7ef1b?, 0xc0005d7700?})
C:/Program Files/Go/src/runtime/panic.go:1031 +0x1e
sync.(*RWMutex).rUnlockSlow(0xc0000c2cdc, 0x0?)
C:/Program Files/Go/src/sync/rwmutex.go:129 +0x39
sync.(*RWMutex).RUnlock(0x7ff6073eee06?)
C:/Program Files/Go/src/sync/rwmutex.go:119 +0x29
fyne.io/fyne/v2/canvas.(*baseObject).MinSize(0x3f8000003f800000?)
D:/Projects/Golang/weather-board-server/external/fyne/canvas/base.go:40 +0xca
fyne.io/fyne/v2/layout.(*maxLayout).MinSize(0x7ff60743ce01?, {0xc000d86160?, 0x2, 0x7ff607442d06?})
D:/Projects/Golang/weather-board-server/external/fyne/layout/maxlayout.go:36 +0xa4
fyne.io/fyne/v2.(*Container).MinSize(0xc00036ccf0?)
D:/Projects/Golang/weather-board-server/external/fyne/container.go:89 +0x5e
fyne.io/fyne/v2/layout.(*boxLayout).MinSize(0xc00036ccf0, {0xc000da6200?, 0x7, 0x7ff607442cd4?})
D:/Projects/Golang/weather-board-server/external/fyne/layout/boxlayout.go:141 +0x176
fyne.io/fyne/v2.(*Container).MinSize(0xc00036ccf1?)
D:/Projects/Golang/weather-board-server/external/fyne/container.go:89 +0x5e
fyne.io/fyne/v2/layout.(*boxLayout).MinSize(0xc00036ccf1, {0xc00037e4d0?, 0x7, 0x7ff6074449f1?})
D:/Projects/Golang/weather-board-server/external/fyne/layout/boxlayout.go:134 +0xea
fyne.io/fyne/v2.(*Container).MinSize(0x7ff607c7db80?)
D:/Projects/Golang/weather-board-server/external/fyne/container.go:89 +0x5e
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1(0xc0000b4100)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/common/canvas.go:79 +0xb8
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2({0x7ff607c7db80?, 0xc00006aaa0?}, {0xc00006aa00?, 0x7ff607c7db80?})
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/common/canvas.go:453 +0xa8
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff607c7db80, 0xc00006aaf0}, 0x0, {0x7ff607c7db80, 0xc00006a960}, {0x743cea2?, 0x7ff6?}, {0xda6200?, 0xc0?}, {0x7?, ...}, ...)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/util.go:197 +0x42d
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/util.go:176
fyne.io/fyne/v2/internal/driver.walkObjectTree({0x7ff607c7db80, 0xc00006a960}, 0x0, {0x0, 0x0}, {0x7?, 0x0?}, {0x5d7c08?, 0xc0?}, {0x76add46?, ...}, ...)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/util.go:190 +0x3ec
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0x7ff607c7db80?, 0xc00006a960?}, 0x7ff607c7b058?, 0xc0000c2000?)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/util.go:134 +0x4c
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0x7ff607699f44?, 0xc000d860e0, 0x0, 0xc0005d7d78)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/common/canvas.go:459 +0x165
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc00012b200, 0xc0005d7dc8?, 0x7ff6076880e5?)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/common/canvas.go:371 +0x3c
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize(0xc00012b200)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/common/canvas.go:102 +0xe5
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/glfw/loop.go:199 +0x35
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc0000ae000?, 0xc0005d7e30)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/glfw/window.go:907 +0x4f
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0xc0005d7e98?, 0xc0005ce820?)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/glfw/loop.go:198 +0x4a
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame(0xc0005d7f90?)
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/glfw/loop.go:106 +0x1ac
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/glfw/loop.go:254 +0x1a6
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread
D:/Projects/Golang/weather-board-server/external/fyne/internal/driver/glfw/loop.go:230 +0xea
...
goroutine 11372 [running]:
sync.fatal({0x7ff607b7ef1b?, 0xffffffffffffffff?})
C:/Program Files/Go/src/runtime/panic.go:1031 +0x1e
sync.(*RWMutex).rUnlockSlow(0xc0000c2cdc, 0x7140a36?)
C:/Program Files/Go/src/sync/rwmutex.go:129 +0x39
sync.(*RWMutex).RUnlock(0xc000d2bd00?)
C:/Program Files/Go/src/sync/rwmutex.go:119 +0x29
fyne.io/fyne/v2/canvas.(*baseObject).Size(0x0?)
D:/Projects/Golang/weather-board-server/external/fyne/canvas/base.go:91 +0xb0
fyne.io/fyne/v2/canvas.(*Rectangle).Resize(0xc0000c2cc0, {0xd2bd20?, 0xc0?})
D:/Projects/Golang/weather-board-server/external/fyne/canvas/rectangle.go:29 +0x30
fyne.io/fyne/v2/layout.(*maxLayout).Layout(0x31313a3931203630?, {0xc000d86160?, 0x2, 0x0?}, {0x0?, 0x10000?})
D:/Projects/Golang/weather-board-server/external/fyne/layout/maxlayout.go:22 +0x53
fyne.io/fyne/v2.(*Container).layout(...)
D:/Projects/Golang/weather-board-server/external/fyne/container.go:193
fyne.io/fyne/v2.(*Container).Refresh(0xc000b625a0)
D:/Projects/Golang/weather-board-server/external/fyne/container.go:112 +0x48
weather-board-server/internal/ui.(*ColoredMaxLabel).SetBackgroundColor(0xc000b5d740, {0x7ff607c77f00, 0xc0006fe978})
D:/Projects/Golang/weather-board-server/internal/ui/custom-label.go:69 +0x125
weather-board-server/internal/ui.(*WeatherBoardControlWindow).Write(0xc000414000, {0xc000660000, 0x2b, 0x2000})
D:/Projects/Golang/weather-board-server/internal/ui/mainwindow.go:95 +0x2e7
weather-board-server/pkg/connection.WriteDecorator.func1({0xc000660000?, 0xc0000a4180?, 0x0?})
D:/Projects/Golang/weather-board-server/pkg/connection/connection-manager.go:107 +0x26
created by weather-board-server/pkg/connection.(*ConnectionManager).ReadToWrites
D:/Projects/Golang/weather-board-server/pkg/connection/connection-manager.go:83 +0x265
I'm observing similar double-unlock crashes when (I think) a Table is being resized/refreshed while its cells are being updated.
I'm observing similar double-unlock crashes when (I think) a Table is being resized/refreshed while its cells are being updated.
It seems unlikely that this is the same issue, probably a good idea to open a new issue
Checklist
Describe the bug
Accordion may crash, I thought initially that this is related to having many items, but when trying to reproduce with simple code it seems it is not.
It is related to slow items appending.
How to reproduce
Run the code Click the button, this will start populating the accordion, with a small timer of 10 milliseconds between items
Screenshots
No response
Example code
Fyne version
2.3.5
Go compiler version
1.20.4
Operating system and version
Windows 10
Additional Information
Stack trace