Skip to content

fatal error: concurrent map read and map write #651

@dseven

Description

@dseven

I've been seeing a lot of "random reboots" lately. Currently running 0.2.5/0.4.5. I just captured the below (tailing last.log on the serial console)...

[83366.411115] vi_release 87
[83366.411130] venc_release 51
[83366.411225] vrgn_release, 111
[83366.411236] vsys_release, 27
[83366.418198] watchdog: watchdog0: watchdog did not stop!
2025-06-29T13:04:53Z ERR jetkvm usb keyboardHidFile is nil counter=18500 listener=keyboardEvents path=/dev/hidg0
fatal error: concurrent map read and map write

goroutine 1053 [running]:
internal/runtime/maps.fatal({0x9ead17, 0x21})
        runtime/panic.go:1058 +0x24
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).logWithSupression(0x1cd5268, {0x9d6983, 0x12}, 0x64, 0x1cf9180, {0x0, 0x0}, {0x9dbb71, 0x16}, {0x0, ...})
        github.com/jetkvm/kvm/internal/usbgadget/utils.go:85 +0x3c
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:146 +0x3ac
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1052
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 1 [chan receive, 1389 minutes]:
github.com/jetkvm/kvm.Main()
        github.com/jetkvm/kvm/main.go:127 +0x69c
main.main()
        ./main.go:8 +0x14

goroutine 9 [select]:
github.com/jetkvm/kvm/internal/logging.(*sseEvent).listen(0x1c0dbe0)
        github.com/jetkvm/kvm/internal/logging/sse.go:53 +0xa0
created by github.com/jetkvm/kvm/internal/logging.newSseServer in goroutine 1
        github.com/jetkvm/kvm/internal/logging/sse.go:44 +0x124

goroutine 50 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3ef28, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1de7658, 0x72, 0x1)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1de7640, 0x1f30a50)
        internal/poll/fd_unix.go:717 +0x154
os.(*rawConn).Read(0x1f84be0, 0x1f30a50)
        os/rawconn.go:31 +0x68
github.com/vishvananda/netlink/nl.(*NetlinkSocket).Receive(0x1e1cb40)
        github.com/vishvananda/netlink@v1.3.0/nl/nl_linux.go:821 +0x188
github.com/vishvananda/netlink.linkSubscribeAt.func2()
        github.com/vishvananda/netlink@v1.3.0/link_linux.go:2428 +0x68
created by github.com/vishvananda/netlink.linkSubscribeAt in goroutine 1
        github.com/vishvananda/netlink@v1.3.0/link_linux.go:2425 +0x2c4

goroutine 45 [select]:
github.com/jetkvm/kvm.runWatchdog()
        github.com/jetkvm/kvm/hw.go:74 +0x1a0
created by github.com/jetkvm/kvm.Main in goroutine 1
        github.com/jetkvm/kvm/main.go:33 +0x1f8

goroutine 49 [chan receive, 1389 minutes]:
github.com/vishvananda/netlink.linkSubscribeAt.func1()
        github.com/vishvananda/netlink@v1.3.0/link_linux.go:2412 +0x2c
created by github.com/vishvananda/netlink.linkSubscribeAt in goroutine 1
        github.com/vishvananda/netlink@v1.3.0/link_linux.go:2411 +0x134

goroutine 69 [IO wait, 9 minutes]:
internal/poll.runtime_pollWait(0xa6c3e9a8, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1ea01d8, 0x72, 0x1)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1ea01c0, {0x217df33, 0x10000, 0x10000})
        internal/poll/fd_unix.go:165 +0x22c
os.(*File).read(...)
        os/file_posix.go:29
os.(*File).Read(0x1e26c70, {0x217df33, 0x10000, 0x10000})
        os/file.go:124 +0x80
github.com/fsnotify/fsnotify.(*inotify).readEvents(0x1ded298)
        github.com/fsnotify/fsnotify@v1.9.0/backend_inotify.go:357 +0xf8
created by github.com/fsnotify/fsnotify.newBackend in goroutine 52
        github.com/fsnotify/fsnotify@v1.9.0/backend_inotify.go:155 +0x228

goroutine 52 [chan receive, 1389 minutes]:
github.com/jetkvm/kvm/internal/udhcpc.(*DHCPClient).Run(0x1e1cb10)
        github.com/jetkvm/kvm/internal/udhcpc/udhcpc.go:129 +0x2a4
created by github.com/jetkvm/kvm/internal/network.(*NetworkInterfaceState).Run in goroutine 1
        github.com/jetkvm/kvm/internal/network/netif_linux.go:31 +0x174

goroutine 214 [IO wait]:
internal/poll.runtime_pollWait(0xa6c3e428, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e068, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1f2e050, 0x1df68d0)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x1e264a0, 0x1df68d0)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x1ee81f0, 0x1df68a0, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x1d26c08, {0x1ffac00, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv6/payload_cmsg.go:31 +0x2e8
github.com/pion/mdns/v2.ipPacketConn6.ReadFrom({{0x1e172e0, 0x9}, 0x1d26c00, {0x1332600, 0x1cf8540}}, {0x1ffac00, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:833 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1e9a680, {0x9c6d88, 0x6}, {0x132fac8, 0x1d8eae0}, 0x5c0, 0x1cf8500)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func3()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1141 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 212
        github.com/pion/mdns/v2@v2.0.7/conn.go:1136 +0x1b8

goroutine 54 [select]:
github.com/jetkvm/kvm/internal/network.(*NetworkInterfaceState).Run.func1()
        github.com/jetkvm/kvm/internal/network/netif_linux.go:42 +0xe8
created by github.com/jetkvm/kvm/internal/network.(*NetworkInterfaceState).Run in goroutine 1
        github.com/jetkvm/kvm/internal/network/netif_linux.go:37 +0x1f4

goroutine 138 [IO wait, 35 minutes]:
internal/poll.runtime_pollWait(0xa6c3e798, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e478, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1f2e460, {0x1fbc000, 0x1000, 0x1000})
        internal/poll/fd_unix.go:165 +0x22c
net.(*netFD).Read(0x1f2e460, {0x1fbc000, 0x1000, 0x1000})
        net/fd_posix.go:55 +0x38
net.(*conn).Read(0x1f84d68, {0x1fbc000, 0x1000, 0x1000})
        net/net.go:194 +0x48
github.com/jetkvm/kvm.handleCtrlClient({0x1331e88, 0x1f84d68})
        github.com/jetkvm/kvm/native.go:194 +0x374
created by github.com/jetkvm/kvm.StartNativeSocketServer.func1 in goroutine 59
        github.com/jetkvm/kvm/native.go:156 +0x198

goroutine 212 [chan receive, 1389 minutes]:
github.com/pion/mdns/v2.(*Conn).start(0x1e9a680, 0x1f62580, 0x5c0, 0x1cf8500)
        github.com/pion/mdns/v2@v2.0.7/conn.go:1169 +0x36c
created by github.com/pion/mdns/v2.Server in goroutine 54
        github.com/pion/mdns/v2@v2.0.7/conn.go:347 +0x203c

goroutine 57 [sleep, 9 minutes]:
time.Sleep(0x34630b8a000)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/timesync.(*TimeSync).doTimeSync(0x1de7980)
        github.com/jetkvm/kvm/internal/timesync/timesync.go:147 +0x41c
created by github.com/jetkvm/kvm/internal/timesync.(*TimeSync).Start in goroutine 1
        github.com/jetkvm/kvm/internal/timesync/timesync.go:193 +0x58

goroutine 142 [chan receive, 1389 minutes]:
github.com/jetkvm/kvm.runWebSecureServer.func2()
        github.com/jetkvm/kvm/web_tls.go:173 +0x3c
created by github.com/jetkvm/kvm.runWebSecureServer in goroutine 133
        github.com/jetkvm/kvm/web_tls.go:172 +0x1e4

goroutine 59 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3ed18, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1e0f5f8, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x1e0f5e0)
        internal/poll/fd_unix.go:620 +0x284
net.(*netFD).accept(0x1e0f5e0)
        net/fd_unix.go:172 +0x20
net.(*UnixListener).accept(0x1d91b00)
        net/unixsock_posix.go:172 +0x20
net.(*UnixListener).Accept(0x1d91b00)
        net/unixsock.go:260 +0x30
github.com/jetkvm/kvm.StartNativeSocketServer.func1()
        github.com/jetkvm/kvm/native.go:139 +0x50
created by github.com/jetkvm/kvm.StartNativeSocketServer in goroutine 1
        github.com/jetkvm/kvm/native.go:137 +0x3f8

goroutine 131 [syscall, 1389 minutes]:
os/signal.signal_recv()
        runtime/sigqueue.go:152 +0x34
os/signal.loop()
        os/signal/signal_unix.go:23 +0x14
created by os/signal.Notify.func1.1 in goroutine 1
        os/signal/signal.go:152 +0x28

goroutine 61 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3ec68, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1e0f648, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x1e0f630)
        internal/poll/fd_unix.go:620 +0x284
net.(*netFD).accept(0x1e0f630)
        net/fd_unix.go:172 +0x20
net.(*UnixListener).accept(0x1d91b40)
        net/unixsock_posix.go:172 +0x20
net.(*UnixListener).Accept(0x1d91b40)
        net/unixsock.go:260 +0x30
github.com/jetkvm/kvm.StartNativeSocketServer.func1()
        github.com/jetkvm/kvm/native.go:139 +0x50
created by github.com/jetkvm/kvm.StartNativeSocketServer in goroutine 1
        github.com/jetkvm/kvm/native.go:137 +0x3f8

goroutine 133 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3e6e8, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e4c8, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x1f2e4b0)
        internal/poll/fd_unix.go:620 +0x284
net.(*netFD).accept(0x1f2e4b0)
        net/fd_unix.go:172 +0x20
net.(*TCPListener).accept(0x1e1d470)
        net/tcpsock_posix.go:159 +0x20
net.(*TCPListener).Accept(0x1e1d470)
        net/tcpsock.go:380 +0x30
crypto/tls.(*listener).Accept(0x1ee9e90)
        crypto/tls/tls.go:67 +0x28
net/http.(*Server).Serve(0x1f57818, {0x132f438, 0x1ee9e90})
        net/http/server.go:3424 +0x2dc
net/http.(*Server).ServeTLS(0x1f57818, {0x132f2b8, 0x1e1d470}, {0x0, 0x0}, {0x0, 0x0})
        net/http/server.go:3493 +0x2a0
net/http.(*Server).ListenAndServeTLS(0x1f57818, {0x0, 0x0}, {0x0, 0x0})
        net/http/server.go:3709 +0x104
github.com/jetkvm/kvm.runWebSecureServer()
        github.com/jetkvm/kvm/web_tls.go:182 +0x208
created by github.com/jetkvm/kvm.RunWebSecureServer in goroutine 123
        github.com/jetkvm/kvm/web_tls.go:210 +0x2c

goroutine 64 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3ebb8, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1de7ed8, 0x72, 0x1)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1de7ec0, {0x1eb6000, 0x8000, 0x8000})
        internal/poll/fd_unix.go:165 +0x22c
os.(*File).read(...)
        os/file_posix.go:29
os.(*File).Read(0x1e26b68, {0x1eb6000, 0x8000, 0x8000})
        os/file.go:124 +0x80
io.copyBuffer({0x132bedc, 0x1e26b48}, {0x132c1c0, 0x1e26c98}, {0x0, 0x0, 0x0})
        io/io.go:429 +0x218
io.Copy(...)
        io/io.go:388
os.genericWriteTo(0x1e26b68, {0x132bedc, 0x1e26b48})
        os/file.go:275 +0x64
os.(*File).WriteTo(0x1e26b68, {0x132bedc, 0x1e26b48})
        os/file.go:253 +0xe0
io.copyBuffer({0x132bedc, 0x1e26b48}, {0x132bf0c, 0x1e26b68}, {0x0, 0x0, 0x0})
        io/io.go:411 +0x1bc
io.Copy(...)
        io/io.go:388
os/exec.(*Cmd).writerDescriptor.func1()
        os/exec/exec.go:596 +0x50
os/exec.(*Cmd).Start.func2(0x1e15690)
        os/exec/exec.go:749 +0x30
created by os/exec.(*Cmd).Start in goroutine 63
        os/exec/exec.go:748 +0x8bc

goroutine 65 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3ea58, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1ea0058, 0x72, 0x1)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1ea0040, {0x1ebe000, 0x8000, 0x8000})
        internal/poll/fd_unix.go:165 +0x22c
os.(*File).read(...)
        os/file_posix.go:29
os.(*File).Read(0x1e26b88, {0x1ebe000, 0x8000, 0x8000})
        os/file.go:124 +0x80
io.copyBuffer({0x132bedc, 0x1e26b50}, {0x132c1c0, 0x1e26ca8}, {0x0, 0x0, 0x0})
        io/io.go:429 +0x218
io.Copy(...)
        io/io.go:388
os.genericWriteTo(0x1e26b88, {0x132bedc, 0x1e26b50})
        os/file.go:275 +0x64
os.(*File).WriteTo(0x1e26b88, {0x132bedc, 0x1e26b50})
        os/file.go:253 +0xe0
io.copyBuffer({0x132bedc, 0x1e26b50}, {0x132bf0c, 0x1e26b88}, {0x0, 0x0, 0x0})
        io/io.go:411 +0x1bc
io.Copy(...)
        io/io.go:388
os/exec.(*Cmd).writerDescriptor.func1()
        os/exec/exec.go:596 +0x50
os/exec.(*Cmd).Start.func2(0x1e156b0)
        os/exec/exec.go:749 +0x30
created by os/exec.(*Cmd).Start in goroutine 63
        os/exec/exec.go:748 +0x8bc

goroutine 66 [syscall, 1389 minutes]:
syscall.Syscall6(0x118, 0x3, 0x12, 0x1e876b0, 0x4, 0x1e18cd0, 0x0)
        syscall/syscall_linux.go:95 +0x8
internal/syscall/unix.Waitid(0x3, 0x12, 0x1e876b0, 0x4, 0x1e18cd0)
        internal/syscall/unix/waitid_linux.go:18 +0x58
os.(*Process).pidfdWait.func1(...)
        os/pidfd_linux.go:106
os.ignoringEINTR(...)
        os/file_posix.go:251
os.(*Process).pidfdWait(0x1e881b0)
        os/pidfd_linux.go:105 +0x168
os.(*Process).wait(0x1e881b0)
        os/exec_unix.go:27 +0x30
os.(*Process).Wait(...)
        os/exec.go:358
os/exec.(*Cmd).Wait(0x1d3e758)
        os/exec/exec.go:922 +0x38
github.com/jetkvm/kvm.superviseNativeBinary({0x9eb57c, 0x22})
        github.com/jetkvm/kvm/native.go:286 +0x8c
github.com/jetkvm/kvm.ExtractAndRunNativeBin.func1()
        github.com/jetkvm/kvm/native.go:323 +0x68
created by github.com/jetkvm/kvm.ExtractAndRunNativeBin in goroutine 63
        github.com/jetkvm/kvm/native.go:316 +0x1d0

goroutine 67 [chan receive, 1389 minutes]:
github.com/jetkvm/kvm.ExtractAndRunNativeBin.func2()
        github.com/jetkvm/kvm/native.go:333 +0x48
created by github.com/jetkvm/kvm.ExtractAndRunNativeBin in goroutine 63
        github.com/jetkvm/kvm/native.go:332 +0x218

goroutine 70 [select, 9 minutes]:
github.com/jetkvm/kvm/internal/udhcpc.(*DHCPClient).Run.func1()
        github.com/jetkvm/kvm/internal/udhcpc/udhcpc.go:85 +0xa4
created by github.com/jetkvm/kvm/internal/udhcpc.(*DHCPClient).Run in goroutine 52
        github.com/jetkvm/kvm/internal/udhcpc/udhcpc.go:83 +0x110

goroutine 123 [chan receive, 1389 minutes]:
github.com/jetkvm/kvm.RunWebSecureServer()
        github.com/jetkvm/kvm/web_tls.go:205 +0x40
created by github.com/jetkvm/kvm.Main in goroutine 1
        github.com/jetkvm/kvm/main.go:115 +0x60c

goroutine 122 [IO wait, 7 minutes]:
internal/poll.runtime_pollWait(0xa6c3e848, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e2e8, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x1f2e2d0)
        internal/poll/fd_unix.go:620 +0x284
net.(*netFD).accept(0x1f2e2d0)
        net/fd_unix.go:172 +0x20
net.(*TCPListener).accept(0x1e1d290)
        net/tcpsock_posix.go:159 +0x20
net.(*TCPListener).Accept(0x1e1d290)
        net/tcpsock.go:380 +0x30
net/http.(*Server).Serve(0x1f573f8, {0x132f2b8, 0x1e1d290})
        net/http/server.go:3424 +0x2dc
net/http.(*Server).ListenAndServe(0x1f573f8)
        net/http/server.go:3350 +0xa0
net/http.ListenAndServe(...)
        net/http/server.go:3665
github.com/gin-gonic/gin.(*Engine).Run(0x1cd5b28, {0x1c7efe4, 0x1, 0x1})
        github.com/gin-gonic/gin@v1.10.1/gin.go:402 +0x228
github.com/jetkvm/kvm.RunWebServer()
        github.com/jetkvm/kvm/web.go:544 +0x118
created by github.com/jetkvm/kvm.Main in goroutine 1
        github.com/jetkvm/kvm/main.go:113 +0x600

goroutine 1261 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1260
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 835 [IO wait]:
internal/poll.runtime_pollWait(0xa6c3e2c8, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1c83198, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1c83180, {0x1d69000, 0x1000, 0x1000})
        internal/poll/fd_unix.go:165 +0x22c
net.(*netFD).Read(0x1c83180, {0x1d69000, 0x1000, 0x1000})
        net/fd_posix.go:55 +0x38
net.(*conn).Read(0x1f850b8, {0x1d69000, 0x1000, 0x1000})
        net/net.go:194 +0x48
io.(*multiReader).Read(0x1ee8be0, {0x1d69000, 0x1000, 0x1000})
        io/multi.go:26 +0xb4
bufio.(*Reader).fill(0x1da4d50)
        bufio/bufio.go:113 +0x10c
bufio.(*Reader).ReadByte(0x1da4d50)
        bufio/bufio.go:273 +0x28
github.com/coder/websocket.readFrameHeader(0x1da4d50, {0x1d341bc, 0x8, 0x8})
        github.com/coder/websocket@v1.8.13/frame.go:55 +0x68
github.com/coder/websocket.(*Conn).readFrameHeader(0x1d34188, {0x132feb0, 0x1da4e40})
        github.com/coder/websocket@v1.8.13/read.go:264 +0xd8
github.com/coder/websocket.(*Conn).readLoop(0x1d34188, {0x132feb0, 0x1da4e40})
        github.com/coder/websocket@v1.8.13/read.go:185 +0x3c
github.com/coder/websocket.(*Conn).reader(0x1d34188, {0x132feb0, 0x1da4e40})
        github.com/coder/websocket@v1.8.13/read.go:379 +0xec
github.com/coder/websocket.(*Conn).Reader(...)
        github.com/coder/websocket@v1.8.13/read.go:37
github.com/coder/websocket.(*Conn).Read(0x1d34188, {0x132feb0, 0x1da4e40})
        github.com/coder/websocket@v1.8.13/read.go:43 +0x30
github.com/jetkvm/kvm.handleWebRTCSignalWsMessages(0x1d34188, 0x0, {0x1f82500, 0x9}, {0x1e88ed0, 0x24}, 0x1c62280)
        github.com/jetkvm/kvm/web.go:349 +0x4b0
github.com/jetkvm/kvm.handleLocalWebRTCSignal(0x1f70a08)
        github.com/jetkvm/kvm/web.go:254 +0x830
github.com/gin-gonic/gin.(*Context).Next(0x1f70a08)
        github.com/gin-gonic/gin@v1.10.1/context.go:185 +0x38
github.com/jetkvm/kvm.setupRouter.protectedMiddleware.func19(0x1f70a08)
        github.com/jetkvm/kvm/web.go:476 +0x180
github.com/gin-gonic/gin.(*Context).Next(...)
        github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/jetkvm/kvm.setupRouter.func2(0x1f70a08)
        github.com/jetkvm/kvm/web.go:91 +0x9c
github.com/gin-gonic/gin.(*Context).Next(...)
        github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-contrib/logger.SetLogger.func1(0x1f70a08)
        github.com/gin-contrib/logger@v1.2.6/logger.go:177 +0x3e4
github.com/gin-gonic/gin.(*Context).Next(...)
        github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1(0x1f70a08)
        github.com/gin-gonic/gin@v1.10.1/recovery.go:102 +0x78
github.com/gin-gonic/gin.(*Context).Next(...)
        github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1(0x1f70a08)
        github.com/gin-gonic/gin@v1.10.1/logger.go:249 +0xa4
github.com/gin-gonic/gin.(*Context).Next(...)
        github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0x1cd5b28, 0x1f70a08)
        github.com/gin-gonic/gin@v1.10.1/gin.go:644 +0x76c
github.com/gin-gonic/gin.(*Engine).ServeHTTP(0x1cd5b28, {0x132f3f0, 0x1f71188}, 0x1dedd98)
        github.com/gin-gonic/gin@v1.10.1/gin.go:600 +0x1a4
net/http.serverHandler.ServeHTTP({0x1f573f8}, {0x132f3f0, 0x1f71188}, 0x1dedd98)
        net/http/server.go:3301 +0xe0
net/http.(*conn).serve(0x1dbfbc0, {0x132fe94, 0x1f31038})
        net/http/server.go:2102 +0x670
created by net/http.(*Server).Serve in goroutine 122
        net/http/server.go:3454 +0x430

