Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Application crash when fast clicking the folders inside the file dialog #4260

Closed
2 tasks done
alexballas opened this issue Sep 17, 2023 · 14 comments
Closed
2 tasks done
Labels
blocker Items that would block a forthcoming release bug Something isn't working

Comments

@alexballas
Copy link
Contributor

alexballas commented Sep 17, 2023

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

When I fast click the folders inside the file selection widget, the app crashes

How to reproduce

  • Open Fyne Demo
  • Select Dialogs
  • Select any of the file dialogs (file Open, Folder Open)
  • Start clicking very fast the (Parent) Icon / area.
  • Tha app crashes
alex@cosmo:/dev/shm/fyne/cmd/fyne_demo$ go run main.go 
2023/09/18 11:02:49 Lifecycle: Started
2023/09/18 11:02:49 Lifecycle: Entered Foreground
2023/09/18 11:03:02 Cancelled
2023/09/18 11:03:12 Cancelled
fatal error: sync: RUnlock of unlocked RWMutex

goroutine 16 [running, locked to thread]:
sync.fatal({0xc83529?, 0xc00024f500?})
	/usr/local/go/src/runtime/panic.go:1061 +0x18
sync.(*RWMutex).rUnlockSlow(0xc0000ff8c0, 0x29b098?)
	/usr/local/go/src/sync/rwmutex.go:129 +0x39
sync.(*RWMutex).RUnlock(0xc00236f560?)
	/usr/local/go/src/sync/rwmutex.go:119 +0x25
panic({0xc14700?, 0xc0015041c8?})
	/usr/local/go/src/runtime/panic.go:914 +0x21f
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func3(0x438c32?, {0xdacbe0?, 0xc00024f490?})
	/dev/shm/fyne/dialog/file.go:489 +0x113
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem(0xc001e17d00, 0xc00024f500, 0x0, 0x60?)
	/dev/shm/fyne/widget/gridwrap.go:528 +0xc6
fyne.io/fyne/v2/widget.(*gridWrapLayout).updateGrid(0xc001e17d00, 0x1)
	/dev/shm/fyne/widget/gridwrap.go:615 +0x5ff
fyne.io/fyne/v2/widget.(*gridWrapLayout).Layout(0x8?, {0xc0023d9410?, 0x6d81cd?, 0xc0039ba8c8?}, {0x42a00000?, 0x42b80000?})
	/dev/shm/fyne/widget/gridwrap.go:480 +0x18
fyne.io/fyne/v2.(*Container).layout(...)
	/dev/shm/fyne/container.go:195
fyne.io/fyne/v2.(*Container).Resize(0xc260c0?, {0xda3330?, 0x0?})
	/dev/shm/fyne/container.go:168 +0x57
fyne.io/fyne/v2/internal/widget.(*scrollContainerRenderer).Layout(0xc001bb8cc0, {0x43a80000, 0x43500000})
	/dev/shm/fyne/internal/widget/scroller.go:276 +0x8a
fyne.io/fyne/v2/internal/widget.(*Base).Resize(0xc00023f490, {0xda6670?, 0x0?})
	/dev/shm/fyne/internal/widget/base.go:59 +0x13b
fyne.io/fyne/v2/internal/widget.(*Scroll).Resize(0xc00023f490, {0xda6670?, 0x0?})
	/dev/shm/fyne/internal/widget/scroller.go:452 +0x36
fyne.io/fyne/v2/widget.(*gridWrapRenderer).Layout(0xdad648?, {0x23d2e70?, 0xc0?})
	/dev/shm/fyne/widget/gridwrap.go:333 +0x17
fyne.io/fyne/v2/widget.(*BaseWidget).Resize(0xc0023d2e70, {0xc68a57?, 0x0?})
	/dev/shm/fyne/widget/widget.go:61 +0x134
fyne.io/fyne/v2/widget.(*GridWrap).Resize(0xc0023d2e70, {0x0?, 0x0?})
	/dev/shm/fyne/widget/gridwrap.go:148 +0x1e
fyne.io/fyne/v2/layout.(*paddedLayout).Layout(0x8?, {0xc001265680, 0x1, 0xc0039ba8c0?}, {0x42b00000?, 0x42c80000?})
	/dev/shm/fyne/layout/paddedlayout.go:21 +0x8d
fyne.io/fyne/v2.(*Container).layout(...)
	/dev/shm/fyne/container.go:195
fyne.io/fyne/v2.(*Container).Resize(0xc260c0?, {0xda3330?, 0x0?})
	/dev/shm/fyne/container.go:168 +0x57
fyne.io/fyne/v2/internal/widget.(*scrollContainerRenderer).Layout(0xc001bb8a20, {0x43ac0000, 0x43580000})
	/dev/shm/fyne/internal/widget/scroller.go:276 +0x8a
fyne.io/fyne/v2/internal/widget.(*Base).Resize(0xc00023f2d0, {0x42000000?, 0x42000000?})
	/dev/shm/fyne/internal/widget/base.go:59 +0x13b
fyne.io/fyne/v2/internal/widget.(*Scroll).Resize(0xc00023f2d0, {0x269cb58?, 0xc0?})
	/dev/shm/fyne/internal/widget/scroller.go:452 +0x36
fyne.io/fyne/v2/layout.(*borderLayout).Layout(0xc001e17f00, {0xc001e17ec0, 0x3, 0xc0023d9798?}, {0x23d9788?, 0xc0?})
	/dev/shm/fyne/layout/borderlayout.go:61 +0x4f3
fyne.io/fyne/v2/internal/driver/common.(*Canvas).updateLayout(0xc0000ff8c0, {0xdab078?, 0xc002464820})
	/dev/shm/fyne/internal/driver/common/canvas.go:603 +0xd1
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1(0xc002f6e4c0, {0x4365a200?, 0x42d00000?})
	/dev/shm/fyne/internal/driver/common/canvas.go:110 +0xfc
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2({0xdab2b8?, 0xc00023f340?}, {0x2464800?, 0xc0?}, {0xdab078?, 0xc002464820?})
	/dev/shm/fyne/internal/driver/common/canvas.go:520 +0xda
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdab078, 0xc002464820}, 0x0, {0xdab198, 0xc00023f810}, {0x43e60000?, 0x44200000?}, {0x2639c20?, 0xc0?}, {0xdab378?, ...}, ...)
	/dev/shm/fyne/internal/driver/util.go:199 +0x46d
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/dev/shm/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdab198, 0xc00023f810}, 0x0, {0xdab078, 0xc0024649b0}, {0xc5a540?, 0x0?}, {0x2639c08?, 0xc0?}, {0xf8475800?, ...}, ...)
	/dev/shm/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/dev/shm/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdab078, 0xc0024649b0}, 0x0, {0xdac5e0, 0xc00264b780}, {0x23d9b60?, 0xc0?}, {0xa66425?, 0x0?}, {0xc65fb3?, ...}, ...)
	/dev/shm/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/dev/shm/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdac5e0, 0xc00264b780}, 0x0, {0x0, 0x0}, {0x23d9bf0?, 0xc0?}, {0xa79525?, 0x0?}, {0x23d9bd8?, ...}, ...)
	/dev/shm/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0xdac5e0?, 0xc00264b780?}, 0xc000340460?, 0xa79500?)
	/dev/shm/fyne/internal/driver/util.go:134 +0x46
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0xa602c2?, 0xc00236f560, 0x0, 0xc0023d9d70)
	/dev/shm/fyne/internal/driver/common/canvas.go:526 +0x15f
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc0000ff8c0, 0xc0023d9d68?, 0x42db05?)
	/dev/shm/fyne/internal/driver/common/canvas.go:447 +0xd9
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize(0xc0000ff8c0)
	/dev/shm/fyne/internal/driver/common/canvas.go:143 +0x150
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
	/dev/shm/fyne/internal/driver/glfw/loop.go:189 +0x2b
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc000341d50?, 0xc0023d9e30)
	/dev/shm/fyne/internal/driver/glfw/window.go:922 +0x43
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0x4?, 0x0?)
	/dev/shm/fyne/internal/driver/glfw/loop.go:188 +0x45
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame(0xc0023d9f90?)
	/dev/shm/fyne/internal/driver/glfw/loop.go:95 +0x1a5
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
	/dev/shm/fyne/internal/driver/glfw/loop.go:244 +0x1d5
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread in goroutine 1
	/dev/shm/fyne/internal/driver/glfw/loop.go:220 +0xbb

goroutine 1 [select, locked to thread]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc000341d50)
	/dev/shm/fyne/internal/driver/glfw/loop.go:115 +0x15c
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc000341d50)
	/dev/shm/fyne/internal/driver/glfw/driver.go:168 +0x6f
fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0003ce3c0)
	/dev/shm/fyne/internal/driver/glfw/window.go:231 +0x26
main.main()
	/dev/shm/fyne/cmd/fyne_demo/main.go:68 +0x4cd

goroutine 6 [chan receive]:
fyne.io/fyne/v2/test.NewApp.func1()
	/dev/shm/fyne/test/testapp.go:166 +0x45
created by fyne.io/fyne/v2/test.NewApp in goroutine 1
	/dev/shm/fyne/test/testapp.go:164 +0x325

goroutine 7 [IO wait]:
internal/poll.runtime_pollWait(0x7f95146a9b30, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc00008a4e0?, 0xc00040fed0?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00008a4e0, {0xc00040fed0, 0x10000, 0x10000})
	/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000062140, {0xc00040fed0?, 0x0?, 0x0?})
	/usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000094af0)
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 8 [chan receive]:
fyne.io/fyne/v2/app.watchFile.func1()
	/dev/shm/fyne/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
	/dev/shm/fyne/app/settings_desktop.go:42 +0xf8

goroutine 10 [chan receive]:
github.com/godbus/dbus/v5.newConn.func1()
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:303 +0x2c
created by github.com/godbus/dbus/v5.newConn in goroutine 1
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:302 +0x4f6

goroutine 18 [IO wait]:
internal/poll.runtime_pollWait(0x7f95146a9a38, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc0000c3880?, 0xc0012803d0?, 0x0)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadMsg(0xc0000c3880, {0xc0012803d0, 0x10, 0x10}, {0xc0003b0620, 0x1000, 0x1000}, 0x14?)
	/usr/local/go/src/internal/poll/fd_unix.go:301 +0x38a
net.(*netFD).readMsg(0xc0000c3880, {0xc0012803d0?, 0xc001380600?, 0x1490498?}, {0xc0003b0620?, 0xc001280170?, 0xc001280172?}, 0xc00128016c?)
	/usr/local/go/src/net/fd_posix.go:78 +0x31
net.(*UnixConn).readMsg(0xc000062158, {0xc0012803d0?, 0xc001380600?, 0xda12e0?}, {0xc0003b0620?, 0xdaa470?, 0x1bcbe60?})
	/usr/local/go/src/net/unixsock_posix.go:115 +0x45
net.(*UnixConn).ReadMsgUnix(0xc000062158, {0xc0012803d0?, 0x0?, 0x0?}, {0xc0003b0620?, 0x436845?, 0xc0012a4510?})
	/usr/local/go/src/net/unixsock.go:143 +0x36
github.com/godbus/dbus/v5.(*oobReader).Read(0xc0003b0600, {0xc0012803d0?, 0xc0001a1e00?, 0x436bc5?})
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:21 +0x3c
io.ReadAtLeast({0xda17e0, 0xc0003b0600}, {0xc0012803d0, 0x10, 0x10}, 0x10)
	/usr/local/go/src/io/io.go:335 +0x90
io.ReadFull(...)
	/usr/local/go/src/io/io.go:354
github.com/godbus/dbus/v5.(*unixTransport).ReadMessage(0xc0000133e0)
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:91 +0xfe
github.com/godbus/dbus/v5.(*Conn).inWorker(0xc0001fd4a0)
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:390 +0x43
created by github.com/godbus/dbus/v5.(*Conn).Auth in goroutine 1
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/auth.go:118 +0x945

goroutine 67 [chan receive]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).catchTerm(0x0?)
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:172 +0x85
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run in goroutine 1
	/dev/shm/fyne/internal/driver/glfw/driver.go:167 +0x65

goroutine 12 [IO wait]:
internal/poll.runtime_pollWait(0x7f95146a9940, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc00008a6c0?, 0xc00050fed0?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00008a6c0, {0xc00050fed0, 0x10000, 0x10000})
	/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000062168, {0xc00050fed0?, 0x0?, 0x0?})
	/usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000094cd0)
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 13 [chan receive]:
fyne.io/fyne/v2/app.watchFile.func1()
	/dev/shm/fyne/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
	/dev/shm/fyne/app/settings_desktop.go:42 +0xf8

goroutine 14 [chan receive]:
fyne.io/fyne/v2/app.watchFreedekstopThemeChange()
	/dev/shm/fyne/app/app_xdg.go:194 +0x1c5
created by fyne.io/fyne/v2/app.watchTheme in goroutine 1
	/dev/shm/fyne/app/app_xdg.go:166 +0x1a

goroutine 34 [select]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc0003971d0)
	/dev/shm/fyne/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
	/dev/shm/fyne/internal/async/chan_func.go:22 +0xe5

goroutine 35 [chan receive]:
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
	/dev/shm/fyne/internal/driver/common/window.go:34 +0x47
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
	/dev/shm/fyne/internal/driver/glfw/window.go:959 +0x139

goroutine 36 [chan receive]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 1
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 37 [select]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc0004869c0)
	/dev/shm/fyne/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
	/dev/shm/fyne/internal/async/chan_func.go:22 +0xe5

goroutine 38 [runnable]:
syscall.Syscall(0x48b2f9?, 0x476aa9?, 0x80?, 0xbcc8c0?)
	/usr/local/go/src/syscall/syscall_linux.go:69 +0x25
syscall.Close(0x4ae965?)
	/usr/local/go/src/syscall/zsyscall_linux_amd64.go:320 +0x25
internal/poll.(*SysFile).destroy(...)
	/usr/local/go/src/internal/poll/fd_unixjs.go:24
internal/poll.(*FD).destroy(0xc002650240)
	/usr/local/go/src/internal/poll/fd_unix.go:81 +0x51
internal/poll.(*FD).decref(0xc000390690?)
	/usr/local/go/src/internal/poll/fd_mutex.go:213 +0x53
internal/poll.(*FD).Close(0xc002650240)
	/usr/local/go/src/internal/poll/fd_unix.go:104 +0x45
os.(*file).close(0xc002650240)
	/usr/local/go/src/os/file_unix.go:315 +0x98
os.(*File).Close(0xc002370000?)
	/usr/local/go/src/os/file_posix.go:23 +0x1b
os.ReadDir({0xd9e01c?, 0xc0031ce000?})
	/usr/local/go/src/os/dir.go:124 +0x18d
fyne.io/fyne/v2/internal/repository.(*FileRepository).List(0x7f9514672e60?, {0x7f9514672e60?, 0xc001265d00?})
	/dev/shm/fyne/internal/repository/file.go:218 +0x45
fyne.io/fyne/v2/storage.List({0x7f9514672e60, 0xc001265d00})
	/dev/shm/fyne/storage/uri.go:479 +0x4f
fyne.io/fyne/v2/storage.(*legacyListable).List(0x9b4289?)
	/dev/shm/fyne/storage/file.go:47 +0x1d
fyne.io/fyne/v2/dialog.(*fileDialog).refreshDir(0xc001bd3880, {0xdaeb20, 0xc0014f8a80})
	/dev/shm/fyne/dialog/file.go:339 +0x76
fyne.io/fyne/v2/dialog.(*fileDialog).setLocation(0xc001bd3880, {0x7f9514672e60, 0xc001265d00})
	/dev/shm/fyne/dialog/file.go:452 +0x716
fyne.io/fyne/v2/dialog.(*fileDialog).makeUI.func7(0x9f7666?)
	/dev/shm/fyne/dialog/file.go:225 +0x39
fyne.io/fyne/v2/widget.(*List).Select.func1()
	/dev/shm/fyne/widget/list.go:212 +0x57
fyne.io/fyne/v2/widget.(*List).Select(0xc000ccd5c0, 0x1)
	/dev/shm/fyne/widget/list.go:217 +0x184
fyne.io/fyne/v2/dialog.(*fileDialog).setLocation(0xc001bd3880, {0xdab1f8, 0xc0023b0ff0})
	/dev/shm/fyne/dialog/file.go:394 +0x1c6
fyne.io/fyne/v2/dialog.(*fileDialog).setSelected(0xc001bd3880, {0xdab1f8, 0xc0023b0ff0}, 0x0)
	/dev/shm/fyne/dialog/file.go:460 +0x170
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func4(0x9f7666?)
	/dev/shm/fyne/dialog/file.go:496 +0x45
fyne.io/fyne/v2/widget.(*GridWrap).Select.func1()
	/dev/shm/fyne/widget/gridwrap.go:172 +0x57
fyne.io/fyne/v2/widget.(*GridWrap).Select(0xc0023d2e70, 0x0)
	/dev/shm/fyne/widget/gridwrap.go:177 +0x184
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem.func1()
	/dev/shm/fyne/widget/gridwrap.go:538 +0x96
fyne.io/fyne/v2/widget.(*gridWrapItem).Tapped(0xc00024f500, 0xc001aa4901)
	/dev/shm/fyne/widget/gridwrap.go:421 +0x33
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseClickedHandleTapDoubleTap.func1()
	/dev/shm/fyne/internal/driver/glfw/window.go:649 +0x22
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
	/dev/shm/fyne/internal/driver/common/window.go:35 +0x38
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
	/dev/shm/fyne/internal/driver/glfw/window.go:959 +0x139

goroutine 69 [syscall]:
os/signal.signal_recv()
	/usr/local/go/src/runtime/sigqueue.go:152 +0x29
os/signal.loop()
	/usr/local/go/src/os/signal/signal_unix.go:23 +0x13
created by os/signal.Notify.func1.1 in goroutine 67
	/usr/local/go/src/os/signal/signal.go:151 +0x1f

goroutine 52 [chan receive]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 15
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 53 [chan receive]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 15
	/dev/shm/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 40 [select]:
fyne.io/systray.stayRegistered()
	/home/alex/go/pkg/mod/fyne.io/[email protected]/systray_unix.go:266 +0x2af
created by fyne.io/systray.nativeStart in goroutine 1
	/home/alex/go/pkg/mod/fyne.io/[email protected]/systray_unix.go:230 +0xbbc
exit status 2

Screenshots

2023-09-17_20-37-18.mp4

Example code

No code. Replicated with Fyne Demo

Fyne version

v2.4.0

Go compiler version

1.21.1

Operating system and version

Ubuntu 18.04

Additional Information

No response

@alexballas alexballas added the unverified A bug that has been reported but not verified label Sep 17, 2023
@andydotxyz
Copy link
Member

Thanks for this

@andydotxyz andydotxyz added bug Something isn't working blocker Items that would block a forthcoming release and removed unverified A bug that has been reported but not verified labels Sep 19, 2023
@andydotxyz andydotxyz added this to the D fixes (v2.4.x) milestone Sep 19, 2023
JordanGoulder pushed a commit to JordanGoulder/fyne that referenced this issue Sep 24, 2023
Jacalz pushed a commit that referenced this issue Sep 28, 2023
This change adds a RWMutex to synchronize access to the fileDialog.data file list.
The refreshDir function clears and rebuilds fileDialog.data, meanwhile, several other functions are indexing into it.
This allowed for scenarios where fileDialog.data was either nil or smaller than expected when indexing into it.

Fixes #4260
@alexballas
Copy link
Contributor Author

alexballas commented Oct 4, 2023

I still got a crash in the file dialog in my app while I was doing some legit file searching

fatal error: sync: RUnlock of unlocked RWMutex

goroutine 25 [running, locked to thread]:
sync.fatal({0xce79bf?, 0xcb81c0?})
        /usr/local/go/src/runtime/panic.go:1061 +0x18
sync.(*RWMutex).rUnlockSlow(0xc0002330e0, 0x48b519?)
        /usr/local/go/src/sync/rwmutex.go:129 +0x39
sync.(*RWMutex).RUnlock(0xc0015e8a00?)
        /usr/local/go/src/sync/rwmutex.go:119 +0x25
panic({0xc72820?, 0xc00072dce0?})
        /usr/local/go/src/runtime/panic.go:914 +0x21f
fyne.io/fyne/v2/widget.ellipsisPriorBound.func1(0x8, 0x10)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:862 +0xbb
fyne.io/fyne/v2/widget.binarySearch(0xc0038a2890, 0x8, 0x10)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:826 +0x34
fyne.io/fyne/v2/widget.ellipsisPriorBound({0xc002b47490, 0x2, 0x2}, 0x8?, 0x42800000, 0xc0038a2ed8)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:865 +0x1a7
fyne.io/fyne/v2/widget.lineBounds(0xc0015a0b40, 0x2, 0x2, 0x42800000, {0xc0?, 0x495acc?}, 0xc0038a2ed8)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:934 +0x19bb
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds.func1({0xc0014bc630?, 0x1, 0x0?})
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:410 +0x20e
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds(0xc000ebe780)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:457 +0x1b8
fyne.io/fyne/v2/widget.(*RichText).Refresh(0xc000ebe780)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:100 +0x2b
fyne.io/fyne/v2/widget.(*Label).Refresh(0xc00148ed00)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/label.go:100 +0x2d
fyne.io/fyne/v2/dialog.(*fileItemRenderer).Layout(0xc001598980, {0x1a2f50?, 0xc0?})
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/dialog/fileitem.go:105 +0x19b
fyne.io/fyne/v2/internal/driver/common.(*Canvas).updateLayout(0xc0002330e0, {0xe19b58?, 0xc0001a2f50})
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/canvas.go:609 +0x188
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1(0xc000f22080, {0x432b4400?, 0x43aa2800?})
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/canvas.go:110 +0xfc
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2({0xe19138?, 0xc00148ed00?}, {0x1a2f00?, 0xc0?}, {0xe19b58?, 0xc0001a2f50?})
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/canvas.go:520 +0xda
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe19b58, 0xc0001a2f50}, 0x0, {0xe19fd8, 0xc0001a2fc0}, {0x1?, 0x0?}, {0x0?, 0x0?}, {0x3c0b6b0?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:199 +0x46d
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe19fd8, 0xc0001a2fc0}, 0x0, {0xe190d8, 0xc0013e0c80}, {0xcb81c0?, 0x0?}, {0x2173338?, 0xc0?}, {0xf8475800?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe190d8, 0xc0013e0c80}, 0x0, {0xe19978, 0xc00036a8c0}, {0xcb81c0?, 0x0?}, {0x2173320?, 0xc0?}, {0xf8475800?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe19978, 0xc00036a8c0}, 0x0, {0xe1a038, 0xc001b22000}, {0x40a850?, 0xc0?}, {0x38a3688?, 0xc0?}, {0x7c5518?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe1a038, 0xc001b22000}, 0x0, {0xe190d8, 0xc0013e0aa0}, {0xcb81c0?, 0x0?}, {0x2173308?, 0xc0?}, {0xf8475800?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe190d8, 0xc0013e0aa0}, 0x0, {0xe19978, 0xc00036a1c0}, {0x43d90000?, 0x4431c000?}, {0x2172f30?, 0xc0?}, {0xe19918?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe19978, 0xc00036a1c0}, 0x0, {0xe190d8, 0xc0013e12c0}, {0xcb81c0?, 0x0?}, {0x162a870?, 0xc0?}, {0xf8475800?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe190d8, 0xc0013e12c0}, 0x0, {0xe198b8, 0xc00036ac40}, {0x43d90000?, 0x4431c000?}, {0x162a720?, 0xc0?}, {0xe19618?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe198b8, 0xc00036ac40}, 0x0, {0xe190d8, 0xc0013e14f0}, {0xcb81c0?, 0x0?}, {0x162a708?, 0xc0?}, {0xf8475800?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe190d8, 0xc0013e14f0}, 0x0, {0xe19df8, 0xc001a94980}, {0xcca436?, 0x0?}, {0x0?, 0x0?}, {0x38a3b70?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xe19df8, 0xc001a94980}, 0x0, {0x0, 0x0}, {0x38a3bf0?, 0xc0?}, {0xae7425?, 0x0?}, {0x23811f8?, ...}, ...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0xe19df8?, 0xc001a94980?}, 0xc000036220?, 0xcca436?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/util.go:134 +0x46
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0xaced82?, 0xc0015e8a00, 0x0, 0xc0038a3d70)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/canvas.go:526 +0x15f
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc0002330e0, 0xc0038a3d68?, 0x42db05?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/canvas.go:447 +0xd9
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize(0xc0002330e0)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/canvas.go:143 +0x150
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:192 +0x2b
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc000164000?, 0xc0038a3e30)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:924 +0x43
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0x4?, 0x0?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:191 +0x45
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame(0xc0038a3f90?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:88 +0x1a5
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:245 +0x1c5
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:223 +0xbb

goroutine 1 [sync.RWMutex.Lock, locked to thread]:
sync.runtime_SemacquireRWMutex(0x4258a00042a00000?, 0x20?, 0xc000ebe7a8?)
        /usr/local/go/src/runtime/sema.go:87 +0x25
sync.(*RWMutex).Lock(0xc0014bc630?)
        /usr/local/go/src/sync/rwmutex.go:152 +0x6a
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds(0xc000ebe780)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:460 +0x1f2
fyne.io/fyne/v2/widget.(*RichText).Refresh(0xc000ebe780)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/richtext.go:100 +0x2b
fyne.io/fyne/v2/widget.(*Label).Refresh(0xc00148ed00)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/label.go:100 +0x2d
fyne.io/fyne/v2/widget.(*Label).SetText(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/label.go:118
fyne.io/fyne/v2/dialog.(*fileItemRenderer).Refresh(0xc001598980)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/dialog/fileitem.go:120 +0x6c
fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc001fd8501?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/widget.go:140 +0x26
fyne.io/fyne/v2/dialog.(*fileDialogItem).setLocation(0xc0001a2f50, {0x7f43c924a580?, 0xc003c0b8e0?}, 0x80?, 0x0)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/dialog/fileitem.go:55 +0xe5
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func3(0xc, {0xe19b58?, 0xc0001a2f50})
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/dialog/file.go:536 +0xed
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem(0xc0020c7240, 0xc0001a2fc0, 0xc, 0x0?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/gridwrap.go:528 +0xc6
fyne.io/fyne/v2/widget.(*gridWrapLayout).updateGrid(0xc0020c7240, 0x0)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/gridwrap.go:618 +0x5ff
fyne.io/fyne/v2/widget.(*gridWrapLayout).offsetUpdated(...)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/widget/gridwrap.go:508
fyne.io/fyne/v2/internal/widget.(*Scroll).updateOffset(0xc00036a8c0, 0x0, 0xc1c80000)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/widget/scroller.go:488 +0x1ee
fyne.io/fyne/v2/internal/widget.(*Scroll).scrollBy(0xc00036a8c0, 0x0, 0xc1c80000)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/widget/scroller.go:469 +0xc5
fyne.io/fyne/v2/internal/widget.(*Scroll).Scrolled(0xa9150f?, 0xe19978?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/widget/scroller.go:462 +0x1d
fyne.io/fyne/v2/internal/driver/glfw.(*window).processMouseScrolled(0xc0004ea000, 0x0, 0xbff0000000000000)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:701 +0x203
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseScrolled(0xae1925?, 0xa94fc0?, 0x0?, 0xbff0000000000000?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window_desktop.go:396 +0x99
github.com/go-gl/glfw/v3.3/glfw.goScrollCB(0x1a?, 0x0, 0xbff0000000000000)
        /home/alex/go/pkg/mod/github.com/go-gl/glfw/v3.3/[email protected]/input.go:353 +0x3e
github.com/go-gl/glfw/v3.3/glfw._Cfunc_glfwPollEvents()
        _cgo_gotypes.go:1595 +0x3f
github.com/go-gl/glfw/v3.3/glfw.PollEvents()
        /home/alex/go/pkg/mod/github.com/go-gl/glfw/v3.3/[email protected]/window.go:964 +0xf
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).tryPollEvents(0xc0026f9b50?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop_desktop.go:34 +0x30
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc000607b98?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/loop.go:118 +0x197
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc000164000)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/driver.go:168 +0x6f
fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0004ea000)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:227 +0x26
github.com/alexballas/go2tv/internal/gui.Start({0xe15388?, 0xc0003aa4c0}, 0xc0004ea1e0)
        /home/alex/test/go2tv/internal/gui/gui.go:126 +0x4fa
main.run()
        /home/alex/test/go2tv/cmd/go2tv/go2tv.go:110 +0xd5a
main.main()
        /home/alex/test/go2tv/cmd/go2tv/go2tv.go:51 +0x13

goroutine 35 [syscall]:
os/signal.signal_recv()
        /usr/local/go/src/runtime/sigqueue.go:152 +0x29
os/signal.loop()
        /usr/local/go/src/os/signal/signal_unix.go:23 +0x13
created by os/signal.Notify.func1.1 in goroutine 1
        /usr/local/go/src/os/signal/signal.go:151 +0x1f

goroutine 6 [select]:
os/signal.NotifyContext.func1()
        /usr/local/go/src/os/signal/signal.go:288 +0x66
created by os/signal.NotifyContext in goroutine 1
        /usr/local/go/src/os/signal/signal.go:287 +0x165

goroutine 7 [IO wait]:
internal/poll.runtime_pollWait(0x7f43e9117f60, 0x72)
        /usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc000130180?, 0xc00038ded0?, 0x1)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000130180, {0xc00038ded0, 0x10000, 0x10000})
        /usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
        /usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc0000b2008, {0xc00038ded0?, 0xe0bf50?, 0x1?})
        /usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0001e7770)
        /home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
        /home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 8 [chan receive]:
fyne.io/fyne/v2/app.watchFile.func1()
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:42 +0xf8

goroutine 10 [chan receive]:
github.com/godbus/dbus/v5.newConn.func1()
        /home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:303 +0x2c
created by github.com/godbus/dbus/v5.newConn in goroutine 1
        /home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:302 +0x4f6

goroutine 50 [IO wait]:
internal/poll.runtime_pollWait(0x7f43e9117e68, 0x72)
        /usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc000164100?, 0xc000472760?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadMsg(0xc000164100, {0xc000472760, 0x10, 0x10}, {0xc0001dd320, 0x1000, 0x1000}, 0xc00021bc04?)
        /usr/local/go/src/internal/poll/fd_unix.go:301 +0x38a
net.(*netFD).readMsg(0xc000164100, {0xc000472760?, 0xc00040a630?, 0x1523c98?}, {0xc0001dd320?, 0xc000472648?, 0xc00047264a?}, 0xc000472644?)
        /usr/local/go/src/net/fd_posix.go:78 +0x31
net.(*UnixConn).readMsg(0xc0000b2020, {0xc000472760?, 0xc00040a630?, 0x43f3eb?}, {0xc0001dd320?, 0x44af45?, 0xbb0400?})
        /usr/local/go/src/net/unixsock_posix.go:115 +0x45
net.(*UnixConn).ReadMsgUnix(0xc0000b2020, {0xc000472760?, 0xc00021bd90?, 0x0?}, {0xc0001dd320?, 0x436845?, 0xc000120d08?})
        /usr/local/go/src/net/unixsock.go:143 +0x36
github.com/godbus/dbus/v5.(*oobReader).Read(0xc0001dd300, {0xc000472760?, 0xc00021be00?, 0x436bc5?})
        /home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:21 +0x3c
io.ReadAtLeast({0xe104e0, 0xc0001dd300}, {0xc000472760, 0x10, 0x10}, 0x10)
        /usr/local/go/src/io/io.go:335 +0x90
io.ReadFull(...)
        /usr/local/go/src/io/io.go:354
github.com/godbus/dbus/v5.(*unixTransport).ReadMessage(0xc000120228)
        /home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:91 +0xfe
github.com/godbus/dbus/v5.(*Conn).inWorker(0xc000340f00)
        /home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:390 +0x43
created by github.com/godbus/dbus/v5.(*Conn).Auth in goroutine 1
        /home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/auth.go:118 +0x945

goroutine 36 [chan receive]:
github.com/alexballas/go2tv/internal/gui.Start.func2()
        /home/alex/test/go2tv/internal/gui/gui.go:122 +0x25
created by github.com/alexballas/go2tv/internal/gui.Start in goroutine 1
        /home/alex/test/go2tv/internal/gui/gui.go:121 +0x4e7

goroutine 22 [IO wait]:
internal/poll.runtime_pollWait(0x7f43e9117d70, 0x72)
        /usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc00007e0c0?, 0xc0003bbed0?, 0x1)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00007e0c0, {0xc0003bbed0, 0x10000, 0x10000})
        /usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
        /usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000124060, {0xc0003bbed0?, 0x1083800010837?, 0x1083c0001083c?})
        /usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000098280)
        /home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
        /home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 23 [chan receive]:
fyne.io/fyne/v2/app.watchFile.func1()
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/app/settings_desktop.go:42 +0xf8

goroutine 24 [chan receive]:
fyne.io/fyne/v2/app.watchFreedekstopThemeChange()
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/app/app_xdg.go:194 +0x1c5
created by fyne.io/fyne/v2/app.watchTheme in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/app/app_xdg.go:166 +0x1a

goroutine 26 [select]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc0004d0c60)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/async/chan_func.go:22 +0xe5

goroutine 27 [chan receive]:
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/common/window.go:34 +0x47
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/window.go:961 +0x139

goroutine 30 [select]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc0013e6360)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/async/chan_func.go:22 +0xe5

goroutine 31 [chan receive]:
fyne.io/fyne/v2/data/binding.queueItem.func1.1()
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/data/binding/queue.go:18 +0x4b
created by fyne.io/fyne/v2/data/binding.queueItem.func1 in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/data/binding/queue.go:17 +0x46

goroutine 32 [IO wait]:
internal/poll.runtime_pollWait(0x7f43e9117a88, 0x72)
        /usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc00373a780?, 0xc002f7da90?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0xc00373a780, 0xc002f7da90)
        /usr/local/go/src/internal/poll/fd_unix.go:708 +0x12a
net.(*rawConn).Read(0xc00007c200, 0xc000068c00?)
        /usr/local/go/src/net/rawconn.go:44 +0x36
golang.org/x/net/internal/socket.(*Conn).recvMsg(0xc002b7a680, 0xc0031e9500, 0x0)
        /home/alex/go/pkg/mod/golang.org/x/[email protected]/internal/socket/rawconn_msg.go:28 +0x152
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        /home/alex/go/pkg/mod/golang.org/x/[email protected]/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0xc002d245b0, {0xc001ed6000, 0xffff, 0xffff})
        /home/alex/go/pkg/mod/golang.org/x/[email protected]/ipv4/payload_cmsg.go:32 +0x229
github.com/alexballas/go-ssdp/internal/multicast.(*Conn).ReadPackets(0xc002b8d620, 0x77359400, 0xc0026fb8b8)
        /home/alex/go/pkg/mod/github.com/alexballas/[email protected]/internal/multicast/multicast.go:144 +0x9c
github.com/alexballas/go-ssdp.Search({0xccae9a, 0x8}, 0x2, {0x0, 0x0})
        /home/alex/go/pkg/mod/github.com/alexballas/[email protected]/search.go:107 +0x21b
github.com/alexballas/go2tv/devices.LoadSSDPservices(0x0?)
        /home/alex/test/go2tv/devices/devices.go:24 +0x98
github.com/alexballas/go2tv/internal/gui.getDevices(0xc003629520?)
        /home/alex/test/go2tv/internal/gui/actions.go:541 +0x25
github.com/alexballas/go2tv/internal/gui.refreshDevList(0xc0004ea1e0, 0xc000012168)
        /home/alex/test/go2tv/internal/gui/main.go:528 +0x112
created by github.com/alexballas/go2tv/internal/gui.mainWindow in goroutine 1
        /home/alex/test/go2tv/internal/gui/main.go:507 +0x2358

goroutine 33 [chan receive]:
github.com/alexballas/go2tv/internal/gui.checkMutefunc(0xc0004ea1e0)
        /home/alex/test/go2tv/internal/gui/main.go:587 +0x59
created by github.com/alexballas/go2tv/internal/gui.mainWindow in goroutine 1
        /home/alex/test/go2tv/internal/gui/main.go:511 +0x239b

goroutine 66 [chan receive]:
github.com/alexballas/go2tv/internal/gui.sliderUpdate(0xc0004ea1e0)
        /home/alex/test/go2tv/internal/gui/main.go:622 +0x4d
created by github.com/alexballas/go2tv/internal/gui.mainWindow in goroutine 1
        /home/alex/test/go2tv/internal/gui/main.go:515 +0x23dd

goroutine 38 [chan receive]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).catchTerm(0x0?)
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/driver_desktop.go:172 +0x85
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run in goroutine 1
        /home/alex/go/pkg/mod/fyne.io/fyne/[email protected]/internal/driver/glfw/driver.go:167 +0x65
Makefile:22: recipe for target 'run' failed
make: *** [run] Error 2

@alexballas
Copy link
Contributor Author

@andydotxyz
replicated with the demo too. Nothing crazy, just normal usage, clicking files, folders and jumping to the different locations with the quick navigation to the left.

fatal error: sync: RUnlock of unlocked RWMutex

goroutine 25 [running, locked to thread]:
sync.fatal({0xc8e48d?, 0xc652e0?})
	/usr/local/go/src/runtime/panic.go:1061 +0x18
sync.(*RWMutex).rUnlockSlow(0xc0001817a0, 0x48b2f9?)
	/usr/local/go/src/sync/rwmutex.go:129 +0x39
sync.(*RWMutex).RUnlock(0xc000d28580?)
	/usr/local/go/src/sync/rwmutex.go:119 +0x25
panic({0xc1e9a0?, 0xc0006be120?})
	/usr/local/go/src/runtime/panic.go:914 +0x21f
fyne.io/fyne/v2/widget.ellipsisPriorBound.func1(0x8, 0x11)
	/home/alex/test/fyne/widget/richtext.go:862 +0xbb
fyne.io/fyne/v2/widget.binarySearch(0xc002ce4890, 0x8, 0x11)
	/home/alex/test/fyne/widget/richtext.go:826 +0x34
fyne.io/fyne/v2/widget.ellipsisPriorBound({0xc0039441c0, 0x2, 0x2}, 0x28000000000?, 0x42800000, 0xc002ce4ed8)
	/home/alex/test/fyne/widget/richtext.go:865 +0x1a7
fyne.io/fyne/v2/widget.lineBounds(0xc002e473e0, 0x2, 0x2, 0x42800000, {0xc0?, 0x495b6c?}, 0xc002ce4ed8)
	/home/alex/test/fyne/widget/richtext.go:934 +0x19bb
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds.func1({0xc0032b5b50?, 0x1, 0x0?})
	/home/alex/test/fyne/widget/richtext.go:410 +0x20e
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds(0xc002e6a180)
	/home/alex/test/fyne/widget/richtext.go:457 +0x1b8
fyne.io/fyne/v2/widget.(*RichText).Refresh(0xc002e6a180)
	/home/alex/test/fyne/widget/richtext.go:100 +0x2b
fyne.io/fyne/v2/widget.(*Label).Refresh(0xc002e82000)
	/home/alex/test/fyne/widget/label.go:100 +0x2d
fyne.io/fyne/v2/dialog.(*fileItemRenderer).Layout(0xc0031e6d40, {0x2f355e0?, 0xc0?})
	/home/alex/test/fyne/dialog/fileitem.go:105 +0x19b
fyne.io/fyne/v2/internal/driver/common.(*Canvas).updateLayout(0xc0001817a0, {0xdb8b40?, 0xc002f355e0})
	/home/alex/test/fyne/internal/driver/common/canvas.go:609 +0x188
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1(0xc00254e680, {0x439fd100?, 0x4309d800?})
	/home/alex/test/fyne/internal/driver/common/canvas.go:110 +0xfc
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2({0xdb6d38?, 0xc002e82000?}, {0x2f35500?, 0xc0?}, {0xdb8b40?, 0xc002f355e0?})
	/home/alex/test/fyne/internal/driver/common/canvas.go:520 +0xda
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb8b40, 0xc002f355e0}, 0x0, {0xdb8720, 0xc002f356c0}, {0x1?, 0x0?}, {0x0?, 0x0?}, {0x305fa20?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:199 +0x46d
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb8720, 0xc002f356c0}, 0x0, {0xdb6df8, 0xc00069cbe0}, {0xc652e0?, 0x0?}, {0x3b91ea8?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb6df8, 0xc00069cbe0}, 0x0, {0xdb7038, 0xc000341e30}, {0xc652e0?, 0x0?}, {0x3b91e90?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb7038, 0xc000341e30}, 0x0, {0xdb7ab8, 0xc000c78000}, {0x1489f60?, 0xc0?}, {0x2ce5688?, 0xc0?}, {0x6d7578?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb7ab8, 0xc000c78000}, 0x0, {0xdb6df8, 0xc00069ca00}, {0xc652e0?, 0x0?}, {0x3b91e78?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb6df8, 0xc00069ca00}, 0x0, {0xdb7038, 0xc000341730}, {0x43e60000?, 0x44200000?}, {0x3b90b28?, 0xc0?}, {0xdb7ed8?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb7038, 0xc000341730}, 0x0, {0xdb6df8, 0xc001ca84b0}, {0xc652e0?, 0x0?}, {0x34cf788?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb6df8, 0xc001ca84b0}, 0x0, {0xdb6f18, 0xc0000fe0e0}, {0x43e60000?, 0x44200000?}, {0x34cf638?, 0xc0?}, {0xdb70f8?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb6f18, 0xc0000fe0e0}, 0x0, {0xdb6df8, 0xc001ca8730}, {0xc652e0?, 0x0?}, {0x34cf608?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb6df8, 0xc001ca8730}, 0x0, {0xdb8540, 0xc00135b280}, {0x2ce5b60?, 0xc0?}, {0xa6d765?, 0x0?}, {0xc70e16?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb8540, 0xc00135b280}, 0x0, {0x0, 0x0}, {0x2ce5bf0?, 0xc0?}, {0xa80765?, 0x0?}, {0x2ce5bd8?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0xdb8540?, 0xc00135b280?}, 0xc0004ac150?, 0xa80740?)
	/home/alex/test/fyne/internal/driver/util.go:134 +0x46
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0xa67482?, 0xc000d28580, 0x0, 0xc002ce5d70)
	/home/alex/test/fyne/internal/driver/common/canvas.go:526 +0x15f
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc0001817a0, 0xc002ce5d68?, 0x42db05?)
	/home/alex/test/fyne/internal/driver/common/canvas.go:447 +0xd9
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize(0xc0001817a0)
	/home/alex/test/fyne/internal/driver/common/canvas.go:143 +0x150
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
	/home/alex/test/fyne/internal/driver/glfw/loop.go:192 +0x2b
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc0000dd600?, 0xc002ce5e30)
	/home/alex/test/fyne/internal/driver/glfw/window.go:924 +0x43
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0x4?, 0x0?)
	/home/alex/test/fyne/internal/driver/glfw/loop.go:191 +0x45
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame(0xc002ce5f90?)
	/home/alex/test/fyne/internal/driver/glfw/loop.go:88 +0x1a5
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
	/home/alex/test/fyne/internal/driver/glfw/loop.go:245 +0x1c5
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/loop.go:223 +0xbb

goroutine 1 [select, locked to thread]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc0004c43c0?)
	/home/alex/test/fyne/internal/driver/glfw/loop.go:107 +0x146
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc0000dd600)
	/home/alex/test/fyne/internal/driver/glfw/driver.go:168 +0x6f
fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0004c43c0)
	/home/alex/test/fyne/internal/driver/glfw/window.go:227 +0x26
main.main()
	/home/alex/test/fyne/cmd/fyne_demo/main.go:68 +0x4cd

goroutine 6 [chan receive, 1 minutes]:
fyne.io/fyne/v2/test.NewApp.func1()
	/home/alex/test/fyne/test/testapp.go:166 +0x45
created by fyne.io/fyne/v2/test.NewApp in goroutine 1
	/home/alex/test/fyne/test/testapp.go:164 +0x325

goroutine 7 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7fdf8836db30, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc000094480?, 0xc00040fed0?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000094480, {0xc00040fed0, 0x10000, 0x10000})
	/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000064140, {0xc00040fed0?, 0xda9da0?, 0x1?})
	/usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000096af0)
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 8 [chan receive, 1 minutes]:
fyne.io/fyne/v2/app.watchFile.func1()
	/home/alex/test/fyne/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
	/home/alex/test/fyne/app/settings_desktop.go:42 +0xf8

goroutine 18 [chan receive, 1 minutes]:
github.com/godbus/dbus/v5.newConn.func1()
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:303 +0x2c
created by github.com/godbus/dbus/v5.newConn in goroutine 1
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:302 +0x4f6

goroutine 19 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7fdf8836da38, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc00048e000?, 0xc0019cfb10?, 0x0)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadMsg(0xc00048e000, {0xc0019cfb10, 0x10, 0x10}, {0xc0004b0020, 0x1000, 0x1000}, 0x14?)
	/usr/local/go/src/internal/poll/fd_unix.go:301 +0x38a
net.(*netFD).readMsg(0xc00048e000, {0xc0019cfb10?, 0xc001301510?, 0x14a4718?}, {0xc0004b0020?, 0xc0019cf8a8?, 0xc0019cf8aa?}, 0xc0019cf8a4?)
	/usr/local/go/src/net/fd_posix.go:78 +0x31
net.(*UnixConn).readMsg(0xc000490000, {0xc0019cfb10?, 0xc001301510?, 0xdacf40?}, {0xc0004b0020?, 0xdb61f0?, 0x1be4d60?})
	/usr/local/go/src/net/unixsock_posix.go:115 +0x45
net.(*UnixConn).ReadMsgUnix(0xc000490000, {0xc0019cfb10?, 0x0?, 0x0?}, {0xc0004b0020?, 0x436845?, 0xc0019d44b0?})
	/usr/local/go/src/net/unixsock.go:143 +0x36
github.com/godbus/dbus/v5.(*oobReader).Read(0xc0004b0000, {0xc0019cfb10?, 0xc0001a5e00?, 0x436bc5?})
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:21 +0x3c
io.ReadAtLeast({0xdad440, 0xc0004b0000}, {0xc0019cfb10, 0x10, 0x10}, 0x10)
	/usr/local/go/src/io/io.go:335 +0x90
io.ReadFull(...)
	/usr/local/go/src/io/io.go:354
github.com/godbus/dbus/v5.(*unixTransport).ReadMessage(0xc00048a000)
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:91 +0xfe
github.com/godbus/dbus/v5.(*Conn).inWorker(0xc000492000)
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:390 +0x43
created by github.com/godbus/dbus/v5.(*Conn).Auth in goroutine 1
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/auth.go:118 +0x945

goroutine 51 [syscall, 1 minutes]:
os/signal.signal_recv()
	/usr/local/go/src/runtime/sigqueue.go:152 +0x29
os/signal.loop()
	/usr/local/go/src/os/signal/signal_unix.go:23 +0x13
created by os/signal.Notify.func1.1 in goroutine 13
	/usr/local/go/src/os/signal/signal.go:151 +0x1f

goroutine 21 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7fdf8836d940, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc0004a82a0?, 0xc00050fed0?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0004a82a0, {0xc00050fed0, 0x10000, 0x10000})
	/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000490020, {0xc00050fed0?, 0x0?, 0x0?})
	/usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000494190)
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 22 [chan receive, 1 minutes]:
fyne.io/fyne/v2/app.watchFile.func1()
	/home/alex/test/fyne/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
	/home/alex/test/fyne/app/settings_desktop.go:42 +0xf8

goroutine 23 [chan receive, 1 minutes]:
fyne.io/fyne/v2/app.watchFreedekstopThemeChange()
	/home/alex/test/fyne/app/app_xdg.go:194 +0x1c5
created by fyne.io/fyne/v2/app.watchTheme in goroutine 1
	/home/alex/test/fyne/app/app_xdg.go:166 +0x1a

goroutine 26 [select, 1 minutes]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc000488c60)
	/home/alex/test/fyne/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
	/home/alex/test/fyne/internal/async/chan_func.go:22 +0xe5

goroutine 27 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
	/home/alex/test/fyne/internal/driver/common/window.go:34 +0x47
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/window.go:961 +0x139

goroutine 36 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 37 [select]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc000397290)
	/home/alex/test/fyne/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
	/home/alex/test/fyne/internal/async/chan_func.go:22 +0xe5

goroutine 38 [sync.RWMutex.Lock]:
sync.runtime_SemacquireRWMutex(0x4258a00042a00000?, 0x60?, 0xc002e6a1a8?)
	/usr/local/go/src/runtime/sema.go:87 +0x25
sync.(*RWMutex).Lock(0xc0032b5b50?)
	/usr/local/go/src/sync/rwmutex.go:152 +0x6a
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds(0xc002e6a180)
	/home/alex/test/fyne/widget/richtext.go:460 +0x1f2
fyne.io/fyne/v2/widget.(*RichText).Refresh(0xc002e6a180)
	/home/alex/test/fyne/widget/richtext.go:100 +0x2b
fyne.io/fyne/v2/widget.(*Label).Refresh(0xc002e82000)
	/home/alex/test/fyne/widget/label.go:100 +0x2d
fyne.io/fyne/v2/widget.(*Label).SetText(...)
	/home/alex/test/fyne/widget/label.go:118
fyne.io/fyne/v2/dialog.(*fileItemRenderer).Refresh(0xc0031e6d40)
	/home/alex/test/fyne/dialog/fileitem.go:120 +0x6c
fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc000492501?)
	/home/alex/test/fyne/widget/widget.go:140 +0x26
fyne.io/fyne/v2/dialog.(*fileDialogItem).setLocation(0xc002f355e0, {0x7fdf6c03d0d0?, 0xc00305fbc0?}, 0x0?, 0x0)
	/home/alex/test/fyne/dialog/fileitem.go:55 +0xe5
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func3(0x1, {0xdb8b40?, 0xc002f355e0})
	/home/alex/test/fyne/dialog/file.go:536 +0xed
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem(0xc0003b7a00, 0xc002f356c0, 0x1, 0xe0?)
	/home/alex/test/fyne/widget/gridwrap.go:528 +0xc6
fyne.io/fyne/v2/widget.(*gridWrapLayout).updateGrid(0xc0003b7a00, 0x1)
	/home/alex/test/fyne/widget/gridwrap.go:618 +0x5ff
fyne.io/fyne/v2/widget.(*gridWrapRenderer).Refresh(0xc0012d78c0)
	/home/alex/test/fyne/widget/gridwrap.go:346 +0xa5
fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc003850ce0?)
	/home/alex/test/fyne/widget/widget.go:140 +0x26
fyne.io/fyne/v2/dialog.(*fileDialog).refreshDir(0xc0004924b0, {0xdbaca0, 0xc00305f200})
	/home/alex/test/fyne/dialog/file.go:410 +0x63d
fyne.io/fyne/v2/dialog.(*fileDialog).setLocation(0xc0004924b0, {0xdb6f78, 0xc003359900})
	/home/alex/test/fyne/dialog/file.go:491 +0x716
fyne.io/fyne/v2/dialog.(*fileDialog).setSelected(0xc0004924b0, {0xdb6f78, 0xc003359900}, 0x0)
	/home/alex/test/fyne/dialog/file.go:499 +0x170
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func4(0x0)
	/home/alex/test/fyne/dialog/file.go:542 +0x4a
fyne.io/fyne/v2/widget.(*GridWrap).Select.func1()
	/home/alex/test/fyne/widget/gridwrap.go:172 +0x57
fyne.io/fyne/v2/widget.(*GridWrap).Select(0xc000c78000, 0x0)
	/home/alex/test/fyne/widget/gridwrap.go:177 +0x184
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem.func1()
	/home/alex/test/fyne/widget/gridwrap.go:541 +0xb8
fyne.io/fyne/v2/widget.(*gridWrapItem).Tapped(0xc003077810, 0xc0004c4401)
	/home/alex/test/fyne/widget/gridwrap.go:421 +0x33
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseClickedHandleTapDoubleTap.func1()
	/home/alex/test/fyne/internal/driver/glfw/window.go:645 +0x22
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
	/home/alex/test/fyne/internal/driver/common/window.go:35 +0x38
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/window.go:961 +0x139

goroutine 13 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).catchTerm(0x0?)
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:172 +0x85
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/driver.go:167 +0x65

goroutine 30 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 24
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 31 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 24
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 15 [select, 1 minutes]:
fyne.io/systray.stayRegistered()
	/home/alex/go/pkg/mod/fyne.io/[email protected]/systray_unix.go:266 +0x2af
created by fyne.io/systray.nativeStart in goroutine 1
	/home/alex/go/pkg/mod/fyne.io/[email protected]/systray_unix.go:230 +0xbbc
exit status 2

This is on the develop branch

alex@cosmo:~/test/fyne/cmd/fyne_demo$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

nothing to commit, working tree clean

@Jacalz
Copy link
Member

Jacalz commented Oct 4, 2023

dea2af7 was pushed to the release/v2.4.x branch. I expect it to solve your outstanding issues

EDIT: Never mind, we are not using data binding in the file dialog. Sorry for the incorrect comment.

@Jacalz
Copy link
Member

Jacalz commented Oct 4, 2023

You can ignore my previous message. It was wrong

@andydotxyz
Copy link
Member

This is on the develop branch

For historical record and to aid debugging it is better if we can get the SHA for the most recent commit - as the develop branch moves.

@andydotxyz andydotxyz reopened this Oct 5, 2023
@alexballas
Copy link
Contributor Author

hello @andydotxyz , it's super hard to replicate but here is another successful attempt.

alex@cosmo:~/test/fyne/cmd/fyne_demo$ git log | head -n1
commit d530122f8b394790f9d16f850bed45d1bc625f5b
alex@cosmo:~/test/fyne/cmd/fyne_demo$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

nothing to commit, working tree clean
alex@cosmo:~/test/fyne/cmd/fyne_demo$ 
fatal error: sync: RUnlock of unlocked RWMutex

goroutine 10 [running, locked to thread]:
sync.fatal({0xc8e76d?, 0xc655c0?})
	/usr/local/go/src/runtime/panic.go:1061 +0x18
sync.(*RWMutex).rUnlockSlow(0xc00042c7e0, 0x48b2f9?)
	/usr/local/go/src/sync/rwmutex.go:129 +0x39
sync.(*RWMutex).RUnlock(0xc00135abc0?)
	/usr/local/go/src/sync/rwmutex.go:119 +0x25
panic({0xc1ec80?, 0xc0021f1a40?})
	/usr/local/go/src/runtime/panic.go:914 +0x21f
fyne.io/fyne/v2/widget.ellipsisPriorBound.func1(0x9, 0x12)
	/home/alex/test/fyne/widget/richtext.go:862 +0xbb
fyne.io/fyne/v2/widget.binarySearch(0xc002f9c890, 0x9, 0x12)
	/home/alex/test/fyne/widget/richtext.go:826 +0x34
fyne.io/fyne/v2/widget.ellipsisPriorBound({0xc0025f00e0, 0x2, 0x2}, 0x1e800000000?, 0x42800000, 0xc002f9ced8)
	/home/alex/test/fyne/widget/richtext.go:865 +0x1a7
fyne.io/fyne/v2/widget.lineBounds(0xc002043380, 0x2, 0x2, 0x42800000, {0xc0?, 0x495b6c?}, 0xc002f9ced8)
	/home/alex/test/fyne/widget/richtext.go:934 +0x19bb
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds.func1({0xc00260f8a0?, 0x1, 0x0?})
	/home/alex/test/fyne/widget/richtext.go:410 +0x20e
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds(0xc001f1b740)
	/home/alex/test/fyne/widget/richtext.go:457 +0x1b8
fyne.io/fyne/v2/widget.(*RichText).Refresh(0xc001f1b740)
	/home/alex/test/fyne/widget/richtext.go:100 +0x2b
fyne.io/fyne/v2/widget.(*Label).Refresh(0xc0021db110)
	/home/alex/test/fyne/widget/label.go:100 +0x2d
fyne.io/fyne/v2/dialog.(*fileItemRenderer).Layout(0xc00202df80, {0x2593b90?, 0xc0?})
	/home/alex/test/fyne/dialog/fileitem.go:105 +0x19b
fyne.io/fyne/v2/internal/driver/common.(*Canvas).updateLayout(0xc00042c7e0, {0xdb8e20?, 0xc002593b90})
	/home/alex/test/fyne/internal/driver/common/canvas.go:609 +0x188
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize.func1(0xc002856d40, {0x444e6880?, 0x43ceec00?})
	/home/alex/test/fyne/internal/driver/common/canvas.go:110 +0xfc
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree.func2({0xdb7018?, 0xc0021db110?}, {0x2593b00?, 0xc0?}, {0xdb8e20?, 0xc002593b90?})
	/home/alex/test/fyne/internal/driver/common/canvas.go:520 +0xda
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb8e20, 0xc002593b90}, 0x0, {0xdb8a00, 0xc002593c00}, {0x1?, 0x0?}, {0x0?, 0x0?}, {0x300f8c0?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:199 +0x46d
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb8a00, 0xc002593c00}, 0x0, {0xdb70d8, 0xc0012b02d0}, {0xc655c0?, 0x0?}, {0x1938b70?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb70d8, 0xc0012b02d0}, 0x0, {0xdb7318, 0xc000445880}, {0xc655c0?, 0x0?}, {0x1938b58?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb7318, 0xc000445880}, 0x0, {0xdb7d98, 0xc0000e8790}, {0x1b59650?, 0xc0?}, {0x2f9d688?, 0xc0?}, {0x6d7578?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb7d98, 0xc0000e8790}, 0x0, {0xdb70d8, 0xc0012b00a0}, {0xc655c0?, 0x0?}, {0x1938b40?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb70d8, 0xc0012b00a0}, 0x0, {0xdb7318, 0xc0002c04d0}, {0x447d0000?, 0x44ce8000?}, {0x257d128?, 0xc0?}, {0xdb81b8?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb7318, 0xc0002c04d0}, 0x0, {0xdb70d8, 0xc000d30fa0}, {0xc655c0?, 0x0?}, {0x1d79bf0?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb70d8, 0xc000d30fa0}, 0x0, {0xdb71f8, 0xc0002c0850}, {0x447d0000?, 0x44ce8000?}, {0x1d79ab8?, 0xc0?}, {0xdb73d8?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb71f8, 0xc0002c0850}, 0x0, {0xdb70d8, 0xc000d31220}, {0xc655c0?, 0x0?}, {0x1d79aa0?, 0xc0?}, {0xf8475800?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb70d8, 0xc000d31220}, 0x0, {0xdb8820, 0xc0012dce80}, {0x2f9db60?, 0xc0?}, {0xa6da45?, 0x0?}, {0xc710f6?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.walkObjectTree.func1(...)
	/home/alex/test/fyne/internal/driver/util.go:178
fyne.io/fyne/v2/internal/driver.walkObjectTree({0xdb8820, 0xc0012dce80}, 0x0, {0x0, 0x0}, {0x2f9dbf0?, 0xc0?}, {0xa80a45?, 0x0?}, {0x2f9dbd8?, ...}, ...)
	/home/alex/test/fyne/internal/driver/util.go:192 +0x41f
fyne.io/fyne/v2/internal/driver.WalkVisibleObjectTree({0xdb8820?, 0xc0012dce80?}, 0xc0004ba070?, 0xa80a20?)
	/home/alex/test/fyne/internal/driver/util.go:134 +0x46
fyne.io/fyne/v2/internal/driver/common.(*Canvas).walkTree(0xa67762?, 0xc00135abc0, 0x0, 0xc002f9dd70)
	/home/alex/test/fyne/internal/driver/common/canvas.go:526 +0x15f
fyne.io/fyne/v2/internal/driver/common.(*Canvas).WalkTrees(0xc00042c7e0, 0xc002f9dd68?, 0x42db05?)
	/home/alex/test/fyne/internal/driver/common/canvas.go:447 +0xd9
fyne.io/fyne/v2/internal/driver/common.(*Canvas).EnsureMinSize(0xc00042c7e0)
	/home/alex/test/fyne/internal/driver/common/canvas.go:143 +0x150
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow.func1()
	/home/alex/test/fyne/internal/driver/glfw/loop.go:192 +0x2b
fyne.io/fyne/v2/internal/driver/glfw.(*window).RunWithContext(0xc0000d5680?, 0xc002f9de30)
	/home/alex/test/fyne/internal/driver/glfw/window.go:924 +0x43
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).repaintWindow(0x4?, 0x0?)
	/home/alex/test/fyne/internal/driver/glfw/loop.go:191 +0x45
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).drawSingleFrame(0xc002f9df90?)
	/home/alex/test/fyne/internal/driver/glfw/loop.go:88 +0x1a5
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
	/home/alex/test/fyne/internal/driver/glfw/loop.go:245 +0x1c5
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/loop.go:223 +0xbb

goroutine 1 [select, locked to thread]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc0003403c0?)
	/home/alex/test/fyne/internal/driver/glfw/loop.go:107 +0x146
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc0000d5680)
	/home/alex/test/fyne/internal/driver/glfw/driver.go:168 +0x6f
fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0003403c0)
	/home/alex/test/fyne/internal/driver/glfw/window.go:227 +0x26
main.main()
	/home/alex/test/fyne/cmd/fyne_demo/main.go:68 +0x4cd

goroutine 6 [chan receive, 1 minutes]:
fyne.io/fyne/v2/test.NewApp.func1()
	/home/alex/test/fyne/test/testapp.go:166 +0x45
created by fyne.io/fyne/v2/test.NewApp in goroutine 1
	/home/alex/test/fyne/test/testapp.go:164 +0x325

goroutine 7 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f6f21742b08, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc00008c480?, 0xc00048fed0?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00008c480, {0xc00048fed0, 0x10000, 0x10000})
	/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc000064140, {0xc00048fed0?, 0xdaa080?, 0x1?})
	/usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000096af0)
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 8 [chan receive, 1 minutes]:
fyne.io/fyne/v2/app.watchFile.func1()
	/home/alex/test/fyne/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
	/home/alex/test/fyne/app/settings_desktop.go:42 +0xf8

goroutine 18 [chan receive, 1 minutes]:
github.com/godbus/dbus/v5.newConn.func1()
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:303 +0x2c
created by github.com/godbus/dbus/v5.newConn in goroutine 1
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:302 +0x4f6

goroutine 34 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f6f21742a10, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc000424000?, 0xc001992700?, 0x0)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadMsg(0xc000424000, {0xc001992700, 0x10, 0x10}, {0xc00043c020, 0x1000, 0x1000}, 0x14?)
	/usr/local/go/src/internal/poll/fd_unix.go:301 +0x38a
net.(*netFD).readMsg(0xc000424000, {0xc001992700?, 0xc0010237f0?, 0x14a5718?}, {0xc00043c020?, 0xc0019924a8?, 0xc0019924aa?}, 0xc0019924a4?)
	/usr/local/go/src/net/fd_posix.go:78 +0x31
net.(*UnixConn).readMsg(0xc000426000, {0xc001992700?, 0xc0010237f0?, 0xdad220?}, {0xc00043c020?, 0xdb64d0?, 0x1be5d60?})
	/usr/local/go/src/net/unixsock_posix.go:115 +0x45
net.(*UnixConn).ReadMsgUnix(0xc000426000, {0xc001992700?, 0x0?, 0x0?}, {0xc00043c020?, 0x436845?, 0xc001a9b3f8?})
	/usr/local/go/src/net/unixsock.go:143 +0x36
github.com/godbus/dbus/v5.(*oobReader).Read(0xc00043c000, {0xc001992700?, 0xc000125e00?, 0x436bc5?})
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:21 +0x3c
io.ReadAtLeast({0xdad720, 0xc00043c000}, {0xc001992700, 0x10, 0x10}, 0x10)
	/usr/local/go/src/io/io.go:335 +0x90
io.ReadFull(...)
	/usr/local/go/src/io/io.go:354
github.com/godbus/dbus/v5.(*unixTransport).ReadMessage(0xc000420000)
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/transport_unix.go:91 +0xfe
github.com/godbus/dbus/v5.(*Conn).inWorker(0xc000428000)
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/conn.go:390 +0x43
created by github.com/godbus/dbus/v5.(*Conn).Auth in goroutine 1
	/home/alex/go/pkg/mod/github.com/godbus/dbus/[email protected]/auth.go:118 +0x945

goroutine 36 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f6f21742918, 0x72)
	/usr/local/go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0xc0004b01e0?, 0xc00050fed0?, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0004b01e0, {0xc00050fed0, 0x10000, 0x10000})
	/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
	/usr/local/go/src/os/file_posix.go:29
os.(*File).Read(0xc0004b2008, {0xc00050fed0?, 0x0?, 0x0?})
	/usr/local/go/src/os/file.go:118 +0x52
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc0004b6140)
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:356 +0xd2
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
	/home/alex/go/pkg/mod/github.com/fsnotify/[email protected]/backend_inotify.go:150 +0x186

goroutine 37 [chan receive, 1 minutes]:
fyne.io/fyne/v2/app.watchFile.func1()
	/home/alex/test/fyne/app/settings_desktop.go:43 +0x66
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
	/home/alex/test/fyne/app/settings_desktop.go:42 +0xf8

goroutine 38 [chan receive, 1 minutes]:
fyne.io/fyne/v2/app.watchFreedekstopThemeChange()
	/home/alex/test/fyne/app/app_xdg.go:194 +0x1c5
created by fyne.io/fyne/v2/app.watchTheme in goroutine 1
	/home/alex/test/fyne/app/app_xdg.go:166 +0x1a

goroutine 41 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 39
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 11 [select, 1 minutes]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc000316a80)
	/home/alex/test/fyne/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
	/home/alex/test/fyne/internal/async/chan_func.go:22 +0xe5

goroutine 12 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
	/home/alex/test/fyne/internal/driver/common/window.go:34 +0x47
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/window.go:961 +0x139

goroutine 15 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee

goroutine 16 [select]:
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc000317320)
	/home/alex/test/fyne/internal/async/chan_func.go:45 +0xd5
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
	/home/alex/test/fyne/internal/async/chan_func.go:22 +0xe5

goroutine 66 [runnable]:
github.com/go-text/typesetting/harfbuzz.lookupGSUB.dispatchSubtables(...)
	/home/alex/go/pkg/mod/github.com/go-text/[email protected]/harfbuzz/ot_layout_gsub.go:28
github.com/go-text/typesetting/harfbuzz.(*otLayoutLookupAccelerator).init(0xc0015c1e18, {0xdb49e0?, 0xc001ffab80})
	/home/alex/go/pkg/mod/github.com/go-text/[email protected]/harfbuzz/ot_layout_gsubgpos.go:45 +0xa6
github.com/go-text/typesetting/harfbuzz.NewFont(0xc00066e180)
	/home/alex/go/pkg/mod/github.com/go-text/[email protected]/harfbuzz/fonts.go:81 +0xfa
github.com/go-text/typesetting/shaping.(*HarfbuzzShaper).Shape(0xc0027d4090, {{0xc00258e298, 0x1, 0x1}, 0x0, 0x1, 0x0, 0xc00066e180, 0x380, 0x0, ...})
	/home/alex/go/pkg/mod/github.com/go-text/[email protected]/shaping/shaper.go:90 +0x31c
fyne.io/fyne/v2/internal/painter.walkString({0xc00129c2c0, 0x3, 0x4}, {0xc00258e290?, 0x0?}, 0x380, 0x20?, 0xc002f98f9c, 0x3f800000, 0xc002f98ff0?)
	/home/alex/test/fyne/internal/painter/font.go:175 +0x178
fyne.io/fyne/v2/internal/painter.MeasureString({0xc00129c2c0?, 0x0?, 0xc001ffa200?}, {0xc00258e290?, 0x4?}, 0x41600000?, 0x0?)
	/home/alex/test/fyne/internal/painter/font.go:122 +0x57
fyne.io/fyne/v2/internal/painter.measureText({0xc00258e290, 0x4}, 0x258e290?, {0x0, 0x0, 0x0, 0x0, 0x0})
	/home/alex/test/fyne/internal/painter/font.go:148 +0x8d
fyne.io/fyne/v2/internal/painter.RenderedTextSize({0xc00258e290, 0x4}, 0x0?, {0x0, 0x0, 0x0, 0x0, 0x0})
	/home/alex/test/fyne/internal/painter/font.go:133 +0x93
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).RenderedTextSize(0x7?, {0xc00258e290?, 0x7?}, 0x3?, {0x0, 0x0, 0x0, 0x0, 0x0})
	/home/alex/test/fyne/internal/driver/glfw/driver.go:74 +0x51
fyne.io/fyne/v2.MeasureText({0xc00258e290, 0x4}, 0x4?, {0x0, 0x0, 0x0, 0x0, 0x0})
	/home/alex/test/fyne/text.go:68 +0x7e
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds.func1.1({0xc00258e280?, 0xc001606631?, 0x4?})
	/home/alex/test/fyne/widget/richtext.go:411 +0x58
fyne.io/fyne/v2/widget.lineBounds(0xc002043380, 0x2, 0x2, 0x42800000, {0x0?, 0x0?}, 0xc002f996f8)
	/home/alex/test/fyne/widget/richtext.go:932 +0x14d4
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds.func1({0xc00260f8a0?, 0x1, 0x4198a00000316720?})
	/home/alex/test/fyne/widget/richtext.go:410 +0x20e
fyne.io/fyne/v2/widget.(*RichText).updateRowBounds(0xc001f1b740)
	/home/alex/test/fyne/widget/richtext.go:457 +0x1b8
fyne.io/fyne/v2/widget.(*RichText).Refresh(0xc001f1b740)
	/home/alex/test/fyne/widget/richtext.go:100 +0x2b
fyne.io/fyne/v2/widget.(*Label).Refresh(0xc0021db110)
	/home/alex/test/fyne/widget/label.go:100 +0x2d
fyne.io/fyne/v2/widget.(*Label).SetText(...)
	/home/alex/test/fyne/widget/label.go:118
fyne.io/fyne/v2/dialog.(*fileItemRenderer).Refresh(0xc00202df80)
	/home/alex/test/fyne/dialog/fileitem.go:120 +0x6c
fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc00158c301?)
	/home/alex/test/fyne/widget/widget.go:140 +0x26
fyne.io/fyne/v2/dialog.(*fileDialogItem).setLocation(0xc002593b90, {0x7f6eb803c9c0?, 0xc00300f940?}, 0x1e?, 0x0)
	/home/alex/test/fyne/dialog/fileitem.go:55 +0xe5
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func3(0x1, {0xdb8e20?, 0xc002593b90})
	/home/alex/test/fyne/dialog/file.go:536 +0xed
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem(0xc001d7bb40, 0xc002593c00, 0x1, 0x0?)
	/home/alex/test/fyne/widget/gridwrap.go:528 +0xc6
fyne.io/fyne/v2/widget.(*gridWrapLayout).updateGrid(0xc001d7bb40, 0x1)
	/home/alex/test/fyne/widget/gridwrap.go:618 +0x5ff
fyne.io/fyne/v2/widget.(*gridWrapRenderer).Refresh(0xc000d48330)
	/home/alex/test/fyne/widget/gridwrap.go:346 +0xa5
fyne.io/fyne/v2/widget.(*BaseWidget).Refresh(0xc001da2340?)
	/home/alex/test/fyne/widget/widget.go:140 +0x26
fyne.io/fyne/v2/dialog.(*fileDialog).refreshDir(0xc00158c2d0, {0xdbaf80, 0xc00300ed40})
	/home/alex/test/fyne/dialog/file.go:410 +0x63d
fyne.io/fyne/v2/dialog.(*fileDialog).setLocation(0xc00158c2d0, {0x7f6eb803c9c0, 0xc0030d81a0})
	/home/alex/test/fyne/dialog/file.go:491 +0x716
fyne.io/fyne/v2/dialog.(*fileDialog).setSelected(0xc00158c2d0, {0x7f6eb803c9c0, 0xc0030d81a0}, 0x1)
	/home/alex/test/fyne/dialog/file.go:499 +0x170
fyne.io/fyne/v2/dialog.(*fileDialog).setView.func4(0x1)
	/home/alex/test/fyne/dialog/file.go:542 +0x4a
fyne.io/fyne/v2/widget.(*GridWrap).Select.func1()
	/home/alex/test/fyne/widget/gridwrap.go:172 +0x57
fyne.io/fyne/v2/widget.(*GridWrap).Select(0xc0000e8790, 0x1)
	/home/alex/test/fyne/widget/gridwrap.go:177 +0x184
fyne.io/fyne/v2/widget.(*gridWrapLayout).setupGridItem.func1()
	/home/alex/test/fyne/widget/gridwrap.go:541 +0xb8
fyne.io/fyne/v2/widget.(*gridWrapItem).Tapped(0xc002593c00, 0xc000340401)
	/home/alex/test/fyne/widget/gridwrap.go:421 +0x33
fyne.io/fyne/v2/internal/driver/glfw.(*window).mouseClickedHandleTapDoubleTap.func1()
	/home/alex/test/fyne/internal/driver/glfw/window.go:645 +0x22
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
	/home/alex/test/fyne/internal/driver/common/window.go:35 +0x38
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/window.go:961 +0x139

goroutine 68 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).catchTerm(0x0?)
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:172 +0x85
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run in goroutine 1
	/home/alex/test/fyne/internal/driver/glfw/driver.go:167 +0x65

goroutine 71 [select, 1 minutes]:
fyne.io/systray.stayRegistered()
	/home/alex/go/pkg/mod/fyne.io/[email protected]/systray_unix.go:266 +0x2af
created by fyne.io/systray.nativeStart in goroutine 1
	/home/alex/go/pkg/mod/fyne.io/[email protected]/systray_unix.go:230 +0xbbc

goroutine 70 [syscall, 1 minutes]:
os/signal.signal_recv()
	/usr/local/go/src/runtime/sigqueue.go:152 +0x29
os/signal.loop()
	/usr/local/go/src/os/signal/signal_unix.go:23 +0x13
created by os/signal.Notify.func1.1 in goroutine 68
	/usr/local/go/src/os/signal/signal.go:151 +0x1f

goroutine 42 [chan receive, 1 minutes]:
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu.func1()
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:139 +0x34
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).refreshSystrayMenu in goroutine 39
	/home/alex/test/fyne/internal/driver/glfw/driver_desktop.go:138 +0xee
exit status 2

@JordanGoulder
Copy link
Contributor

It looks like this is a bit different than the original issue based on the trace. Maybe something to do with binding in fileItemRenderer label.

@JordanGoulder
Copy link
Contributor

I have been able to reproduce this with the same error output by going into my /tmp directory and scrolling up and down very quickly.

@JordanGoulder
Copy link
Contributor

I think I have fixed it.

@alexballas would you mind trying out my change to see if it fixes the issue you are seeing?

https://github.com/JordanGoulder/fyne/tree/fix_fileitem_crash

@alexballas
Copy link
Contributor Author

Hello @JordanGoulder, thanks for that. This indeed seems to have helped. However, are we confident that with this fix we're not just hiding the issue? How come an extra refresh somewhere is responsible for a panic?

@Jacalz
Copy link
Member

Jacalz commented Oct 7, 2023

I think you generally shouldn't refresh objects within the layout function. As far as I see it, the text is refreshed within the Refresh() method (from SetText()) so it seems like a sensible change to me.

@alexballas
Copy link
Contributor Author

alexballas commented Oct 7, 2023

Refreshing objects, although not recommended in some cases where methods like SetText() handle it, should still not cause panics. If there is an architectural and documented process where explicit Refresh calls can cause panics, then fine. But I still think we're hiding the real issue here.
Edit: Don't get me wrong. At the end of the day it, it's your call. If you think it's fine. Then fine.

@Jacalz
Copy link
Member

Jacalz commented Oct 7, 2023

I might be wrong but as far as I know, the layout function is called within a lock and the refresh tries to use the same lock sometimes causing a panic. It is not necessary refresh that causes a panic per say. Also, the layout function should just layout objects not update their contents. If there is missing documentation around this we should update it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocker Items that would block a forthcoming release bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants