fyne-io / fyne

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

sigsegv on wayland compiled executable #3517

Closed emdete closed 3 months ago

emdete commented 1 year ago

Checklist

Describe the bug

when compiling for wayland (go build -tags wayland .) the executable coredumps on start while the X11 variant works fine.

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xffff9537a8f0]

runtime stack:
runtime.throw(0xa2afd3, 0x2a)
        /usr/lib/go-1.15/src/runtime/panic.go:1116 +0x54
runtime.sigpanic()
        /usr/lib/go-1.15/src/runtime/signal_unix.go:726 +0x444

goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x900080, 0x400021fbe8, 0x30)
        /usr/lib/go-1.15/src/runtime/cgocall.go:133 +0x50 fp=0x400021fbb0 sp=0x400021fb70 pc=0x41f330
github.com/go-gl/glfw/v3.3/glfw._Cfunc_glfwCreateStandardCursor(0x36001, 0x0)
        _cgo_gotypes.go:663 +0x44 fp=0x400021fbe0 sp=0x400021fbb0 pc=0x890b94
github.com/go-gl/glfw/v3.3/glfw.CreateStandardCursor(0x36001, 0x40003d4960)
        /home/purism/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20211213063430-748e38ca8aec/input.go:529 +0x28 fp=0x400021fc20 sp=0x400021fbe0 pc=0x896a
08
fyne.io/fyne/v2/internal/driver/glfw.initCursors()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/window_desktop.go:48 +0x70 fp=0x400021fc60 sp=0x400021fc20 pc=0x8e1a60
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).initGLFW.func1()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/loop_desktop.go:27 +0x64 fp=0x400021fca0 sp=0x400021fc60 pc=0x8e3eb4
sync.(*Once).doSlow(0x1180380, 0x400021fd18)
        /usr/lib/go-1.15/src/sync/once.go:66 +0x114 fp=0x400021fd00 sp=0x400021fca0 pc=0x493b64
sync.(*Once).Do(...)
        /usr/lib/go-1.15/src/sync/once.go:57
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).initGLFW(0x40003ce620)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/loop_desktop.go:16 +0x64 fp=0x400021fd30 sp=0x400021fd00 pc=0x8da634
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/window.go:937 +0x4c fp=0x400021fd90 sp=0x400021fd30 pc=0x8e548c
fyne.io/fyne/v2/internal/driver/glfw.runOnMain(0x40003d4930)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/loop.go:61 +0x1b0 fp=0x400021fe00 sp=0x400021fd90 pc=0x8d96a0
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow(0x40003ce620, 0xa130cb, 0xa, 0x400037be01, 0xafd060, 0x40003ce690)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/window.go:936 +0xdc fp=0x400021fe30 sp=0x400021fe00 pc=0x8e16fc
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).CreateWindow(0x40003ce620, 0xa130cb, 0xa, 0x0, 0xafd060)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/internal/driver/glfw/window.go:928 +0x40 fp=0x400021fe70 sp=0x400021fe30 pc=0x8e15f0
fyne.io/fyne/v2/app.(*fyneApp).NewWindow(0x40003ce690, 0xa130cb, 0xa, 0x40003ce690, 0x400021ff28)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/app/app.go:63 +0x44 fp=0x400021feb0 sp=0x400021fe70 pc=0x8eace4
main.main()
        /home/purism/fyne_playground/main.go:30 +0x68 fp=0x400021ff70 sp=0x400021feb0 pc=0x8ef6c8
runtime.main()
        /usr/lib/go-1.15/src/runtime/proc.go:204 +0x20c fp=0x400021ffd0 sp=0x400021ff70 pc=0x44f63c
runtime.goexit()
        /usr/lib/go-1.15/src/runtime/asm_arm64.s:1136 +0x4 fp=0x400021ffd0 sp=0x400021ffd0 pc=0x47e504

goroutine 4 [syscall]:
syscall.Syscall6(0x16, 0x4, 0x400040fb40, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/lib/go-1.15/src/syscall/asm_linux_arm64.s:35 +0x10
golang.org/x/sys/unix.EpollWait(0x4, 0x400040fb40, 0x7, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0)
        /home/purism/go/pkg/mod/golang.org/x/sys@v0.0.0-20220412211240-33da011f77ad/unix/zsyscall_linux_arm64.go:56 +0x58
github.com/fsnotify/fsnotify.(*fdPoller).wait(0x4000025980, 0x0, 0x0, 0x0)
        /home/purism/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify_poller.go:86 +0x60
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0x400006e9b0)
        /home/purism/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:206 +0x1a8
created by github.com/fsnotify/fsnotify.NewWatcher
        /home/purism/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:60 +0x168

goroutine 5 [chan receive]:
fyne.io/fyne/v2/app.watchFile.func1(0x400006e9b0, 0x400002c330, 0x27, 0x40003a6a80, 0x40003a6a90)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/app/settings_desktop.go:43 +0x48
created by fyne.io/fyne/v2/app.watchFile
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.2.4/app/settings_desktop.go:42 +0xd0

How to reproduce

  1. compile with -tag wayland
  2. run the program

Screenshots

No response

Example code

package main

import (
        "log"
        "fyne.io/fyne/v2/app"
        "fyne.io/fyne/v2/container"
        "fyne.io/fyne/v2/widget" 
)

func main() {
        myApp := app.New()
        myWindow := myApp.NewWindow("Box Layout")
        myWindow.SetContent(container.NewMax(
                widget.NewButton("Yes", func() {
                        log.Println("Yes!")
                }),
        ))
        myWindow.ShowAndRun()
}

Fyne version

v2.3.0

Go compiler version

10.2.1

Operating system

Android

Operating system version

buster/sid

Additional Information

this is on a Librem5

andydotxyz commented 1 year ago

The library version stated does not match the stack trace... maybe just a typo, but I wanted to check.

emdete commented 1 year ago

Yes, you are right, i updated the env and tried again:

2022/12/30 17:12:15 Fyne error:  failed to read theme variant from D-Bus
2022/12/30 17:12:15   Cause: Requested setting not found
2022/12/30 17:12:15   At: /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/app/app_xdg.go:51
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xffff5940b8f0]

runtime stack:
runtime.throw(0xc011b3, 0x2a)
        /usr/lib/go-1.15/src/runtime/panic.go:1116 +0x54
runtime.sigpanic()
        /usr/lib/go-1.15/src/runtime/signal_unix.go:726 +0x444

goroutine 1 [syscall, locked to thread]: 
runtime.cgocall(0xa8b630, 0x400021fb88, 0x30)
        /usr/lib/go-1.15/src/runtime/cgocall.go:133 +0x50 fp=0x400021fb50 sp=0x400021fb10 pc=0x41f620
github.com/go-gl/glfw/v3.3/glfw._Cfunc_glfwCreateStandardCursor(0x36001, 0x0)
        _cgo_gotypes.go:678 +0x44 fp=0x400021fb80 sp=0x400021fb50 pc=0xa177f4
github.com/go-gl/glfw/v3.3/glfw.CreateStandardCursor(0x36001, 0x4000500120)
        /home/purism/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/input.go:529 +0x28 fp=0x400021fbc0 sp=0x400021fb80 pc=0xa1d8
a8
fyne.io/fyne/v2/internal/driver/glfw.initCursors()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/window_desktop.go:47 +0x70 fp=0x400021fc00 sp=0x400021fbc0 pc=0xa69cf0
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).initGLFW.func1()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/loop_desktop.go:27 +0x64 fp=0x400021fc40 sp=0x400021fc00 pc=0xa6cc54
sync.(*Once).doSlow(0x144daa8, 0x400021fcb8)
        /usr/lib/go-1.15/src/sync/once.go:66 +0x114 fp=0x400021fca0 sp=0x400021fc40 pc=0x494724
sync.(*Once).Do(...)
        /usr/lib/go-1.15/src/sync/once.go:57
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).initGLFW(0x40003fd490)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/loop_desktop.go:16 +0x64 fp=0x400021fcd0 sp=0x400021fca0 pc=0xa628e4
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/window.go:937 +0x4c fp=0x400021fd30 sp=0x400021fcd0 pc=0xa6e22c
fyne.io/fyne/v2/internal/driver/glfw.runOnMain(0x4000404ea0)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/loop.go:61 +0x1b0 fp=0x400021fda0 sp=0x400021fd30 pc=0xa61950
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow(0x40003fd490, 0xbdb2ca, 0xa, 0x4000416001, 0xcede00, 0x4000414090)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/window.go:936 +0xcc fp=0x400021fdd0 sp=0x400021fda0 pc=0xa6999c
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).CreateWindow(0x40003fd490, 0xbdb2ca, 0xa, 0x0, 0xcede00)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/internal/driver/glfw/window.go:928 +0x40 fp=0x400021fe10 sp=0x400021fdd0 pc=0xa698a0
fyne.io/fyne/v2/app.(*fyneApp).NewWindow(0x4000414090, 0xbdb2ca, 0xa, 0x4000414090, 0x30)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/app/app.go:68 +0x44 fp=0x400021fe50 sp=0x400021fe10 pc=0xa739a4
main.main()
        /home/purism/fyne_examples/layouting/main.go:50 +0x70 fp=0x400021ff70 sp=0x400021fe50 pc=0xa791f0
runtime.main()
        /usr/lib/go-1.15/src/runtime/proc.go:204 +0x20c fp=0x400021ffd0 sp=0x400021ff70 pc=0x44f92c
runtime.goexit()
        /usr/lib/go-1.15/src/runtime/asm_arm64.s:1136 +0x4 fp=0x400021ffd0 sp=0x400021ffd0 pc=0x47f0c4

goroutine 6 [chan receive]:
github.com/godbus/dbus/v5.newConn.func1(0x4000418000)
        /home/purism/go/pkg/mod/github.com/godbus/dbus/v5@v5.1.0/conn.go:303 +0x44
created by github.com/godbus/dbus/v5.newConn
        /home/purism/go/pkg/mod/github.com/godbus/dbus/v5@v5.1.0/conn.go:302 +0x250

goroutine 18 [IO wait]:
internal/poll.runtime_pollWait(0xffff5a4a7d78, 0x72, 0x1000)
        /usr/lib/go-1.15/src/runtime/netpoll.go:222 +0x44
internal/poll.(*pollDesc).wait(0x40001ce918, 0x72, 0x0, 0x10, 0x400009a020)
        /usr/lib/go-1.15/src/internal/poll/fd_poll_runtime.go:87 +0x38
internal/poll.(*pollDesc).waitRead(...)  
        /usr/lib/go-1.15/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).ReadMsg(0x40001ce900, 0x4000096310, 0x10, 0x10, 0x400009a020, 0x1000, 0x1000, 0x0, 0x0, 0x0, ...)
        /usr/lib/go-1.15/src/internal/poll/fd_unix.go:242 +0x190
net.(*netFD).readMsg(0x40001ce900, 0x4000096310, 0x10, 0x10, 0x400009a020, 0x1000, 0x1000, 0x100000000000, 0xcea4e0, 0x0, ...)
        /usr/lib/go-1.15/src/net/fd_posix.go:67 +0x5c
net.(*UnixConn).readMsg(0x4000010170, 0x4000096310, 0x10, 0x10, 0x400009a020, 0x1000, 0x1000, 0x4000094300, 0xcdafe0, 0x4000094270, ...)
        /usr/lib/go-1.15/src/net/unixsock_posix.go:115 +0x5c
net.(*UnixConn).ReadMsgUnix(0x4000010170, 0x4000096310, 0x10, 0x10, 0x400009a020, 0x1000, 0x1000, 0xae3fc0, 0x400014dd01, 0xa345b4, ...)
        /usr/lib/go-1.15/src/net/unixsock.go:143 +0x60
github.com/godbus/dbus/v5.(*oobReader).Read(0x400009a000, 0x4000096310, 0x10, 0x10, 0x400014dd98, 0xa47c4c, 0x20)
        /home/purism/go/pkg/mod/github.com/godbus/dbus/v5@v5.1.0/transport_unix.go:21 +0x5c
io.ReadAtLeast(0xcdb4e0, 0x400009a000, 0x4000096310, 0x10, 0x10, 0x10, 0xce03a0, 0x40000aa040, 0x40000aa050)
        /usr/lib/go-1.15/src/io/io.go:314 +0x78
io.ReadFull(...)
        /usr/lib/go-1.15/src/io/io.go:333
github.com/godbus/dbus/v5.(*unixTransport).ReadMessage(0x4000406e60, 0x3, 0x40000942a0, 0x4000000003)
        /home/purism/go/pkg/mod/github.com/godbus/dbus/v5@v5.1.0/transport_unix.go:91 +0xd8
github.com/godbus/dbus/v5.(*Conn).inWorker(0x4000418000)
        /home/purism/go/pkg/mod/github.com/godbus/dbus/v5@v5.1.0/conn.go:390 +0x44
created by github.com/godbus/dbus/v5.(*Conn).Auth
        /home/purism/go/pkg/mod/github.com/godbus/dbus/v5@v5.1.0/auth.go:118 +0x47c

goroutine 8 [chan receive]:
fyne.io/fyne/v2/app.watchFile.func1(0x4000072aa0, 0x4000026570, 0x27, 0x40003dca40, 0x40003dca50)
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/app/settings_desktop.go:43 +0x48
created by fyne.io/fyne/v2/app.watchFile 
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/app/settings_desktop.go:42 +0xd0

goroutine 7 [syscall]:
syscall.Syscall6(0x16, 0x8, 0x400058fb40, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/lib/go-1.15/src/syscall/asm_linux_arm64.s:35 +0x10
golang.org/x/sys/unix.EpollWait(0x8, 0x400058fb40, 0x7, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0)
        /home/purism/go/pkg/mod/golang.org/x/sys@v0.0.0-20220412211240-33da011f77ad/unix/zsyscall_linux_arm64.go:56 +0x58
github.com/fsnotify/fsnotify.(*fdPoller).wait(0x400041e080, 0x0, 0x0, 0x0)
        /home/purism/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify_poller.go:86 +0x60
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0x4000072aa0)
        /home/purism/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:206 +0x1a8
created by github.com/fsnotify/fsnotify.NewWatcher
        /home/purism/go/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:60 +0x168

goroutine 9 [chan receive]:
fyne.io/fyne/v2/app.watchFreedekstopThemeChange()
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/app/app_xdg.go:187 +0x218
created by fyne.io/fyne/v2/app.watchTheme
        /home/purism/go/pkg/mod/fyne.io/fyne/v2@v2.3.0/app/app_xdg.go:159 +0x30
andydotxyz commented 1 year ago

I cannot replicate. Can you provide any more info about the Wayland environment you are running in?

andydotxyz commented 1 year ago

@Jacalz you marked this as verified - can you replicate?

Jacalz commented 1 year ago

Hmm. Actually not. Sorry about that. Don’t know why I removed unverified

andydotxyz commented 1 year ago

Can you replicate on Wayland desktop? I'm not sure if I can follow your steps without a Librem device...

emdete commented 1 year ago

i have no running wayland on my desktop but will try to create an installation on the weekend.

@andydotxyz : if you tell me how to get that environment information i can easily send it or i could run special fyne versions or programs to debug if you could tell me what and how.

andydotxyz commented 1 year ago

Oh I think I just realised - this is not Android like the original report, but PureOS then?

I'm not sure why yet but it seems to be a crash inside the GLFW C code in https://github.com/glfw/glfw/blob/41d8da1cea55732867b5c3a7159215071b87b790/src/wl_window.c#L2342 (_glfwCreateStandardCursorWayland).

Perhaps the wayland implementation on PureOS/Librem5 does not support cursors fully?

I wonder if we can test PureOS without a Librem?

emdete commented 1 year ago

i am not sure about wayland but PureOS running on a desktop wont have the same composer, right? on the librem its phosh i assume? does _glfwCreateStandardCursorWayland mean the mouse cursor? why does a mobile have a mousecursor then? can i try without somehow?

emdete commented 1 year ago

today i set up a pure wayland box to test the issue.

this is strange:

the compile with only the wayland tag set shows some warning which the compile with both flags doesnt:

go build -tags "wayland" .
# github.com/go-gl/glfw/v3.3/glfw
In Datei, eingebunden von ../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/c_glfw_lin.go:9:
../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/glfw/src/wl_window.c: In Funktion »createTmpfileCloexec«:
../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/glfw/src/wl_window.c:53:10: Warnung: Implizite Deklaration der Funktion »mkostemp«; meinten Sie »mkstemp«? [-Wimplicit-function-declaration]
   53 |     fd = mkostemp(tmpname, O_CLOEXEC);
      |          ^~~~~~~~
      |          mkstemp
../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/glfw/src/wl_window.c: In Funktion »waitForData«:
../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/glfw/src/wl_window.c:204:32: Warnung: Implizite Deklaration der Funktion »ppoll«; meinten Sie »poll«? [-Wimplicit-function-declaration]
  204 |             const int result = ppoll(fds, count, &ts, NULL);
      |                                ^~~~~
      |                                poll
../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/glfw/src/wl_window.c: In Funktion »readDataOfferAsString«:
../../go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/glfw/src/wl_window.c:953:9: Warnung: Implizite Deklaration der Funktion »pipe2«; meinten Sie »pipe«? [-Wimplicit-function-declaration]
  953 |     if (pipe2(fds, O_CLOEXEC) == -1)
      |         ^~~~~
      |         pipe
Jacalz commented 1 year ago

The first Wayland PlatformErrors are expected because our support isn't complete, I think. Those glfw warnings are also more or less expected, see https://github.com/go-gl/glfw/issues/359. No window is strange though.

apprehensions commented 1 year ago
$ go build -tags wayland
...
2023/09/23 08:20:00 PlatformError: Wayland: Standard cursor "crosshair" not found
2023/09/23 08:20:00 PlatformError: Wayland: Standard cursor "hand2" not found
2023/09/23 08:20:00 PlatformError: Wayland: Standard cursor "sb_h_double_arrow" not found
2023/09/23 08:20:00 PlatformError: Wayland: Standard cursor "sb_v_double_arrow" not found
2023/09/23 08:20:00 PlatformError: Wayland: Focusing a window requires user interaction
2023/09/23 08:20:00 PlatformError: Wayland: Window position retrieval not supported
SIGSEGV: segmentation violation
PC=0x7f8578928298 m=0 sigcode=128
signal arrived during cgo execution

goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x9f4be0, 0xc000599d78)
    /usr/lib/go/src/runtime/cgocall.go:157 +0x4b fp=0xc000599d50 sp=0xc000599d18 pc=0x40afab
github.com/go-gl/glfw/v3.3/glfw._Cfunc_glfwPollEvents()
    _cgo_gotypes.go:1570 +0x3f fp=0xc000599d78 sp=0xc000599d50 pc=0x97e3df
github.com/go-gl/glfw/v3.3/glfw.PollEvents()
    /home/meow/.cache/go/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20221017161538-93cebf72946b/window.go:964 +0xf fp=0xc000599d88 sp=0xc000599d78 pc=0x989baf
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).tryPollEvents(0xc000599e80?)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/loop_desktop.go:34 +0x30 fp=0xc000599da8 sp=0xc000599d88 pc=0x9ca2d0
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).runGL(0xc0003bbf10)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/loop.go:128 +0x1b9 fp=0xc000599ec0 sp=0xc000599da8 pc=0x9c97d9
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run(0xc0003bbf10)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/driver.go:168 +0x6f fp=0xc000599ee0 sp=0xc000599ec0 pc=0x9c830f
fyne.io/fyne/v2/internal/driver/glfw.(*window).ShowAndRun(0xc0004da000)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/window.go:231 +0x26 fp=0xc000599ef8 sp=0xc000599ee0 pc=0x9cd426
main.main()
    /home/meow/src/ok/main.go:18 +0x14b fp=0xc000599f40 sp=0xc000599ef8 pc=0x9e2b4b
runtime.main()
    /usr/lib/go/src/runtime/proc.go:267 +0x2bb fp=0xc000599fe0 sp=0xc000599f40 pc=0x43f4fb
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000599fe8 sp=0xc000599fe0 pc=0x46f181

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00005cfa8 sp=0xc00005cf88 pc=0x43f94e
runtime.goparkunlock(...)
    /usr/lib/go/src/runtime/proc.go:404
runtime.forcegchelper()
    /usr/lib/go/src/runtime/proc.go:322 +0xb3 fp=0xc00005cfe0 sp=0xc00005cfa8 pc=0x43f7d3
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00005cfe8 sp=0xc00005cfe0 pc=0x46f181
created by runtime.init.6 in goroutine 1
    /usr/lib/go/src/runtime/proc.go:310 +0x1a

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00005d778 sp=0xc00005d758 pc=0x43f94e
runtime.goparkunlock(...)
    /usr/lib/go/src/runtime/proc.go:404
runtime.bgsweep(0x0?)
    /usr/lib/go/src/runtime/mgcsweep.go:321 +0xdf fp=0xc00005d7c8 sp=0xc00005d778 pc=0x42b7ff
runtime.gcenable.func1()
    /usr/lib/go/src/runtime/mgc.go:200 +0x25 fp=0xc00005d7e0 sp=0xc00005d7c8 pc=0x420945
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00005d7e8 sp=0xc00005d7e0 pc=0x46f181
created by runtime.gcenable in goroutine 1
    /usr/lib/go/src/runtime/mgc.go:200 +0x66

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc00007c000?, 0xc401b0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00005df70 sp=0xc00005df50 pc=0x43f94e
runtime.goparkunlock(...)
    /usr/lib/go/src/runtime/proc.go:404
runtime.(*scavengerState).park(0x175c1a0)
    /usr/lib/go/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc00005dfa0 sp=0xc00005df70 pc=0x429049
runtime.bgscavenge(0x0?)
    /usr/lib/go/src/runtime/mgcscavenge.go:658 +0x59 fp=0xc00005dfc8 sp=0xc00005dfa0 pc=0x4295f9
runtime.gcenable.func2()
    /usr/lib/go/src/runtime/mgc.go:201 +0x25 fp=0xc00005dfe0 sp=0xc00005dfc8 pc=0x4208e5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00005dfe8 sp=0xc00005dfe0 pc=0x46f181
created by runtime.gcenable in goroutine 1
    /usr/lib/go/src/runtime/mgc.go:201 +0xa5

goroutine 18 [finalizer wait]:
runtime.gopark(0xb1d7a0?, 0x100440a01?, 0x0?, 0x0?, 0x447b05?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00005c628 sp=0xc00005c608 pc=0x43f94e
runtime.runfinq()
    /usr/lib/go/src/runtime/mfinal.go:193 +0x107 fp=0xc00005c7e0 sp=0xc00005c628 pc=0x41f9c7
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00005c7e8 sp=0xc00005c7e0 pc=0x46f181
created by runtime.createfing in goroutine 1
    /usr/lib/go/src/runtime/mfinal.go:163 +0x3d

goroutine 19 [chan receive]:
runtime.gopark(0x517225?, 0x0?, 0xa8?, 0x87?, 0x517199?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000058718 sp=0xc0000586f8 pc=0x43f94e
runtime.chanrecv(0xc000182420, 0x0, 0x1)
    /usr/lib/go/src/runtime/chan.go:583 +0x3cd fp=0xc000058790 sp=0xc000058718 pc=0x40d38d
runtime.chanrecv1(0xc000180730?, 0x0?)
    /usr/lib/go/src/runtime/chan.go:442 +0x12 fp=0xc0000587b8 sp=0xc000058790 pc=0x40cf92
github.com/godbus/dbus/v5.newConn.func1()
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/conn.go:303 +0x2c fp=0xc0000587e0 sp=0xc0000587b8 pc=0x9988ec
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000587e8 sp=0xc0000587e0 pc=0x46f181
created by github.com/godbus/dbus/v5.newConn in goroutine 1
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/conn.go:302 +0x4f6

goroutine 34 [IO wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc0004c7a50 sp=0xc0004c7a30 pc=0x43f94e
runtime.netpollblock(0x0?, 0x40a746?, 0x0?)
    /usr/lib/go/src/runtime/netpoll.go:564 +0xf7 fp=0xc0004c7a88 sp=0xc0004c7a50 pc=0x438337
internal/poll.runtime_pollWait(0x7f853197aa28, 0x72)
    /usr/lib/go/src/runtime/netpoll.go:343 +0x85 fp=0xc0004c7aa8 sp=0xc0004c7a88 pc=0x469b05
internal/poll.(*pollDesc).wait(0xc0001df300?, 0xc00009e190?, 0x0)
    /usr/lib/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc0004c7ad0 sp=0xc0004c7aa8 pc=0x4d9f07
internal/poll.(*pollDesc).waitRead(...)
    /usr/lib/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadMsg(0xc0001df300, {0xc00009e190, 0x10, 0x10}, {0xc0004ae020, 0x1000, 0x1000}, 0xc0004c7c04?)
    /usr/lib/go/src/internal/poll/fd_unix.go:301 +0x38a fp=0xc0004c7bc0 sp=0xc0004c7ad0 pc=0x4dc40a
net.(*netFD).readMsg(0xc0001df300, {0xc00009e190?, 0xc0000a4110?, 0x1084d78?}, {0xc0004ae020?, 0xc00009e080?, 0xc00009e082?}, 0xc00009e07c?)
    /usr/lib/go/src/net/fd_posix.go:78 +0x31 fp=0xc0004c7c48 sp=0xc0004c7bc0 pc=0x5b8af1
net.(*UnixConn).readMsg(0xc00019e100, {0xc00009e190?, 0xc0000a4110?, 0x41c8eb?}, {0xc0004ae020?, 0x428445?, 0xa40f00?})
    /usr/lib/go/src/net/unixsock_posix.go:115 +0x45 fp=0xc0004c7cd8 sp=0xc0004c7c48 pc=0x5d2345
net.(*UnixConn).ReadMsgUnix(0xc00019e100, {0xc00009e190?, 0xc0004c7d90?, 0x0?}, {0xc0004ae020?, 0x413d45?, 0xc0000a2288?})
    /usr/lib/go/src/net/unixsock.go:143 +0x36 fp=0xc0004c7d50 sp=0xc0004c7cd8 pc=0x5d0e56
github.com/godbus/dbus/v5.(*oobReader).Read(0xc0004ae000, {0xc00009e190?, 0xc0004c7e00?, 0x4140c5?})
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/transport_unix.go:21 +0x3c fp=0xc0004c7dc8 sp=0xc0004c7d50 pc=0x9b007c
io.ReadAtLeast({0xc45600, 0xc0004ae000}, {0xc00009e190, 0x10, 0x10}, 0x10)
    /usr/lib/go/src/io/io.go:335 +0x90 fp=0xc0004c7e10 sp=0xc0004c7dc8 pc=0x4b5230
io.ReadFull(...)
    /usr/lib/go/src/io/io.go:354
github.com/godbus/dbus/v5.(*unixTransport).ReadMessage(0xc00019b350)
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/transport_unix.go:91 +0xfe fp=0xc0004c7f58 sp=0xc0004c7e10 pc=0x9b063e
github.com/godbus/dbus/v5.(*Conn).inWorker(0xc000275590)
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/conn.go:390 +0x43 fp=0xc0004c7fc8 sp=0xc0004c7f58 pc=0x998da3
github.com/godbus/dbus/v5.(*Conn).Auth.func1()
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/auth.go:118 +0x25 fp=0xc0004c7fe0 sp=0xc0004c7fc8 pc=0x996085
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0004c7fe8 sp=0xc0004c7fe0 pc=0x46f181
created by github.com/godbus/dbus/v5.(*Conn).Auth in goroutine 1
    /home/meow/.cache/go/mod/github.com/godbus/dbus/v5@v5.1.0/auth.go:118 +0x945

goroutine 5 [GC worker (idle)]:
runtime.gopark(0x22421cfff66?, 0xc000494f80?, 0x1?, 0x0?, 0xc0004ac000?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000494f50 sp=0xc000494f30 pc=0x43f94e
runtime.gcBgMarkWorker()
    /usr/lib/go/src/runtime/mgc.go:1293 +0xe5 fp=0xc000494fe0 sp=0xc000494f50 pc=0x4224c5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000494fe8 sp=0xc000494fe0 pc=0x46f181
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/lib/go/src/runtime/mgc.go:1217 +0x1c

goroutine 50 [GC worker (idle)]:
runtime.gopark(0x224210d6665?, 0xc000058f80?, 0x3?, 0x0?, 0xc000182480?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000058f50 sp=0xc000058f30 pc=0x43f94e
runtime.gcBgMarkWorker()
    /usr/lib/go/src/runtime/mgc.go:1293 +0xe5 fp=0xc000058fe0 sp=0xc000058f50 pc=0x4224c5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000058fe8 sp=0xc000058fe0 pc=0x46f181
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/lib/go/src/runtime/mgc.go:1217 +0x1c

goroutine 36 [IO wait]:
runtime.gopark(0x0?, 0xb?, 0x0?, 0x0?, 0x7?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00050fce0 sp=0xc00050fcc0 pc=0x43f94e
runtime.netpollblock(0x4bef38?, 0x40a746?, 0x0?)
    /usr/lib/go/src/runtime/netpoll.go:564 +0xf7 fp=0xc00050fd18 sp=0xc00050fce0 pc=0x438337
internal/poll.runtime_pollWait(0x7f853197a930, 0x72)
    /usr/lib/go/src/runtime/netpoll.go:343 +0x85 fp=0xc00050fd38 sp=0xc00050fd18 pc=0x469b05
internal/poll.(*pollDesc).wait(0xc0004982a0?, 0xc00050fed0?, 0x1)
    /usr/lib/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00050fd60 sp=0xc00050fd38 pc=0x4d9f07
internal/poll.(*pollDesc).waitRead(...)
    /usr/lib/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0004982a0, {0xc00050fed0, 0x10000, 0x10000})
    /usr/lib/go/src/internal/poll/fd_unix.go:164 +0x27a fp=0xc00050fdf8 sp=0xc00050fd60 pc=0x4db1fa
os.(*File).read(...)
    /usr/lib/go/src/os/file_posix.go:29
os.(*File).Read(0xc00049a018, {0xc00050fed0?, 0x0?, 0x0?})
    /usr/lib/go/src/os/file.go:118 +0x52 fp=0xc00050fe38 sp=0xc00050fdf8 pc=0x4e6232
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc00049e0a0)
    /home/meow/.cache/go/mod/github.com/fsnotify/fsnotify@v1.6.0/backend_inotify.go:356 +0xd2 fp=0xc00051ffc8 sp=0xc00050fe38 pc=0x9da312
github.com/fsnotify/fsnotify.NewWatcher.func1()
    /home/meow/.cache/go/mod/github.com/fsnotify/fsnotify@v1.6.0/backend_inotify.go:150 +0x25 fp=0xc00051ffe0 sp=0xc00051ffc8 pc=0x9d97a5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00051ffe8 sp=0xc00051ffe0 pc=0x46f181
created by github.com/fsnotify/fsnotify.NewWatcher in goroutine 1
    /home/meow/.cache/go/mod/github.com/fsnotify/fsnotify@v1.6.0/backend_inotify.go:150 +0x186

goroutine 37 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc0004956c8 sp=0xc0004956a8 pc=0x43f94e
runtime.chanrecv(0xc0004ac0c0, 0xc0004957b8, 0x1)
    /usr/lib/go/src/runtime/chan.go:583 +0x3cd fp=0xc000495740 sp=0xc0004956c8 pc=0x40d38d
runtime.chanrecv2(0x0?, 0x0?)
    /usr/lib/go/src/runtime/chan.go:447 +0x12 fp=0xc000495768 sp=0xc000495740 pc=0x40cfb2
fyne.io/fyne/v2/app.watchFile.func1()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/app/settings_desktop.go:43 +0x66 fp=0xc0004957e0 sp=0xc000495768 pc=0x9df946
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0004957e8 sp=0xc0004957e0 pc=0x46f181
created by fyne.io/fyne/v2/app.watchFile in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/app/settings_desktop.go:42 +0xf8

goroutine 38 [chan receive]:
runtime.gopark(0xa90b00?, 0x0?, 0x0?, 0xce?, 0x7f85319d6fb0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00006ce50 sp=0xc00006ce30 pc=0x43f94e
runtime.chanrecv(0xc0000b2000, 0xc0004c3f48, 0x1)
    /usr/lib/go/src/runtime/chan.go:583 +0x3cd fp=0xc00006cec8 sp=0xc00006ce50 pc=0x40d38d
runtime.chanrecv2(0xc000275590?, 0x0?)
    /usr/lib/go/src/runtime/chan.go:447 +0x12 fp=0xc00006cef0 sp=0xc00006cec8 pc=0x40cfb2
fyne.io/fyne/v2/app.watchFreedekstopThemeChange()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/app/app_xdg.go:194 +0x1c5 fp=0xc00006cfe0 sp=0xc00006cef0 pc=0x9dcb85
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006cfe8 sp=0xc00006cfe0 pc=0x46f181
created by fyne.io/fyne/v2/app.watchTheme in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/app/app_xdg.go:166 +0x1a

goroutine 39 [select, locked to thread]:
runtime.gopark(0xc000595f90?, 0x4?, 0x0?, 0x0?, 0xc000595f38?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000595dd8 sp=0xc000595db8 pc=0x43f94e
runtime.selectgo(0xc000595f90, 0xc000595f30, 0x0?, 0x0, 0x0?, 0x1)
    /usr/lib/go/src/runtime/select.go:327 +0x725 fp=0xc000595ef8 sp=0xc000595dd8 pc=0x44f485
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread.func1()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/loop.go:224 +0xf1 fp=0xc000595fe0 sp=0xc000595ef8 pc=0x9c9f91
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000595fe8 sp=0xc000595fe0 pc=0x46f181
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).startDrawThread in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/loop.go:220 +0xbb

goroutine 40 [select]:
runtime.gopark(0xc000496f68?, 0x2?, 0x45?, 0x84?, 0xc000496f08?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000496da0 sp=0xc000496d80 pc=0x43f94e
runtime.selectgo(0xc000496f68, 0xc000496f04, 0x0?, 0x0, 0x0?, 0x1)
    /usr/lib/go/src/runtime/select.go:327 +0x725 fp=0xc000496ec0 sp=0xc000496da0 pc=0x44f485
fyne.io/fyne/v2/internal/async.(*UnboundedFuncChan).processing(0xc000482a50)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/async/chan_func.go:45 +0xd5 fp=0xc000496fc8 sp=0xc000496ec0 pc=0x76b8d5
fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan.func1()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/async/chan_func.go:22 +0x25 fp=0xc000496fe0 sp=0xc000496fc8 pc=0x76b745
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000496fe8 sp=0xc000496fe0 pc=0x46f181
created by fyne.io/fyne/v2/internal/async.NewUnboundedFuncChan in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/async/chan_func.go:22 +0xe5

goroutine 41 [chan receive]:
runtime.gopark(0xc0000a6120?, 0xc4dcb8?, 0x40?, 0x62?, 0xc000497730?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc0004976f8 sp=0xc0004976d8 pc=0x43f94e
runtime.chanrecv(0xc0004983c0, 0xc0004977b0, 0x1)
    /usr/lib/go/src/runtime/chan.go:583 +0x3cd fp=0xc000497770 sp=0xc0004976f8 pc=0x40d38d
runtime.chanrecv2(0x0?, 0x0?)
    /usr/lib/go/src/runtime/chan.go:447 +0x12 fp=0xc000497798 sp=0xc000497770 pc=0x40cfb2
fyne.io/fyne/v2/internal/driver/common.(*Window).RunEventQueue(0x0?)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/common/window.go:34 +0x47 fp=0xc0004977c8 sp=0xc000497798 pc=0x8778e7
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1.1()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/window.go:959 +0x25 fp=0xc0004977e0 sp=0xc0004977c8 pc=0x9d28e5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0004977e8 sp=0xc0004977e0 pc=0x46f181
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).createWindow.func1 in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/window.go:959 +0x139

goroutine 42 [GC worker (idle)]:
runtime.gopark(0x22421cffe22?, 0xc0000c0000?, 0x1a?, 0x14?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000497f50 sp=0xc000497f30 pc=0x43f94e
runtime.gcBgMarkWorker()
    /usr/lib/go/src/runtime/mgc.go:1293 +0xe5 fp=0xc000497fe0 sp=0xc000497f50 pc=0x4224c5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000497fe8 sp=0xc000497fe0 pc=0x46f181
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/lib/go/src/runtime/mgc.go:1217 +0x1c

goroutine 43 [GC worker (idle)]:
runtime.gopark(0x22421e6a226?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000490750 sp=0xc000490730 pc=0x43f94e
runtime.gcBgMarkWorker()
    /usr/lib/go/src/runtime/mgc.go:1293 +0xe5 fp=0xc0004907e0 sp=0xc000490750 pc=0x4224c5
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0004907e8 sp=0xc0004907e0 pc=0x46f181
created by runtime.gcBgMarkStartWorkers in goroutine 1
    /usr/lib/go/src/runtime/mgc.go:1217 +0x1c

goroutine 55 [sleep]:
runtime.gopark(0x2249f553721?, 0x0?, 0x0?, 0x0?, 0x0?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc001247f70 sp=0xc001247f50 pc=0x43f94e
time.Sleep(0x5f5e100)
    /usr/lib/go/src/runtime/time.go:195 +0x125 fp=0xc001247fb0 sp=0xc001247f70 pc=0x46c1c5
fyne.io/fyne/v2/internal/driver/glfw.(*window).processFocused.func1()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/window.go:821 +0x25 fp=0xc001247fe0 sp=0xc001247fb0 pc=0x9d1b25
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc001247fe8 sp=0xc001247fe0 pc=0x46f181
created by fyne.io/fyne/v2/internal/driver/glfw.(*window).processFocused in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/window.go:820 +0x10f

goroutine 52 [chan receive]:
runtime.gopark(0xc00005fee0?, 0x98eea5?, 0x1?, 0xc7?, 0xc00005ff58?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc00005fec8 sp=0xc00005fea8 pc=0x43f94e
runtime.chanrecv(0xc0000a74a0, 0x0, 0x1)
    /usr/lib/go/src/runtime/chan.go:583 +0x3cd fp=0xc00005ff40 sp=0xc00005fec8 pc=0x40d38d
runtime.chanrecv1(0xc0000a74a0?, 0xc00005ff98?)
    /usr/lib/go/src/runtime/chan.go:442 +0x12 fp=0xc00005ff68 sp=0xc00005ff40 pc=0x40cf92
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).catchTerm(0x0?)
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/driver_desktop.go:172 +0x85 fp=0xc00005ffc8 sp=0xc00005ff68 pc=0x9c8d25
fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run.func1()
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/driver.go:167 +0x25 fp=0xc00005ffe0 sp=0xc00005ffc8 pc=0x9c8365
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00005ffe8 sp=0xc00005ffe0 pc=0x46f181
created by fyne.io/fyne/v2/internal/driver/glfw.(*gLDriver).Run in goroutine 1
    /home/meow/.cache/go/mod/fyne.io/fyne/v2@v2.4.0/internal/driver/glfw/driver.go:167 +0x65

goroutine 53 [select, locked to thread]:
runtime.gopark(0xc0000597a8?, 0x2?, 0xe9?, 0xfb?, 0xc0000597a4?)
    /usr/lib/go/src/runtime/proc.go:398 +0xce fp=0xc000059638 sp=0xc000059618 pc=0x43f94e
runtime.selectgo(0xc0000597a8, 0xc0000597a0, 0x0?, 0x0, 0x0?, 0x1)
    /usr/lib/go/src/runtime/select.go:327 +0x725 fp=0xc000059758 sp=0xc000059638 pc=0x44f485
runtime.ensureSigM.func1()
    /usr/lib/go/src/runtime/signal_unix.go:1014 +0x19f fp=0xc0000597e0 sp=0xc000059758 pc=0x46649f
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000597e8 sp=0xc0000597e0 pc=0x46f181
created by runtime.ensureSigM in goroutine 52
    /usr/lib/go/src/runtime/signal_unix.go:997 +0xc8

goroutine 54 [syscall]:
runtime.notetsleepg(0x0?, 0x0?)
    /usr/lib/go/src/runtime/lock_futex.go:236 +0x29 fp=0xc000059fa0 sp=0xc000059f68 pc=0x4127e9
os/signal.signal_recv()
    /usr/lib/go/src/runtime/sigqueue.go:152 +0x29 fp=0xc000059fc0 sp=0xc000059fa0 pc=0x46bbc9
os/signal.loop()
    /usr/lib/go/src/os/signal/signal_unix.go:23 +0x13 fp=0xc000059fe0 sp=0xc000059fc0 pc=0x98f1d3
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000059fe8 sp=0xc000059fe0 pc=0x46f181
created by os/signal.Notify.func1.1 in goroutine 52
    /usr/lib/go/src/os/signal/signal.go:151 +0x1f

rax    0x1
rbx    0x7f8527910570
rcx    0xb7
rdx    0x7f852791057c
rdi    0x17
rsi    0x7f85279103f0
rbp    0x2436b80
rsp    0x7ffec6b14ef0
r8     0x7f8527910570
r9     0x7ffec6b14ea0
r10    0x0
r11    0x9ed090
r12    0x1
r13    0x7ffec6b150b8
r14    0x8
r15    0x3
rip    0x7f8578928298
rflags 0x10293
cs     0x33
fs     0x0
gs     0x0
AndreRenaud commented 1 year ago

I think I might have encountered a similar issue a while ago running Go/GLFW/Wayland apps on embedded systems. I found this resolved my issue - https://github.com/glfw/glfw/pull/2361/files Are you able to confirm if making that change fixes things for you?

apprehensions commented 1 year ago

The segfault only occurs on keyboard input, so i doubt.

AndreRenaud commented 1 year ago

Sorry, I was referring to the original segv:

goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x900080, 0x400021fbe8, 0x30)
        /usr/lib/go-1.15/src/runtime/cgocall.go:133 +0x50 fp=0x400021fbb0 sp=0x400021fb70 pc=0x41f330
github.com/go-gl/glfw/v3.3/glfw._Cfunc_glfwCreateStandardCursor(0x36001, 0x0)

and the comment mentioned in https://github.com/fyne-io/fyne/issues/3517#issuecomment-1371501660. It probably doesn't apply to the issue in glfwPollEvents as you say.

cognusion commented 11 months ago

For me, compling gnoll with -tags wayland results in the below warning but builds. The resulting binary, however, causes a SIGSEGV in gnome-shell and I get to log in again. :boom: (Fedora 39, Nvidia, Wayland).

$ go build -tags wayland
# github.com/go-gl/glfw/v3.3/glfw
In file included from /home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/c_glfw_lin.go:10:
/home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/glfw/src/wl_window.c: In function ‘createTmpfileCloexec’:
/home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/glfw/src/wl_window.c:53:10: warning: implicit declaration of function ‘mkostemp’; did you mean ‘mkstemp’? [-Wimplicit-function-declaration]
   53 |     fd = mkostemp(tmpname, O_CLOEXEC);
      |          ^~~~~~~~
      |          mkstemp
/home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/glfw/src/wl_window.c: In function ‘waitForData’:
/home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/glfw/src/wl_window.c:204:32: warning: implicit declaration of function ‘ppoll’; did you mean ‘poll’? [-Wimplicit-function-declaration]
  204 |             const int result = ppoll(fds, count, &ts, NULL);
      |                                ^~~~~
      |                                poll
/home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/glfw/src/wl_window.c: In function ‘readDataOfferAsString’:
/home/m/go/pkg/mod/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20231124074035-2de0cf0c80af/glfw/src/wl_window.c:953:9: warning: implicit declaration of function ‘pipe2’; did you mean ‘pipe’? [-Wimplicit-function-declaration]
  953 |     if (pipe2(fds, O_CLOEXEC) == -1)
      |         ^~~~~
      |         pipe
Jacalz commented 11 months ago

Like mentioned further up the thread, those compiler warnings are not a problem and tracked in https://github.com/go-gl/glfw/issues/359 already.

andydotxyz commented 4 months ago

Can anyone still see this with latest develop? Updates have been applied and it's been well tested on wayland now.

dweymouth commented 3 months ago

I have Supersonic users who are building with -tags wayland (which I still say is experimental) seeing intermittent crashes at launch. Don't have a stack trace to attach though. Supersonic is building against release/v2.5.x branch

andydotxyz commented 3 months ago

I'm not sure that we can or should keep this open based on others experiencing a SEGV. Unless we know what the stack is it is hard to know what to do, really it needs to be a specific issue so we can hunt it down. This is specific to cursor creation, which hasn't been confirmed since the last two GLFW updates...

Jacalz commented 3 months ago

I agree. Let's close this for now and open a new one if it pops up again.