goroutine 120 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3e8f8, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f5ef58, 0x72, 0x1)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1f5ef40, {0x1e83fb4, 0x18, 0x18})
        internal/poll/fd_unix.go:165 +0x22c
os.(*File).read(...)
        os/file_posix.go:29
os.(*File).Read(0x1f84448, {0x1e83fb4, 0x18, 0x18})
        os/file.go:124 +0x80
github.com/jetkvm/kvm.watchTsEvents()
        github.com/jetkvm/kvm/display.go:321 +0x12c
created by github.com/jetkvm/kvm.initDisplay in goroutine 1
        github.com/jetkvm/kvm/display.go:394 +0x28

goroutine 129 [sleep]:
time.Sleep(0x12a05f200)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm.RunWebsocketClient()
        github.com/jetkvm/kvm/cloud.go:487 +0x218
created by github.com/jetkvm/kvm.Main in goroutine 1
        github.com/jetkvm/kvm/main.go:122 +0x630

goroutine 118 [sleep]:
time.Sleep(0x4a817c800)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm.runJiggler()
        github.com/jetkvm/kvm/jiggler.go:37 +0x28
created by github.com/jetkvm/kvm.initJiggler in goroutine 1
        github.com/jetkvm/kvm/jiggler.go:19 +0x1c

goroutine 111 [sleep]:
time.Sleep(0x1dcd6500)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm.initUsbGadget.func1()
        github.com/jetkvm/kvm/usb.go:24 +0x28
created by github.com/jetkvm/kvm.initUsbGadget in goroutine 1
        github.com/jetkvm/kvm/usb.go:21 +0x90

goroutine 112 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 145 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3e638, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e568, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1f2e550, {0x2000000, 0xfd200, 0xfd200})
        internal/poll/fd_unix.go:165 +0x22c
net.(*netFD).Read(0x1f2e550, {0x2000000, 0xfd200, 0xfd200})
        net/fd_posix.go:55 +0x38
net.(*conn).Read(0x1f85138, {0x2000000, 0xfd200, 0xfd200})
        net/net.go:194 +0x48
github.com/jetkvm/kvm.handleVideoClient({0x1331e88, 0x1f85138})
        github.com/jetkvm/kvm/native.go:237 +0x2c0
created by github.com/jetkvm/kvm.StartNativeSocketServer.func1 in goroutine 61
        github.com/jetkvm/kvm/native.go:156 +0x198

goroutine 153 [chan receive, 33 minutes]:
github.com/jetkvm/kvm.startBacklightTickers.func1()
        github.com/jetkvm/kvm/display.go:358 +0x2c
created by github.com/jetkvm/kvm.startBacklightTickers in goroutine 119
        github.com/jetkvm/kvm/display.go:355 +0x130

goroutine 1175 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1174
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 155 [chan receive, 5 minutes]:
github.com/jetkvm/kvm.startBacklightTickers.func2()
        github.com/jetkvm/kvm/display.go:372 +0x2c
created by github.com/jetkvm/kvm.startBacklightTickers in goroutine 119
        github.com/jetkvm/kvm/display.go:369 +0x1ec

goroutine 215 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3e4d8, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e0b8, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1f2e0a0, 0x1d26f00)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x1e264c0, 0x1d26f00)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x1ee8270, 0x1d26ea0, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x1d26c38, {0x1ffb200, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv4/payload_cmsg.go:31 +0x44c
github.com/pion/mdns/v2.ipPacketConn4.ReadFrom({{0x1e172e0, 0x9}, 0x1d26c30, {0x1332600, 0x1cf8540}}, {0x1ffb200, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:801 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1e9a680, {0x9c0b38, 0x4}, {0x132fab0, 0x1d8eb28}, 0x5c0, 0x1cf8500)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func4()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1151 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 212
        github.com/pion/mdns/v2@v2.0.7/conn.go:1146 +0x258

goroutine 941 [sync.Cond.Wait, 5 minutes]:
sync.runtime_notifyListWait(0x2119928, 0x12)
        runtime/sema.go:597 +0x1e4
sync.(*Cond).Wait(0x2119920)
        sync/cond.go:71 +0xbc
github.com/pion/sctp.(*Stream).ReadSCTP(0x1c9aa00, {0x1ed6000, 0xffff, 0xffff})
        github.com/pion/sctp@v1.8.39/stream.go:149 +0xac
github.com/pion/datachannel.(*DataChannel).ReadDataChannel(0x1dbf860, {0x1ed6000, 0xffff, 0xffff})
        github.com/pion/datachannel@v1.5.10/datachannel.go:206 +0x38
github.com/pion/webrtc/v4.(*DataChannel).readLoop(0x1d6d978)
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:408 +0x94
created by github.com/pion/webrtc/v4.(*DataChannel).handleOpen in goroutine 932
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:371 +0x26c

goroutine 1273 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1272
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 838 [select]:
github.com/coder/websocket.(*Conn).timeoutLoop(0x1d34188)
        github.com/coder/websocket@v1.8.13/conn.go:186 +0x144
created by github.com/coder/websocket.newConn in goroutine 835
        github.com/coder/websocket@v1.8.13/conn.go:148 +0x5c8

goroutine 216 [IO wait, 1389 minutes]:
internal/poll.runtime_pollWait(0xa6c3e588, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e108, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1f2e0f0, 0x1d26cf0)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x1e264d8, 0x1d26cf0)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x1ee8280, 0x1d26cc0, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x1d26c98, {0x1e97800, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv6/payload_cmsg.go:31 +0x2e8
github.com/pion/mdns/v2.ipPacketConn6.ReadFrom({{0x1e172e0, 0x9}, 0x1d26c90, {0x1332600, 0x1cf8540}}, {0x1e97800, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:833 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1e9a680, {0x9c0b34, 0x4}, {0x132fac8, 0x1d8eb70}, 0x5c0, 0x1cf8500)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func5()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1161 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 212
        github.com/pion/mdns/v2@v2.0.7/conn.go:1156 +0x2f8

goroutine 845 [select]:
github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).loop(0x1c83400, {0x132ca50, 0x1c24720})
        github.com/pion/interceptor@v0.1.40/pkg/report/receiver_interceptor.go:100 +0x158
created by github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).BindRTCPWriter in goroutine 835
        github.com/pion/interceptor@v0.1.40/pkg/report/receiver_interceptor.go:89 +0x10c

goroutine 213 [IO wait]:
internal/poll.runtime_pollWait(0xa6c3e378, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2e018, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1f2e000, 0x1df6810)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x1e26488, 0x1df6810)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x1ee81e0, 0x1df67e0, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x1d26bd8, {0x1ffa000, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv4/payload_cmsg.go:31 +0x44c
github.com/pion/mdns/v2.ipPacketConn4.ReadFrom({{0x1e172e0, 0x9}, 0x1d26bd0, {0x1332600, 0x1cf8540}}, {0x1ffa000, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:801 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1e9a680, {0x9c6d8e, 0x6}, {0x132fab0, 0x1d8ea98}, 0x5c0, 0x1cf8500)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func2()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1131 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 212
        github.com/pion/mdns/v2@v2.0.7/conn.go:1126 +0x10c

goroutine 1154 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1153
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 1186 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1185
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 849 [select, 35 minutes]:
github.com/pion/transport/v3/packetio.(*Buffer).Read(0x1c63ac0, {0x1ffa600, 0x5dc, 0x5dc})
        github.com/pion/transport/v3@v3.0.7/packetio/buffer.go:255 +0x144
github.com/pion/srtp/v3.(*ReadStreamSRTCP).Read(...)
        github.com/pion/srtp/v3@v3.0.5/stream_srtcp.go:66
github.com/pion/webrtc/v4.(*srtpWriterFuture).Read(0x1da4840, {0x1ffa600, 0x5dc, 0x5dc})
        github.com/pion/webrtc/v4@v4.0.16/srtp_writer_future.go:98 +0x68
github.com/pion/webrtc/v4.(*srtpWriterFuture).Read(0x1da4840, {0x1ffa600, 0x5dc, 0x5dc})
        github.com/pion/webrtc/v4@v4.0.16/srtp_writer_future.go:105 +0x108
github.com/pion/webrtc/v4.(*RTPSender).Send.func1({0x1ffa600, 0x5dc, 0x5dc}, 0x0)
        github.com/pion/webrtc/v4@v4.0.16/rtpsender.go:329 +0x38
github.com/pion/interceptor.RTCPReaderFunc.Read(0x2108978, {0x1ffa600, 0x5dc, 0x5dc}, 0x0)
        github.com/pion/interceptor@v0.1.40/interceptor.go:102 +0x3c
github.com/pion/interceptor/pkg/nack.(*ResponderInterceptor).BindRTCPReader.func1({0x1ffa600, 0x5dc, 0x5dc}, 0x0)
        github.com/pion/interceptor@v0.1.40/pkg/nack/responder_interceptor.go:74 +0x4c
github.com/pion/interceptor.RTCPReaderFunc.Read(0x2106a40, {0x1ffa600, 0x5dc, 0x5dc}, 0x0)
        github.com/pion/interceptor@v0.1.40/interceptor.go:102 +0x3c
github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).BindRTCPReader.func1({0x1ffa600, 0x5dc, 0x5dc}, 0x0)
        github.com/pion/interceptor@v0.1.40/pkg/report/receiver_interceptor.go:158 +0x4c
github.com/pion/interceptor.RTCPReaderFunc.Read(0x2106a50, {0x1ffa600, 0x5dc, 0x5dc}, 0x0)
        github.com/pion/interceptor@v0.1.40/interceptor.go:102 +0x3c
github.com/pion/webrtc/v4.(*RTPSender).Read(0x1c822d0, {0x1ffa600, 0x5dc, 0x5dc})
        github.com/pion/webrtc/v4@v4.0.16/rtpsender.go:414 +0xbc
github.com/jetkvm/kvm.newSession.func2()
        github.com/jetkvm/kvm/webrtc.go:150 +0x5c
created by github.com/jetkvm/kvm.newSession in goroutine 835
        github.com/jetkvm/kvm/webrtc.go:147 +0x784

goroutine 846 [select]:
github.com/pion/interceptor/pkg/report.(*SenderInterceptor).loop(0x1c81320, {0x132ca50, 0x1c24720})
        github.com/pion/interceptor@v0.1.40/pkg/report/sender_interceptor.go:116 +0x1ac
created by github.com/pion/interceptor/pkg/report.(*SenderInterceptor).BindRTCPWriter in goroutine 835
        github.com/pion/interceptor@v0.1.40/pkg/report/sender_interceptor.go:100 +0x10c

goroutine 844 [select]:
github.com/pion/interceptor/pkg/nack.(*GeneratorInterceptor).loop(0x1c833b0, {0x132ca50, 0x1c24720})
        github.com/pion/interceptor@v0.1.40/pkg/nack/generator_interceptor.go:154 +0x190
created by github.com/pion/interceptor/pkg/nack.(*GeneratorInterceptor).BindRTCPWriter in goroutine 835
        github.com/pion/interceptor@v0.1.40/pkg/nack/generator_interceptor.go:83 +0x10c

goroutine 852 [chan receive, 35 minutes]:
github.com/pion/mdns/v2.(*Conn).start(0x1c9aa80, 0x1f45500, 0x5c0, 0x1de77c0)
        github.com/pion/mdns/v2@v2.0.7/conn.go:1169 +0x36c
created by github.com/pion/mdns/v2.Server in goroutine 835
        github.com/pion/mdns/v2@v2.0.7/conn.go:347 +0x203c

goroutine 847 [select, 35 minutes]:
github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).loop(0x1c834a0, {0x132ca50, 0x1c24720})
        github.com/pion/interceptor@v0.1.40/pkg/twcc/sender_interceptor.go:190 +0xac
created by github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).BindRTCPWriter in goroutine 835
        github.com/pion/interceptor@v0.1.40/pkg/twcc/sender_interceptor.go:94 +0x15c

goroutine 1143 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1142
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 842 [sleep]:
time.Sleep(0x37e11d600)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm.handleWebRTCSignalWsMessages.func2()
        github.com/jetkvm/kvm/web.go:294 +0x70
created by github.com/jetkvm/kvm.handleWebRTCSignalWsMessages in goroutine 835
        github.com/jetkvm/kvm/web.go:292 +0x3d8

goroutine 853 [IO wait]:
internal/poll.runtime_pollWait(0xa6c3e168, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1c82d38, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1c82d20, 0x1df67b0)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x21080c0, 0x1df67b0)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x21063c0, 0x1df6780, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x1da4308, {0x1e96000, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv4/payload_cmsg.go:31 +0x44c
github.com/pion/mdns/v2.ipPacketConn4.ReadFrom({{0x1f9ca60, 0x9}, 0x1da4300, {0x1332600, 0x1de7800}}, {0x1e96000, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:801 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1c9aa80, {0x9c6d8e, 0x6}, {0x132fab0, 0x1e21308}, 0x5c0, 0x1de77c0)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func2()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1131 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 852
        github.com/pion/mdns/v2@v2.0.7/conn.go:1126 +0x10c

goroutine 854 [IO wait]:
internal/poll.runtime_pollWait(0xa6bcf040, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1c82d88, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1c82d70, 0x1df6870)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x21080d0, 0x1df6870)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x21063d0, 0x1df6840, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x1da4338, {0x1e96600, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv6/payload_cmsg.go:31 +0x2e8
github.com/pion/mdns/v2.ipPacketConn6.ReadFrom({{0x1f9ca60, 0x9}, 0x1da4330, {0x1332600, 0x1de7800}}, {0x1e96600, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:833 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1c9aa80, {0x9c6d88, 0x6}, {0x132fac8, 0x1e21350}, 0x5c0, 0x1de77c0)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func3()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1141 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 852
        github.com/pion/mdns/v2@v2.0.7/conn.go:1136 +0x1b8

goroutine 855 [IO wait, 35 minutes]:
internal/poll.runtime_pollWait(0xa6bcef90, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1c82dd8, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1c82dc0, 0x1da4540)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x21080f0, 0x1da4540)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x21063e0, 0x1da4510, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x1da4368, {0x1e96c00, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv4/payload_cmsg.go:31 +0x44c
github.com/pion/mdns/v2.ipPacketConn4.ReadFrom({{0x1f9ca60, 0x9}, 0x1da4360, {0x1332600, 0x1de7800}}, {0x1e96c00, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:801 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1c9aa80, {0x9c0b38, 0x4}, {0x132fab0, 0x1e21398}, 0x5c0, 0x1de77c0)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func4()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1151 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 852
        github.com/pion/mdns/v2@v2.0.7/conn.go:1146 +0x258

goroutine 856 [IO wait, 35 minutes]:
internal/poll.runtime_pollWait(0xa6bceee0, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1c82e28, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1c82e10, 0x1da4420)
        internal/poll/fd_unix.go:717 +0x154
net.(*rawConn).Read(0x2108108, 0x1da4420)
        net/rawconn.go:44 +0x38
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x21063f0, 0x1da43f0, 0x0)
        golang.org/x/net@v0.41.0/internal/socket/rawconn_msg.go:27 +0x134
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        golang.org/x/net@v0.41.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x1da43c8, {0x1ffb800, 0x5c0, 0x5c0})
        golang.org/x/net@v0.41.0/ipv6/payload_cmsg.go:31 +0x2e8
github.com/pion/mdns/v2.ipPacketConn6.ReadFrom({{0x1f9ca60, 0x9}, 0x1da43c0, {0x1332600, 0x1de7800}}, {0x1ffb800, 0x5c0, 0x5c0})
        github.com/pion/mdns/v2@v2.0.7/conn.go:833 +0x3c
github.com/pion/mdns/v2.(*Conn).readLoop(0x1c9aa80, {0x9c0b34, 0x4}, {0x132fac8, 0x1e213e0}, 0x5c0, 0x1de77c0)
        github.com/pion/mdns/v2@v2.0.7/conn.go:863 +0x70
github.com/pion/mdns/v2.(*Conn).start.func5()
        github.com/pion/mdns/v2@v2.0.7/conn.go:1161 +0xa8
created by github.com/pion/mdns/v2.(*Conn).start in goroutine 852
        github.com/pion/mdns/v2@v2.0.7/conn.go:1156 +0x2f8

goroutine 857 [select]:
github.com/pion/ice/v4/internal/taskloop.(*Loop).runLoop(0x1e21470, 0x21081d8)
        github.com/pion/ice/v4@v4.0.10/internal/taskloop/taskloop.go:55 +0xe8
created by github.com/pion/ice/v4/internal/taskloop.New in goroutine 835
        github.com/pion/ice/v4@v4.0.10/internal/taskloop/taskloop.go:42 +0x118

goroutine 862 [select, 35 minutes]:
context.(*cancelCtx).propagateCancel.func2()
        context/context.go:514 +0xac
created by context.(*cancelCtx).propagateCancel in goroutine 857
        context/context.go:513 +0x264

goroutine 890 [IO wait]:
internal/poll.runtime_pollWait(0xa6bced80, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2f058, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadFromInet6(0x1f2f040, {0x21b0000, 0x2000, 0x2000}, 0x2197e8c)
        internal/poll/fd_unix.go:275 +0x220
net.(*netFD).readFromInet6(0x1f2f040, {0x21b0000, 0x2000, 0x2000}, 0x2197e8c)
        net/fd_posix.go:72 +0x40
net.(*UDPConn).readFrom(0x219a340, {0x21b0000, 0x2000, 0x2000}, 0x1e21758)
        net/udpsock_posix.go:59 +0x78
net.(*UDPConn).readFromUDP(0x219a340, {0x21b0000, 0x2000, 0x2000}, 0x1e21758)
        net/udpsock.go:149 +0x48
net.(*UDPConn).ReadFrom(0x219a340, {0x21b0000, 0x2000, 0x2000})
        net/udpsock.go:158 +0x48
github.com/pion/ice/v4.(*candidateBase).recvLoop(0x1c9b700, 0x1f45280)
        github.com/pion/ice/v4@v4.0.10/candidate_base.go:244 +0x1c8
created by github.com/pion/ice/v4.(*candidateBase).start in goroutine 857
        github.com/pion/ice/v4@v4.0.10/candidate_base.go:216 +0x158

goroutine 917 [chan receive, 35 minutes]:
github.com/pion/srtp/v3.(*SessionSRTP).AcceptStream(0x1d0af50)
        github.com/pion/srtp/v3@v3.0.5/session_srtp.go:99 +0x38
github.com/pion/webrtc/v4.(*PeerConnection).undeclaredRTPMediaProcessor(0x1cab548)
        github.com/pion/webrtc/v4@v4.0.16/peerconnection.go:1871 +0xe0
created by github.com/pion/webrtc/v4.(*PeerConnection).undeclaredMediaProcessor in goroutine 851
        github.com/pion/webrtc/v4@v4.0.16/peerconnection.go:1850 +0x58

goroutine 861 [select]:
github.com/pion/ice/v4.(*Agent).connectivityChecks(0x1f804e8)
        github.com/pion/ice/v4@v4.0.10/agent.go:431 +0x334
created by github.com/pion/ice/v4.(*Agent).startConnectivityChecks.func1 in goroutine 857
        github.com/pion/ice/v4@v4.0.10/agent.go:366 +0x270

goroutine 918 [chan receive, 35 minutes]:
github.com/pion/srtp/v3.(*SessionSRTCP).AcceptStream(0x1d0afc0)
        github.com/pion/srtp/v3@v3.0.5/session_srtcp.go:98 +0x38
github.com/pion/webrtc/v4.(*PeerConnection).undeclaredRTCPMediaProcessor(0x1cab548)
        github.com/pion/webrtc/v4@v4.0.16/peerconnection.go:1936 +0xb8
created by github.com/pion/webrtc/v4.(*PeerConnection).undeclaredMediaProcessor in goroutine 851
        github.com/pion/webrtc/v4@v4.0.16/peerconnection.go:1851 +0xa0

goroutine 1354 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1353
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 1544 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1543
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 932 [chan receive, 35 minutes]:
github.com/pion/sctp.(*Association).AcceptStream(...)
        github.com/pion/sctp@v1.8.39/association.go:1613
github.com/pion/datachannel.Accept(0x1ca8848, 0x2192fb0, {0x1886bc0, 0x0, 0x0})
        github.com/pion/datachannel@v1.5.10/datachannel.go:139 +0x30
github.com/pion/webrtc/v4.(*SCTPTransport).acceptDataChannels(0x1d0ac40, 0x1ca8848, {0x1886bc0, 0x0, 0x0})
        github.com/pion/webrtc/v4@v4.0.16/sctptransport.go:190 +0x19c
created by github.com/pion/webrtc/v4.(*SCTPTransport).Start in goroutine 851
        github.com/pion/webrtc/v4@v4.0.16/sctptransport.go:152 +0x460

goroutine 920 [select]:
github.com/pion/sctp.(*Association).writeLoop(0x1ca8848)
        github.com/pion/sctp@v1.8.39/association.go:678 +0x19c
created by github.com/pion/sctp.(*Association).init in goroutine 851
        github.com/pion/sctp@v1.8.39/association.go:423 +0xe8

goroutine 914 [select, 35 minutes]:
github.com/pion/transport/v3/packetio.(*Buffer).Read(0x1ea1480, {0x21e6000, 0x2000, 0x2000})
        github.com/pion/transport/v3@v3.0.7/packetio/buffer.go:255 +0x144
github.com/pion/webrtc/v4/internal/mux.(*Endpoint).Read(0x2106740, {0x21e6000, 0x2000, 0x2000})
        github.com/pion/webrtc/v4@v4.0.16/internal/mux/endpoint.go:45 +0x38
github.com/pion/srtp/v3.(*session).start.func1()
        github.com/pion/srtp/v3@v3.0.5/session.go:150 +0xac
created by github.com/pion/srtp/v3.(*session).start in goroutine 851
        github.com/pion/srtp/v3@v3.0.5/session.go:137 +0x26c

goroutine 909 [select]:
github.com/pion/transport/v3/packetio.(*Buffer).Read(0x1ea1400, {0x21b4000, 0x2000, 0x2000})
        github.com/pion/transport/v3@v3.0.7/packetio/buffer.go:255 +0x144
github.com/pion/webrtc/v4/internal/mux.(*Endpoint).Read(...)
        github.com/pion/webrtc/v4@v4.0.16/internal/mux/endpoint.go:45
github.com/pion/webrtc/v4/internal/mux.(*Endpoint).ReadFrom(0x2106720, {0x21b4000, 0x2000, 0x2000})
        github.com/pion/webrtc/v4@v4.0.16/internal/mux/endpoint.go:51 +0x3c
github.com/pion/transport/v3/netctx.(*packetConn).ReadFromContext(0x1da5860, {0x132feb0, 0x1da58f0}, {0x21b4000, 0x2000, 0x2000})
        github.com/pion/transport/v3@v3.0.7/netctx/packetconn.go:91 +0x1b8
github.com/pion/dtls/v3.(*Conn).readAndBuffer(0x1cacb48, {0x132feb0, 0x1da58f0})
        github.com/pion/dtls/v3@v3.0.6/conn.go:743 +0xc4
github.com/pion/dtls/v3.(*Conn).handshake.func3()
        github.com/pion/dtls/v3@v3.0.6/conn.go:1145 +0xac
created by github.com/pion/dtls/v3.(*Conn).handshake in goroutine 851
        github.com/pion/dtls/v3@v3.0.6/conn.go:1132 +0x3a0

goroutine 908 [select, 35 minutes]:
github.com/pion/dtls/v3.(*handshakeFSM).finish(0x1da58c0, {0x132feb0, 0x1da5920}, {0x1331580, 0x1cacb48})
        github.com/pion/dtls/v3@v3.0.6/handshaker.go:351 +0xac
github.com/pion/dtls/v3.(*handshakeFSM).Run(0x1da58c0, {0x132feb0, 0x1da5920}, {0x1331580, 0x1cacb48}, 0x1)
        github.com/pion/dtls/v3@v3.0.6/handshaker.go:202 +0x3f0
github.com/pion/dtls/v3.(*Conn).handshake.func2()
        github.com/pion/dtls/v3@v3.0.6/conn.go:1124 +0x7c
created by github.com/pion/dtls/v3.(*Conn).handshake in goroutine 851
        github.com/pion/dtls/v3@v3.0.6/conn.go:1122 +0x310

goroutine 915 [select, 35 minutes]:
github.com/pion/transport/v3/packetio.(*Buffer).Read(0x1ea1500, {0x21e8000, 0x2000, 0x2000})
        github.com/pion/transport/v3@v3.0.7/packetio/buffer.go:255 +0x144
github.com/pion/webrtc/v4/internal/mux.(*Endpoint).Read(0x2106760, {0x21e8000, 0x2000, 0x2000})
        github.com/pion/webrtc/v4@v4.0.16/internal/mux/endpoint.go:45 +0x38
github.com/pion/srtp/v3.(*session).start.func1()
        github.com/pion/srtp/v3@v3.0.5/session.go:150 +0xac
created by github.com/pion/srtp/v3.(*session).start in goroutine 851
        github.com/pion/srtp/v3@v3.0.5/session.go:137 +0x26c

goroutine 1535 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1534
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 1042 [runnable]:
internal/runtime/maps.(*Map).putSlotSmallFastStr(0x1d91cc0, 0x8f0ba0, 0x90ce5a44, {0x9d6983, 0x12})
        internal/runtime/maps/runtime_faststr_swiss.go:220 +0x310
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).logWithSupression(0x1cd5268, {0x9d6983, 0x12}, 0x64, 0x1cf8180, {0x0, 0x0}, {0x9dbb71, 0x16}, {0x0, ...})
        github.com/jetkvm/kvm/internal/usbgadget/utils.go:88 +0x70
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:146 +0x3ac
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1041
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 919 [select]:
github.com/pion/dtls/v3.(*Conn).Read(0x1cacb48, {0x21ea000, 0x2000, 0x2000})
        github.com/pion/dtls/v3@v3.0.6/conn.go:371 +0x11c
github.com/pion/sctp.(*Association).readLoop(0x1ca8848)
        github.com/pion/sctp@v1.8.39/association.go:625 +0x140
created by github.com/pion/sctp.(*Association).init in goroutine 851
        github.com/pion/sctp@v1.8.39/association.go:422 +0xa0

goroutine 891 [IO wait, 35 minutes]:
internal/poll.runtime_pollWait(0xa6bcecd0, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2f0a8, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadFromInet6(0x1f2f090, {0x21b2000, 0x2000, 0x2000}, 0x1f36e8c)
        internal/poll/fd_unix.go:275 +0x220
net.(*netFD).readFromInet6(0x1f2f090, {0x21b2000, 0x2000, 0x2000}, 0x1f36e8c)
        net/fd_posix.go:72 +0x40
net.(*UDPConn).readFrom(0x219a358, {0x21b2000, 0x2000, 0x2000}, 0x2142ae0)
        net/udpsock_posix.go:59 +0x78
net.(*UDPConn).readFromUDP(0x219a358, {0x21b2000, 0x2000, 0x2000}, 0x2142ae0)
        net/udpsock.go:149 +0x48
net.(*UDPConn).ReadFrom(0x219a358, {0x21b2000, 0x2000, 0x2000})
        net/udpsock.go:158 +0x48
github.com/pion/ice/v4.(*candidateBase).recvLoop(0x1c9b780, 0x1f45280)
        github.com/pion/ice/v4@v4.0.10/candidate_base.go:244 +0x1c8
created by github.com/pion/ice/v4.(*candidateBase).start in goroutine 857
        github.com/pion/ice/v4@v4.0.10/candidate_base.go:216 +0x158

goroutine 1638 [select]:
github.com/pion/transport/v3/netctx.(*packetConn).ReadFromContext.func1()
        github.com/pion/transport/v3@v3.0.7/netctx/packetconn.go:76 +0xc0
created by github.com/pion/transport/v3/netctx.(*packetConn).ReadFromContext in goroutine 909
        github.com/pion/transport/v3@v3.0.7/netctx/packetconn.go:74 +0x188

goroutine 888 [IO wait, 35 minutes]:
internal/poll.runtime_pollWait(0xa6bcee30, 0x72)
        runtime/netpoll.go:351 +0x54
internal/poll.(*pollDesc).wait(0x1f2f008, 0x72, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x30
internal/poll.(*pollDesc).waitRead(...)
        internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).ReadFromInet4(0x1f2eff0, {0x1dbc000, 0x2000, 0x2000}, 0x2198ec0)
        internal/poll/fd_unix.go:248 +0x220
net.(*netFD).readFromInet4(0x1f2eff0, {0x1dbc000, 0x2000, 0x2000}, 0x2198ec0)
        net/fd_posix.go:66 +0x40
net.(*UDPConn).readFrom(0x219a320, {0x1dbc000, 0x2000, 0x2000}, 0x1d1e0c0)
        net/udpsock_posix.go:52 +0x19c
net.(*UDPConn).readFromUDP(0x219a320, {0x1dbc000, 0x2000, 0x2000}, 0x1d1e0c0)
        net/udpsock.go:149 +0x48
net.(*UDPConn).ReadFrom(0x219a320, {0x1dbc000, 0x2000, 0x2000})
        net/udpsock.go:158 +0x48
github.com/pion/ice/v4.(*candidateBase).recvLoop(0x1c9b680, 0x1f45280)
        github.com/pion/ice/v4@v4.0.10/candidate_base.go:244 +0x1c8
created by github.com/pion/ice/v4.(*candidateBase).start in goroutine 857
        github.com/pion/ice/v4@v4.0.10/candidate_base.go:216 +0x158

goroutine 904 [select]:
github.com/pion/transport/v3/packetio.(*Buffer).Read(0x1de6fc0, {0x21b6000, 0x5dc, 0x5dc})
        github.com/pion/transport/v3@v3.0.7/packetio/buffer.go:255 +0x144
github.com/pion/ice/v4.(*Conn).Read(0x2143128, {0x21b6000, 0x5dc, 0x5dc})
        github.com/pion/ice/v4@v4.0.10/transport.go:76 +0xa0
github.com/pion/webrtc/v4/internal/mux.(*Mux).readLoop(0x1ea1380)
        github.com/pion/webrtc/v4@v4.0.16/internal/mux/mux.go:122 +0x9c
created by github.com/pion/webrtc/v4/internal/mux.NewMux in goroutine 851
        github.com/pion/webrtc/v4@v4.0.16/internal/mux/mux.go:58 +0x14c

goroutine 944 [sync.Cond.Wait, 35 minutes]:
sync.runtime_notifyListWait(0x21199e8, 0x0)
        runtime/sema.go:597 +0x1e4
sync.(*Cond).Wait(0x21199e0)
        sync/cond.go:71 +0xbc
github.com/pion/sctp.(*Stream).ReadSCTP(0x1c9ab00, {0x1efe000, 0xffff, 0xffff})
        github.com/pion/sctp@v1.8.39/stream.go:149 +0xac
github.com/pion/datachannel.(*DataChannel).ReadDataChannel(0x1dbf920, {0x1efe000, 0xffff, 0xffff})
        github.com/pion/datachannel@v1.5.10/datachannel.go:206 +0x38
github.com/pion/webrtc/v4.(*DataChannel).readLoop(0x1d6dad8)
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:408 +0x94
created by github.com/pion/webrtc/v4.(*DataChannel).handleOpen in goroutine 932
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:371 +0x26c

goroutine 1344 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1343
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 1524 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1523
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 961 [syscall, 35 minutes]:
syscall.Syscall(0x3, 0x2b, 0x21f2bd8, 0x400)
        syscall/syscall_linux.go:73 +0x8
syscall.read(0x2b, {0x21f2bd8, 0x400, 0x400})
        syscall/zsyscall_linux_arm.go:736 +0x48
syscall.Read(...)
        syscall/syscall_unix.go:183
internal/poll.ignoringEINTRIO(...)
        internal/poll/fd_unix.go:745
internal/poll.(*FD).Read(0x1cf8d40, {0x21f2bd8, 0x400, 0x400})
        internal/poll/fd_unix.go:161 +0x264
os.(*File).read(...)
        os/file_posix.go:29
os.(*File).Read(0x1c25268, {0x21f2bd8, 0x400, 0x400})
        os/file.go:124 +0x80
github.com/jetkvm/kvm.handleTerminalChannel.func1.1()
        github.com/jetkvm/kvm/terminal.go:38 +0x70
created by github.com/jetkvm/kvm.handleTerminalChannel.func1 in goroutine 947
        github.com/jetkvm/kvm/terminal.go:35 +0x1c8

goroutine 948 [sync.Cond.Wait, 35 minutes]:
sync.runtime_notifyListWait(0x2119a28, 0x1)
        runtime/sema.go:597 +0x1e4
sync.(*Cond).Wait(0x2119a20)
        sync/cond.go:71 +0xbc
github.com/pion/sctp.(*Stream).ReadSCTP(0x1c9ae00, {0x1fe2000, 0xffff, 0xffff})
        github.com/pion/sctp@v1.8.39/stream.go:149 +0xac
github.com/pion/datachannel.(*DataChannel).ReadDataChannel(0x1dbf9e0, {0x1fe2000, 0xffff, 0xffff})
        github.com/pion/datachannel@v1.5.10/datachannel.go:206 +0x38
github.com/pion/webrtc/v4.(*DataChannel).readLoop(0x1d6dc38)
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:408 +0x94
created by github.com/pion/webrtc/v4.(*DataChannel).handleOpen in goroutine 932
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:371 +0x26c

goroutine 963 [syscall, 35 minutes]:
syscall.Syscall6(0x8e, 0x14, 0x1f23680, 0x0, 0x1f23700, 0x0, 0x0)
        syscall/syscall_linux.go:95 +0x8
syscall.Select(0x14, 0x1f23680, 0x0, 0x1f23700, 0x0)
        syscall/zsyscall_linux_arm.go:1387 +0x68
github.com/creack/goselect.sysSelect(...)
        github.com/creack/goselect@v0.1.2/select_linux.go:8
github.com/creack/goselect.Select(0x14, 0x1f23680, 0x0, 0x1f23700, 0xffffffffffffffff)
        github.com/creack/goselect@v0.1.2/select.go:16 +0x12c
go.bug.st/serial/unixutils.Select(0x1e41f00, 0x0, 0x1e41f00, 0xffffffffffffffff)
        go.bug.st/serial@v1.6.2/unixutils/select.go:99 +0x1d8
go.bug.st/serial.(*unixPort).Read(0x1e1d2c0, {0x1cf0000, 0x400, 0x400})
        go.bug.st/serial@v1.6.2/serial_unix.go:82 +0x29c
github.com/jetkvm/kvm.handleSerialChannel.func1.1()
        github.com/jetkvm/kvm/serial.go:254 +0x74
created by github.com/jetkvm/kvm.handleSerialChannel.func1 in goroutine 951
        github.com/jetkvm/kvm/serial.go:251 +0x78

goroutine 952 [sync.Cond.Wait, 35 minutes]:
sync.runtime_notifyListWait(0x2119a68, 0x1)
        runtime/sema.go:597 +0x1e4
sync.(*Cond).Wait(0x2119a60)
        sync/cond.go:71 +0xbc
github.com/pion/sctp.(*Stream).ReadSCTP(0x1c9ae80, {0x1e4a000, 0xffff, 0xffff})
        github.com/pion/sctp@v1.8.39/stream.go:149 +0xac
github.com/pion/datachannel.(*DataChannel).ReadDataChannel(0x1dbfb00, {0x1e4a000, 0xffff, 0xffff})
        github.com/pion/datachannel@v1.5.10/datachannel.go:206 +0x38
github.com/pion/webrtc/v4.(*DataChannel).readLoop(0x1d6dd98)
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:408 +0x94
created by github.com/pion/webrtc/v4.(*DataChannel).handleOpen in goroutine 932
        github.com/pion/webrtc/v4@v4.0.16/datachannel.go:371 +0x26c

goroutine 1333 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1332
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

goroutine 1283 [sleep]:
time.Sleep(0x3b9aca00)
        runtime/time.go:338 +0x1f4
github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents.func1()
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:148 +0x3c0
created by github.com/jetkvm/kvm/internal/usbgadget.(*UsbGadget).listenKeyboardEvents in goroutine 1282
        github.com/jetkvm/kvm/internal/usbgadget/hid_keyboard.go:136 +0x2dc

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions