tailscale / walk

A Windows GUI toolkit for the Go Programming Language
Other
32 stars 5 forks source link

A nil pointer dereference when opening the tray menu #72

Closed nickkhyl closed 3 months ago

nickkhyl commented 3 months ago

I'm experiencing sporadic nil pointer dereferences when clicking the tray icon multiple times or while the popup menu is already displayed.

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x70 pc=0xbda191]

goroutine 1 [running, locked to thread]:
github.com/tailscale/walk.(*menuItemLayout).layout(0xffffffffe0012327?, 0xc7593ff288?, 0x2?)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/menuownerdraw.go:362 +0x11
github.com/tailscale/walk.(*ownerDrawnMenuItemInfo).onDraw(0xc000177960, {0x1284100, 0xc0002f02c8}, 0xc7593ff260)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/menuownerdraw.go:564 +0x85
github.com/tailscale/walk.(*WindowBase).WndProc(0xc0002f02c8, 0x41580, 0x2b, 0x0, 0xc7593ff260)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/window.go:2639 +0x295
github.com/tailscale/walk.(*notifyIconWindow).WndProc(0xc0002f02c8, 0x41580, 0x2b, 0x0, 0xc7593ff260)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/notifyicon.go:74 +0x12d
github.com/tailscale/walk.defaultWndProc(0x41580, 0x2b, 0x0, 0xc7593ff260)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/window.go:2275 +0x28a
syscall.SyscallN(0x0?, {0xc000035240?, 0x0?, 0x179be20?})
        runtime/syscall_windows.go:544 +0x107
syscall.Syscall6(0x0?, 0x0?, 0xc0000352d0?, 0xb357ce?, 0xc0000352d8?, 0xc0000352e8?, 0xc000035310?, 0x0?)
        runtime/syscall_windows.go:488 +0x4a
github.com/tailscale/win.TrackPopupMenuEx(0xd110e, 0x4100, 0xa39, 0x846, 0x41580, 0x6d24d3874ae60f0e?)
        github.com/tailscale/win@v0.0.0-20240403170916-6580b55d49ca/user32.go:3476 +0x85
github.com/tailscale/walk.(*NotifyIcon).doContextMenu(0xc00003a780, 0x41580, 0xa39, 0x846)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/notifyicon.go:167 +0x85
github.com/tailscale/walk.(*NotifyIcon).ShowContextMenu(0xc00003a780, 0xa39, 0x846)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/notifyicon.go:152 +0x9c
tailscale.io/win/ui.(*app).notificationIconClicked(0xc0002e7188, 0xa39, 0x846, 0x0?)
        tailscale.io/win/ui/ui.go:1669 +0x31e
github.com/tailscale/walk.(*MouseEventPublisher).Publish(0xc00003a7c8, 0xa39, 0x846, 0x1)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/mouseevent.go:69 +0x77
github.com/tailscale/walk.(*NotifyIcon).wndProc(0xc00033fd48?, 0x0?, 0x0?, 0xc000035508?)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/notifyicon.go:107 +0xa8
github.com/tailscale/walk.(*notifyIconWindow).WndProc(0x1083500?, 0x41580, 0x41580?, 0x8460a39, 0x202)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/notifyicon.go:61 +0x77
github.com/tailscale/walk.defaultWndProc(0x41580, 0x400, 0x8460a39, 0x202)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/window.go:2275 +0x28a
syscall.SyscallN(0x1?, {0xc000035c10?, 0x179be20?, 0x11b87c0?})
        runtime/syscall_windows.go:544 +0x107
syscall.Syscall6(0x0?, 0xc000035ca0?, 0xb3306b?, 0xc0000f5500?, 0xc000035ca0?, 0xba9ce8?, 0x1083500?, 0xc0000f6e40?)
        runtime/syscall_windows.go:488 +0x4a
github.com/tailscale/win.GetMessage(0x0?, 0x0, 0x0, 0x0)
        github.com/tailscale/win@v0.0.0-20240403170916-6580b55d49ca/user32.go:2669 +0x6b
github.com/tailscale/walk.(*Application).runMainMessageLoop(0x179b220)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/application.go:415 +0x8a
github.com/tailscale/walk.(*Application).Run(0x179b220)
        github.com/tailscale/walk@v0.0.0-20240411225155-0fe267360a54/application.go:395 +0x2c
tailscale.io/win/ui.(*app).Run(0xc0002e7188)
        tailscale.io/win/ui/ui.go:1592 +0xe5
tailscale.io/win/ui.runUI({0xc00028a400, 0x40})
        tailscale.io/win/ui/ui.go:1583 +0x305
tailscale.io/win/ui.RunUI({0xc00028a400?, 0xc00028a3c0?})
        tailscale.io/win/ui/ui.go:1533 +0x18
tailscale.io/win/ui.Main()
        tailscale.io/win/ui/main.go:92 +0x82a
main.main()
        tailscale.io/win/gui/main.go:13 +0xf