Open changkun opened 4 years ago
The bug can be reproduced in the pressure test which was just committed in https://github.com/changkun/occamy/commit/daa6393fbe58d2207bd91839fc624999ae4036e3.
This bug may be introduced in https://github.com/changkun/occamy/commit/d2afb2dc2d4c64e685a9f53fb9251167a16dbb42.
The handshake process may still need to lock until everything(clients, parser, input threads, and so on) is ready.
Sadly, no.
This bug seems only exists in RDP connections:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fdc557fa700 (LWP 35)]
0x00007fdc65f12cc0 in pthread_mutex_lock () from /lib64/libpthread.so.0
Missing separate debuginfos, use: debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 cairo-1.15.12-4.el7.x86_64 expat-2.1.0-10.el7_3.x86_64 fontconfig-2.13.0-4.3.el7.x86_64 freerdp-libs-1.0.2-15.el7.x86_64 freetype-2.8-14.el7.x86_64 glibc-2.17-292.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-37.el7_7.2.x86_64 libX11-1.6.7-2.el7.x86_64 libXau-1.0.8-2.1.el7.x86_64 libXext-1.3.3-3.el7.x86_64 libXrender-0.9.10-1.el7.x86_64 libcom_err-1.42.9-16.el7.x86_64 libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 libjpeg-turbo-1.2.90-8.el7.x86_64 libpng-1.5.13-7.el7_2.x86_64 libselinux-2.5-14.1.el7.x86_64 libuuid-2.23.2-61.el7.x86_64 libwebp-0.3.0-7.el7.x86_64 libxcb-1.13-1.el7.x86_64 openssl-libs-1.0.2k-19.el7.x86_64 pcre-8.32-17.el7.x86_64 pixman-0.34.0-1.el7.x86_64 uuid-1.6.2-26.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) bt
#0 0x00007fdc65f12cc0 in pthread_mutex_lock () from /lib64/libpthread.so.0
#1 0x00007fdc545e2049 in guac_common_list_lock (list=<optimized out>) at list.c:75
#2 0x00007fdc545e0658 in guac_rdp_svc_send_pipes (user=0x7fdc380029a0) at rdp_svc.c:78
#3 0x00007fdc545e0a1b in guac_rdp_user_join_handler (user=0x7fdc380029a0, argc=<optimized out>,
argv=<optimized out>) at user.c:85
#4 0x00007fdc6612be1d in guac_client_add_user (user=0x7fdc380029a0, argc=<optimized out>,
argv=<optimized out>) at client.c:285
#5 0x00000000009f80fe in _cgo_5063686ecc33_Cfunc_guac_client_add_user (v=0xc0003bb4c8)
at cgo-gcc-prolog:89
#6 0x0000000000460c70 in runtime.asmcgocall () at /usr/local/go/src/runtime/asm_amd64.s:655
#7 0x000000000045e601 in runtime.exitsyscallfast.func1 ()
at /usr/local/go/src/runtime/proc.go:3053
#8 0x000000c0003b6780 in ?? ()
#9 0x0000000000435e20 in ?? () at /usr/local/go/src/runtime/proc.go:1080
#10 0x0000000000000000 in ?? ()
However, VNC/SSH still have double free corruption, in a very rare case.
some random panics:
occamy | [GIN] 2020/02/17 - 18:05:40 | 200 | 184.589µs | 172.16.238.1 | POST /api/v1/login
occamy | [GIN] 2020/02/17 - 18:05:40 | 200 | 127.039µs | 172.16.238.1 | POST /api/v1/login
occamy | time="2020-02-17T18:05:40Z" level=info msg="occamy-proxy: new session was created: $147f05a5-77cd-43c9-8f29-68d281185fe8"
occamy | occamy-lib[140465286407936]: Cursor rendering: local
occamy | occamy-lib[140465286407936]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465286407936]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465286407936]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465286407936]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465286407936]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465286407936]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465286407936]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465286407936]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140465264764672]: Cursor rendering: local
occamy | occamy-lib[140465264764672]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465264764672]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140465264764672]: Cursor rendering: local
occamy | occamy-lib[140465264764672]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465264764672]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465264764672]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140465143797504]: Cursor rendering: local
occamy | occamy-lib[140465143797504]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465143797504]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140465143797504]: Cursor rendering: local
occamy | occamy-lib[140465143797504]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465143797504]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140465135404800]: Cursor rendering: local
occamy | occamy-lib[140465135404800]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465135404800]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465135404800]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465135404800]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465135404800]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465135404800]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465135404800]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465135404800]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140465143797504]: Cursor rendering: local
occamy | occamy-lib[140465143797504]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140465143797504]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140465143797504]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140464925685504]: Cursor rendering: local
occamy | occamy-lib[140464925685504]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140464925685504]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamy-lib[140464925685504]: Cursor rendering: local
occamy | occamy-lib[140464925685504]: Parameter "swap-red-blue" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "read-only" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "color-depth" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "dest-port" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "encodings" omitted. Using default value of "zrle ultra copyrect hextile zlib corre rre raw".
occamy | occamy-lib[140464925685504]: Parameter "autoretry" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "reverse-connect" omitted. Using default value of 0.
occamy | occamy-lib[140464925685504]: Parameter "listen-timeout" omitted. Using default value of 5000.
occamy | occamyd: cairo-surface.c:2092: _cairo_surface_release_source_image: Assertion `!surface->finished' failed.
occamy | SIGABRT: abort
occamy | PC=0x7fc0da1d8337 m=23 sigcode=18446744073709551610
occamy |
occamy | goroutine 0 [idle]:
occamy | runtime: unknown pc 0x7fc0da1d8337
occamy | stack: frame={sp:0x7fc089ff7898, fp:0x0} stack=[0x7fc0897fb0e8,0x7fc089fface8)
occamy | 00007fc089ff7798: 000000000000006b 000000000000006b
occamy | 00007fc089ff77a8: 00007fc089ff7a20 00007fc05c006cf0
occamy | 00007fc089ff77b8: 00007fc089ff78f8 00007fc08c058800
occamy | 00007fc089ff77c8: 00007fc0da219e1c 000000fffbad8000
occamy | 00007fc089ff77d8: 00007fc05c006cf0 00007fc05c006d55
occamy | 00007fc089ff77e8: 00007fc05c006cf0 00007fc05c006cf0
occamy | 00007fc089ff77f8: 00007fc05c006d5b 00007fc05c006e1c
occamy | 00007fc089ff7808: 00007fc05c006cf0 00007fc05c006e1c
occamy | 00007fc089ff7818: 0000000000000000 0000000000000000
occamy | 00007fc089ff7828: 0000000000000000 0000000000000000
occamy | 00007fc089ff7838: 0000000000000000 0000000000c795c0
occamy | 00007fc089ff7848: 000000c0004a2340 0000000000000000
occamy | 00007fc089ff7858: 0000000000000000 0000000000000000
occamy | 00007fc089ff7868: 00007fc0dabb9000 00007fc0da32cbe0
occamy | 00007fc089ff7878: 00007fc0d9f61fb1 00007fc0d9f62340
occamy | 00007fc089ff7888: 000000000000000c 00007fc08c058800
occamy | 00007fc089ff7898: <00007fc0da1d9a28 0000000000000020
occamy | 00007fc089ff78a8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78b8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78c8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78d8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78e8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78f8: 0000000000000000 0000000000000000
occamy | 00007fc089ff7908: 0000000000000000 0000000000000000
occamy | 00007fc089ff7918: 0000000000000000 00007ffec221ad48
occamy | 00007fc089ff7928: 00007fc0da329cf0 00007fc0d9f61f4d
occamy | 00007fc089ff7938: 000000000000082c 0000000000000000
occamy | 00007fc089ff7948: 00007fc0da1d2b53 00007fc089ff7930
occamy | 00007fc089ff7958: 0000000000000004 0000000000000000
occamy | 00007fc089ff7968: 0000000000000000 0000000000000000
occamy | 00007fc089ff7978: 0000000000000000 0000000000000000
occamy | 00007fc089ff7988: 0000000000000000 0000000500000000
occamy | runtime: unknown pc 0x7fc0da1d8337
occamy | stack: frame={sp:0x7fc089ff7898, fp:0x0} stack=[0x7fc0897fb0e8,0x7fc089fface8)
occamy | 00007fc089ff7798: 000000000000006b 000000000000006b
occamy | 00007fc089ff77a8: 00007fc089ff7a20 00007fc05c006cf0
occamy | 00007fc089ff77b8: 00007fc089ff78f8 00007fc08c058800
occamy | 00007fc089ff77c8: 00007fc0da219e1c 000000fffbad8000
occamy | 00007fc089ff77d8: 00007fc05c006cf0 00007fc05c006d55
occamy | 00007fc089ff77e8: 00007fc05c006cf0 00007fc05c006cf0
occamy | 00007fc089ff77f8: 00007fc05c006d5b 00007fc05c006e1c
occamy | 00007fc089ff7808: 00007fc05c006cf0 00007fc05c006e1c
occamy | 00007fc089ff7818: 0000000000000000 0000000000000000
occamy | 00007fc089ff7828: 0000000000000000 0000000000000000
occamy | 00007fc089ff7838: 0000000000000000 0000000000c795c0
occamy | 00007fc089ff7848: 000000c0004a2340 0000000000000000
occamy | 00007fc089ff7858: 0000000000000000 0000000000000000
occamy | 00007fc089ff7868: 00007fc0dabb9000 00007fc0da32cbe0
occamy | 00007fc089ff7878: 00007fc0d9f61fb1 00007fc0d9f62340
occamy | 00007fc089ff7888: 000000000000000c 00007fc08c058800
occamy | 00007fc089ff7898: <00007fc0da1d9a28 0000000000000020
occamy | 00007fc089ff78a8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78b8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78c8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78d8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78e8: 0000000000000000 0000000000000000
occamy | 00007fc089ff78f8: 0000000000000000 0000000000000000
occamy | 00007fc089ff7908: 0000000000000000 0000000000000000
occamy | 00007fc089ff7918: 0000000000000000 00007ffec221ad48
occamy | 00007fc089ff7928: 00007fc0da329cf0 00007fc0d9f61f4d
occamy | 00007fc089ff7938: 000000000000082c 0000000000000000
occamy | 00007fc089ff7948: 00007fc0da1d2b53 00007fc089ff7930
occamy | 00007fc089ff7958: 0000000000000004 0000000000000000
occamy | 00007fc089ff7968: 0000000000000000 0000000000000000
occamy | 00007fc089ff7978: 0000000000000000 0000000000000000
occamy | 00007fc089ff7988: 0000000000000000 0000000500000000
occamy |
occamy | goroutine 73 [syscall]:
occamy | runtime.cgocall(0x9f3a40, 0xc0005bd190, 0xc05c002c80)
occamy | /golang/go/src/runtime/cgocall.go:133 +0x5b fp=0xc0005bd160 sp=0xc0005bd128 pc=0x40572b
occamy | github.com/changkun/occamy/lib._Cfunc_join_handler_bridge(0x7fc05c002990, 0x7fc00000000e, 0x7fc05c002c80, 0x0)
occamy | _cgo_gotypes.go:525 +0x4d fp=0xc0005bd190 sp=0xc0005bd160 pc=0x9eacad
occamy | github.com/changkun/occamy/lib.(*User).Prepare.func5(0xc0002db300, 0xc00017c1c0, 0xe, 0xe, 0x7fc05c002c80, 0x0)
occamy | /occamy/lib/user.go:221 +0x8e fp=0xc0005bd1c8 sp=0xc0005bd190 pc=0x9edeae
occamy | github.com/changkun/occamy/lib.(*User).Prepare(0xc0002db300, 0x0, 0x0)
occamy | /occamy/lib/user.go:221 +0x5b3 fp=0xc0005bd2a0 sp=0xc0005bd1c8 pc=0x9ecb23
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc0004b14a0, 0xc000367658, 0x0, 0xc0005bd550, 0x0, 0x0)
occamy | /occamy/server/session.go:84 +0x3f7 fp=0xc0005bd4e8 sp=0xc0005bd2a0 pc=0x9f20e7
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0004b14a0, 0xc000367658, 0x8, 0xc0004bf178)
occamy | /occamy/server/routers.go:58 +0x3a8 fp=0xc0005bd570 sp=0xc0005bd4e8 pc=0x9f1a28
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0004d8210)
occamy | /occamy/server/routers.go:46 +0x447 fp=0xc0005bd7b8 sp=0xc0005bd570 pc=0x9f1467
occamy | github.com/changkun/occamy/server.(*proxy).serveWS-fm(0xc0004d8210)
occamy | /occamy/server/routers.go:31 +0x34 fp=0xc0005bd7d8 sp=0xc0005bd7b8 pc=0x9f3484
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b fp=0xc0005bd7f8 sp=0xc0005bd7d8 pc=0x9a918b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0004d8210)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf fp=0xc0005bd868 sp=0xc0005bd7f8 pc=0x9be1ff
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0004d8210)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34 fp=0xc0005bd888 sp=0xc0005bd868 pc=0x9c0f94
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b fp=0xc0005bd8a8 sp=0xc0005bd888 pc=0x9a918b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60 fp=0xc0005bd8e8 sp=0xc0005bd8a8 pc=0x9bbda0
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b fp=0xc0005bd908 sp=0xc0005bd8e8 pc=0x9a918b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1 fp=0xc0005bdaa8 sp=0xc0005bd908 pc=0x9bae51
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b fp=0xc0005bdac8 sp=0xc0005bdaa8 pc=0x9a918b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0004d8210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0 fp=0xc0005bdbb0 sp=0xc0005bdac8 pc=0x9b26d0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0004ba2a0, 0xc0004aa200)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133 fp=0xc0005bdbe8 sp=0xc0005bdbb0 pc=0x9b1f03
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0004ba2a0, 0xc0004aa200)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3 fp=0xc0005bdc18 sp=0xc0005bdbe8 pc=0x6d5813
occamy | net/http.(*conn).serve(0xc00045a1e0, 0xc795c0, 0xc0004a2340)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c fp=0xc0005bdfc8 sp=0xc0005bdc18 pc=0x6d118c
occamy | runtime.goexit()
occamy | /golang/go/src/runtime/asm_amd64.s:1375 +0x1 fp=0xc0005bdfd0 sp=0xc0005bdfc8 pc=0x469271
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 1 [IO wait, locked to thread]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0f48, 0x72, 0x0)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00016a198, 0x72, 0x0, 0x0, 0xb60197)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Accept(0xc00016a180, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:384 +0x1d4
occamy | net.(*netFD).accept(0xc00016a180, 0x484f01e265c25fdb, 0x0, 0x484f01e265c25fdb)
occamy | /golang/go/src/net/fd_unix.go:238 +0x42
occamy | net.(*TCPListener).accept(0xc00000e920, 0x5e4ad5f4, 0xc000159cf0, 0x48a536)
occamy | /golang/go/src/net/tcpsock_posix.go:139 +0x32
occamy | net.(*TCPListener).Accept(0xc00000e920, 0xc000159d40, 0x18, 0xc000000180, 0x6d5cbc)
occamy | /golang/go/src/net/tcpsock.go:261 +0x64
occamy | net/http.(*Server).Serve(0xc00017c0e0, 0xc77a80, 0xc00000e920, 0x0, 0x0)
occamy | /golang/go/src/net/http/server.go:2901 +0x25d
occamy | net/http.(*Server).ListenAndServe(0xc00017c0e0, 0x4, 0xb748a6)
occamy | /golang/go/src/net/http/server.go:2830 +0xb7
occamy | github.com/changkun/occamy/server.(*proxy).serve(0xc00000e580)
occamy | /occamy/server/connection.go:70 +0x219
occamy | github.com/changkun/occamy/server.Run(...)
occamy | /occamy/server/connection.go:39
occamy | main.main()
occamy | /occamy/occamy.go:18 +0xe4
occamy |
occamy | goroutine 34 [syscall]:
occamy | os/signal.signal_recv(0x0)
occamy | /golang/go/src/runtime/sigqueue.go:147 +0x9c
occamy | os/signal.loop()
occamy | /golang/go/src/os/signal/signal_unix.go:23 +0x22
occamy | created by os/signal.Notify.func1
occamy | /golang/go/src/os/signal/signal.go:127 +0x44
occamy |
occamy | goroutine 7 [chan receive]:
occamy | github.com/changkun/occamy/server.(*proxy).serve.func1(0xc00017c0e0, 0xc00007e1e0)
occamy | /occamy/server/connection.go:60 +0xe9
occamy | created by github.com/changkun/occamy/server.(*proxy).serve
occamy | /occamy/server/connection.go:57 +0x17c
occamy |
occamy | goroutine 8 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0e68, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00016a218, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00016a200, 0xc000268000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00016a200, 0xc000268000, 0x1000, 0x1000, 0x1aa, 0x0, 0x4cf6d2)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc0000101c0, 0xc000268000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | net/http.(*connReader).Read(0xc00025e3c0, 0xc000268000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/http/server.go:786 +0xf4
occamy | bufio.(*Reader).fill(0xc00008ed20)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc00008ed20, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4393c0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | net/http.(*conn).readRequest(0xc000117360, 0xc795c0, 0xc000258700, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/http/server.go:963 +0xc76
occamy | net/http.(*conn).serve(0xc000117360, 0xc795c0, 0xc000258700)
occamy | /golang/go/src/net/http/server.go:1822 +0x6d4
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 132 [syscall]:
occamy | syscall.Syscall(0x0, 0x21, 0xc00052e000, 0x2000, 0xc0001b42f8, 0xc0001a6880, 0xc00032c5a0)
occamy | /golang/go/src/syscall/asm_linux_amd64.s:18 +0x5
occamy | syscall.read(0x21, 0xc00052e000, 0x2000, 0x2000, 0x9e170b, 0xc0001b42a0, 0xc591f4)
occamy | /golang/go/src/syscall/zsyscall_linux_amd64.go:686 +0x5a
occamy | syscall.Read(...)
occamy | /golang/go/src/syscall/syscall_unix.go:189
occamy | github.com/changkun/occamy/protocol.IO.Read(0x21, 0xc00052e000, 0x2000, 0x2000, 0x2a, 0x0, 0x0)
occamy | /occamy/protocol/io.go:21 +0x49
occamy | bufio.(*Reader).fill(0xc0003372c0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).ReadSlice(0xc0003372c0, 0x3b, 0x28, 0xc000338030, 0xc0001f6000, 0xc00032c748, 0x9d8b67)
occamy | /golang/go/src/bufio/bufio.go:359 +0x3d
occamy | bufio.(*Reader).ReadBytes(0xc0003372c0, 0x3b, 0xc000338030, 0x28, 0x28, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:438 +0x7a
occamy | github.com/changkun/occamy/protocol.(*InstructionIO).ReadRaw(...)
occamy | /occamy/protocol/instruction.go:156
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc000337320, 0xc000308840, 0xc00030cd60, 0xc0001f6000)
occamy | /occamy/server/session.go:119 +0x41
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 104 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc074002a00, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc0002d8000)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc0002d8000, 0xc00007e4e0)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 99 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc0003a03e0, 0xc000135340, 0xc0002368a0, 0xc0003c5980)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc000135340, 0xc000363658, 0x0, 0xc0002e7550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc000135340, 0xc000363658, 0x8, 0xc00011d198)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00012a370)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00012a370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00012a370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00012a370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc00017c2a0, 0xc00014ed00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc00017c2a0, 0xc00014ed00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc000117900, 0xc795c0, 0xc000070bc0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 98 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc00000f0e0, 0xc0004b09a0, 0xc00007e4e0, 0xc0002d8000)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc0004b09a0, 0xc000365658, 0x0, 0xc000233550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0004b09a0, 0xc000365658, 0x8, 0xc0004be8a8)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0001bc000)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0001bc000)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0001bc000)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0001bc000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0004ba0e0, 0xc0001ae500)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0004ba0e0, 0xc0001ae500)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc000117860, 0xc795c0, 0xc0001926c0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 48 [runnable]:
occamy | github.com/gorilla/websocket.(*Conn).WriteMessage(0xc0001f6580, 0x1, 0xc0005ca000, 0x28, 0x28, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:740 +0x2d8
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc000189320, 0xc0001968b0, 0xc000190e60, 0xc0001f6580)
occamy | /occamy/server/session.go:123 +0x92
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 12 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0a08, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00016a418, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00016a400, 0xc0002ab000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00016a400, 0xc0002ab000, 0x1000, 0x1000, 0x1aa, 0x0, 0x4cf6d2)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc0000101e0, 0xc0002ab000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | net/http.(*connReader).Read(0xc00028a630, 0xc0002ab000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/http/server.go:786 +0xf4
occamy | bufio.(*Reader).fill(0xc000073260)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000073260, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4393c0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | net/http.(*conn).readRequest(0xc0001175e0, 0xc795c0, 0xc000070a00, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/http/server.go:963 +0xc76
occamy | net/http.(*conn).serve(0xc0001175e0, 0xc795c0, 0xc000070a00)
occamy | /golang/go/src/net/http/server.go:1822 +0x6d4
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 31 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c03e8, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00016a818, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00016a800, 0xc000370000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00016a800, 0xc000370000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc0000101f8, 0xc000370000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc000336de0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000336de0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc00036a580, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc00036a580, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc00036a580, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc00036a580, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc00008f680, 0xc00024ac40, 0xc0003a0320, 0xc00036a580)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 105 [runnable]:
occamy | github.com/gorilla/websocket.(*Conn).WriteMessage(0xc0004b09a0, 0x1, 0xc0002fc000, 0x28, 0x28, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:740 +0x2d8
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc000073b60, 0xc00002ae90, 0xc00000f0e0, 0xc0004b09a0)
occamy | /occamy/server/session.go:123 +0x92
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 106 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0068, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00016a898, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00016a880, 0xc0004dc000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00016a880, 0xc0004dc000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc000010200, 0xc0004dc000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc0004a6360)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc0004a6360, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc0004b09a0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0004b09a0, 0x40b94b, 0xc000012000, 0x43947c)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc0004b09a0, 0xc000049f40, 0x44b2cf, 0xc000072000, 0x4, 0xc000072000)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc0004b09a0, 0x7fc0ac079101, 0xc000049fc8, 0x6cb413, 0xc000070a80, 0xc69e01, 0xc00007c640)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc000073b60, 0xc00002ae90, 0xc00000f0e0, 0xc0004b09a0)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 146 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c04c8, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00009db18, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00009db00, 0xc0004ec000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00009db00, 0xc0004ec000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc000098578, 0xc0004ec000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc0004a64e0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc0004a64e0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc0004b0f20, 0x2, 0xc000328000, 0xc00032e5e0, 0x43238a, 0xb8b008, 0x7fc0ad8c0790)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0004b0f20, 0x40b94b, 0xc000012000, 0x43947c)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc0004b0f20, 0xc00032e740, 0x44b2cf, 0xc000336180, 0x4, 0xc000336180)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc0004b0f20, 0x7fc0ac079101, 0xc00032e7c8, 0x6cb413, 0xc00030e300, 0xc69e01, 0xc0000bcc80)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc00008f740, 0xc00024ac50, 0xc0003a0360, 0xc0004b0f20)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 33 [runnable]:
occamy | syscall.Syscall(0x0, 0x28, 0xc0003d8000, 0x2000, 0x2dd, 0x2000, 0x0)
occamy | /golang/go/src/syscall/asm_linux_amd64.s:18 +0x5
occamy | syscall.read(0x28, 0xc0003d8000, 0x2000, 0x2000, 0x43ffbc, 0x4393c0, 0xb8b030)
occamy | /golang/go/src/syscall/zsyscall_linux_amd64.go:686 +0x5a
occamy | syscall.Read(...)
occamy | /golang/go/src/syscall/syscall_unix.go:189
occamy | github.com/changkun/occamy/protocol.IO.Read(0x28, 0xc0003d8000, 0x2000, 0x2000, 0x5, 0x7fc0ad8c0cd0, 0x203000)
occamy | /occamy/protocol/io.go:21 +0x49
occamy | bufio.(*Reader).fill(0xc00008f6e0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).ReadSlice(0xc00008f6e0, 0xc00048203b, 0xc000257180, 0x7fc0dab677d0, 0x40b94b, 0xc000012000, 0x43947c)
occamy | /golang/go/src/bufio/bufio.go:359 +0x3d
occamy | bufio.(*Reader).ReadBytes(0xc00008f6e0, 0x7fc0ac07913b, 0xc0000497c8, 0x6cb413, 0xc000258bc0, 0xc69e01, 0xc0000bce60)
occamy | /golang/go/src/bufio/bufio.go:438 +0x7a
occamy | github.com/changkun/occamy/protocol.(*InstructionIO).ReadRaw(...)
occamy | /occamy/protocol/instruction.go:156
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc00008f740, 0xc00024ac50, 0xc0003a0360, 0xc0004b0f20)
occamy | /occamy/server/session.go:119 +0x41
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 32 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc074004800, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc0002d9980)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc0002d9980, 0xc0002367e0)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 47 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc074004b20, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc00059e000)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc00059e000, 0xc00019a6c0)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 30 [runnable]:
occamy | syscall.Syscall(0x1, 0xe, 0xc00037200c, 0xc, 0xc, 0xc, 0x0)
occamy | /golang/go/src/syscall/asm_linux_amd64.s:18 +0x5
occamy | syscall.write(0xe, 0xc00037200c, 0xc, 0x2002, 0x0, 0x416253, 0xc000316370)
occamy | /golang/go/src/syscall/zsyscall_linux_amd64.go:914 +0x5a
occamy | syscall.Write(...)
occamy | /golang/go/src/syscall/syscall_unix.go:214
occamy | internal/poll.(*FD).Write(0xc00016a800, 0xc00037200c, 0xc, 0x2002, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:268 +0x179
occamy | net.(*netFD).Write(0xc00016a800, 0xc00037200c, 0xc, 0x2002, 0x0, 0x77, 0x0)
occamy | /golang/go/src/net/fd_unix.go:220 +0x4f
occamy | net.(*conn).Write(0xc0000101f8, 0xc00037200c, 0xc, 0x2002, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:196 +0x8e
occamy | github.com/gorilla/websocket.(*Conn).write(0xc00036a580, 0x1, 0x0, 0x0, 0x0, 0xc00037200c, 0xc, 0x2002, 0xc00002a360, 0x0, ...)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:378 +0x151
occamy | github.com/gorilla/websocket.(*messageWriter).flushFrame(0xc000044718, 0xc00002a301, 0xc00002a360, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:595 +0x25f
occamy | github.com/gorilla/websocket.(*Conn).WriteMessage(0xc00036a580, 0x1, 0xc00002a360, 0xa, 0xa, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:752 +0x247
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc00008f680, 0xc00024ac40, 0xc0003a0320, 0xc00036a580)
occamy | /occamy/server/session.go:123 +0x92
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 131 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc07c002a00, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc000526000)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc000526000, 0xc0003106c0)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 42 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc00030cd60, 0xc0001f6000, 0xc0003106c0, 0xc000526000)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc0001f6000, 0xc0003a5658, 0x0, 0xc000525550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0001f6000, 0xc0003a5658, 0x8, 0xc0001c1cc8)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0001bc0b0)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0001bc0b0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0001bc0b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0001b6460, 0xc0001ae600)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0001b6460, 0xc0001ae600)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0001aa0a0, 0xc795c0, 0xc000192740)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 25 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc00000e040, 0xc00036ab00, 0xc0004b4000, 0xc00059f980)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc00036ab00, 0xc0001eb658, 0x0, 0xc0005c1550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc00036ab00, 0xc0001eb658, 0x8, 0xc000508418)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00031c160)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00031c160)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00031c160)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00031c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc000318620, 0xc000356d00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc000318620, 0xc000356d00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0003ac0a0, 0xc795c0, 0xc00030ea40)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 23 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc00030cde0, 0xc00040b4a0, 0xc000310780, 0xc000527980)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc00040b4a0, 0xc0001e7658, 0x0, 0xc000521550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc00040b4a0, 0xc0001e7658, 0x8, 0xc000423198)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00041c000)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00041c000)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00041c000)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00041c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0004182a0, 0xc000356c00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0004182a0, 0xc000356c00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0000bff40, 0xc795c0, 0xc00030e9c0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 24 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc0003a0360, 0xc0004b0f20, 0xc0002367e0, 0xc0002d9980)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc0004b0f20, 0xc0003a9658, 0x0, 0xc0002eb550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0004b0f20, 0xc0003a9658, 0x8, 0xc0004becf8)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0004d80b0)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0004d80b0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0004d80b0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0004d80b0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0004ba1c0, 0xc000356b00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0004ba1c0, 0xc000356b00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0003ac000, 0xc795c0, 0xc00030e940)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 133 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ac03dee8, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc0001a6898, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc0001a6880, 0xc0001f4000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc0001a6880, 0xc0001f4000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc00018e088, 0xc0001f4000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc000188d20)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000188d20, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc0001f6000, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0001f6000, 0x40b94b, 0xc000012000, 0x43947c)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc0001f6000, 0xc00032ff40, 0x44b2cf, 0xc000336360, 0x4, 0xc000336360)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc0001f6000, 0x7fc0ac079101, 0xc00032ffc8, 0x6cb413, 0xc00030e780, 0xc69e01, 0xc000304730)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc000337320, 0xc000308840, 0xc00030cd60, 0xc0001f6000)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 16 [chan receive, locked to thread]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc0003a0320, 0xc00036a580, 0xc000236780, 0xc0003c4000)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc00036a580, 0xc00022f658, 0x1, 0xc00022f550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc00036a580, 0xc00022f658, 0x8, 0xc000333ee8)
occamy | /occamy/server/routers.go:70 +0x269
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00031c000)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00031c000)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00031c000)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00031c000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc000318540, 0xc000356f00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc000318540, 0xc000356f00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0001177c0, 0xc795c0, 0xc00030eb40)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 26 [chan receive]:
occamy | github.com/changkun/occamy/server.(*Session).serveIO(0xc000307d70, 0xc000190e60, 0xc0001f6580, 0xc00019a6c0, 0xc00059e000)
occamy | /occamy/server/session.go:148 +0x121
occamy | github.com/changkun/occamy/server.(*Session).Join(0xc000307d70, 0xc0001f6580, 0xc0001ed658, 0x0, 0xc00059d550, 0x0, 0x0)
occamy | /occamy/server/session.go:99 +0x59b
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0001f6580, 0xc0001ed658, 0x8, 0xc0001f81d8)
occamy | /occamy/server/routers.go:58 +0x3a8
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0001bc210)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0001bc210)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0001bc210)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0001bc210)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0001b6540, 0xc000356e00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0001b6540, 0xc000356e00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0003ac140, 0xc795c0, 0xc00030eac0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 29 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc098023ba0, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc0003c4000)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc0003c4000, 0xc000236780)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 27 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000098500, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc000253ce0, 0xc0001e9658, 0x8, 0xc0003ae428)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc000250370)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc000250370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc000250370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc000250370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc000388380, 0xc0000d0d00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc000388380, 0xc0000d0d00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc0003ac1e0, 0xc795c0, 0xc000258cc0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 70 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0004b1a20, 0xc0004f7658, 0x8, 0xc0004bf618)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0004d8370)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0004d8370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0004d8370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0004d8370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0004ba380, 0xc0004aa300)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0004ba380, 0xc0004aa300)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a000, 0xc795c0, 0xc0004a2440)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 71 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0001f7080, 0xc000185658, 0x8, 0xc0001f8ae8)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0001bc4d0)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0001bc4d0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0001bc4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0001b6700, 0xc0001ae800)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0001b6700, 0xc0001ae800)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a0a0, 0xc795c0, 0xc0001929c0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 72 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0002c8420, 0xc000183658, 0x8, 0xc00011df18)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00012a790)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00012a790)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00012a790)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00012a790)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc00017c540, 0xc00014f000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc00017c540, 0xc00014f000)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a140, 0xc795c0, 0xc000070ec0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 74 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc000135e40, 0xc000321658, 0x8, 0xc00011da98)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00012a630)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00012a630)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00012a630)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00012a630)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc00017c460, 0xc00014ef00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc00017c460, 0xc00014ef00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a280, 0xc795c0, 0xc000070dc0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 75 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc00036b600, 0xc000517658, 0x8, 0xc000508ce8)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00031c420)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00031c420)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00031c420)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00031c420)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0003187e0, 0xc000357100)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0003187e0, 0xc000357100)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a320, 0xc795c0, 0xc00030edc0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 76 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0001358c0, 0xc000187658, 0x8, 0xc00011d638)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00012a4d0)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00012a4d0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00012a4d0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00012a4d0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc00017c380, 0xc00014ee00)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc00017c380, 0xc00014ee00)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a3c0, 0xc795c0, 0xc000070cc0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 77 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc00036b080, 0xc000369658, 0x8, 0xc0005088a8)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00031c2c0)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00031c2c0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00031c2c0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00031c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc000318700, 0xc000357000)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc000318700, 0xc000357000)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a460, 0xc795c0, 0xc00030ecc0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 78 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc0001f6b00, 0xc00031f658, 0x8, 0xc0001f8658)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc0001bc370)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc0001bc370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc0001bc370)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc0001bc370)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc0001b6620, 0xc0001ae700)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc0001b6620, 0xc0001ae700)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a500, 0xc795c0, 0xc0001928c0)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 79 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc000462000, 0xc0004f3658, 0x8, 0xc000423a98)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00041c2c0)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00041c2c0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00041c2c0)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00041c2c0)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc000418460, 0xc000440500)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc000418460, 0xc000440500)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a5a0, 0xc795c0, 0xc00040e580)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 80 [semacquire]:
occamy | sync.runtime_SemacquireMutex(0xc00000e594, 0xc000446000, 0x1)
occamy | /golang/go/src/runtime/sema.go:71 +0x47
occamy | sync.(*Mutex).lockSlow(0xc00000e590)
occamy | /golang/go/src/sync/mutex.go:138 +0xfc
occamy | sync.(*Mutex).Lock(...)
occamy | /golang/go/src/sync/mutex.go:81
occamy | github.com/changkun/occamy/server.(*proxy).routeConn(0xc00000e580, 0xc00040ba20, 0xc0003a7658, 0x8, 0xc000423618)
occamy | /occamy/server/routers.go:55 +0x3d5
occamy | github.com/changkun/occamy/server.(*proxy).serveWS(0xc00000e580, 0xc00041c160)
occamy | /occamy/server/routers.go:46 +0x447
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).middlewareImpl(0xc00011c7e0, 0xc00041c160)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:382 +0x2bf
occamy | github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).MiddlewareFunc.func1(0xc00041c160)
occamy | /occamy/vendor/github.com/appleboy/gin-jwt/v2/auth_jwt.go:344 +0x34
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.RecoveryWithWriter.func1(0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/recovery.go:83 +0x60
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.LoggerWithConfig.func1(0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/logger.go:240 +0xe1
occamy | github.com/gin-gonic/gin.(*Context).Next(0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/context.go:124 +0x3b
occamy | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0xc000136640, 0xc00041c160)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:389 +0x5b0
occamy | github.com/gin-gonic/gin.(*Engine).ServeHTTP(0xc000136640, 0xc77d40, 0xc000418380, 0xc000440400)
occamy | /occamy/vendor/github.com/gin-gonic/gin/gin.go:351 +0x133
occamy | net/http.serverHandler.ServeHTTP(0xc00017c0e0, 0xc77d40, 0xc000418380, 0xc000440400)
occamy | /golang/go/src/net/http/server.go:2807 +0xa3
occamy | net/http.(*conn).serve(0xc00045a640, 0xc795c0, 0xc00040e480)
occamy | /golang/go/src/net/http/server.go:1895 +0x86c
occamy | created by net/http.(*Server).Serve
occamy | /golang/go/src/net/http/server.go:2933 +0x35c
occamy |
occamy | goroutine 134 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc07c004800, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc000527980)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc000527980, 0xc000310780)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 135 [syscall]:
occamy | syscall.Syscall(0x0, 0x24, 0xc000534000, 0x2000, 0xc000416218, 0xc00009da80, 0xc00032d5a0)
occamy | /golang/go/src/syscall/asm_linux_amd64.s:18 +0x5
occamy | syscall.read(0x24, 0xc000534000, 0x2000, 0x2000, 0x9e170b, 0xc0004161c0, 0xc591f4)
occamy | /golang/go/src/syscall/zsyscall_linux_amd64.go:686 +0x5a
occamy | syscall.Read(...)
occamy | /golang/go/src/syscall/syscall_unix.go:189
occamy | github.com/changkun/occamy/protocol.IO.Read(0x24, 0xc000534000, 0x2000, 0x2000, 0x2a, 0x0, 0x0)
occamy | /occamy/protocol/io.go:21 +0x49
occamy | bufio.(*Reader).fill(0xc0003373e0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).ReadSlice(0xc0003373e0, 0x3b, 0x28, 0xc0001d0090, 0xc00040b4a0, 0xc00032d748, 0x9d8b67)
occamy | /golang/go/src/bufio/bufio.go:359 +0x3d
occamy | bufio.(*Reader).ReadBytes(0xc0003373e0, 0x3b, 0xc0001d0090, 0x28, 0x28, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:438 +0x7a
occamy | github.com/changkun/occamy/protocol.(*InstructionIO).ReadRaw(...)
occamy | /occamy/protocol/instruction.go:156
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc000337440, 0xc000308930, 0xc00030cde0, 0xc00040b4a0)
occamy | /occamy/server/session.go:119 +0x41
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 136 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0308, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00009da98, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00009da80, 0xc00044a000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00009da80, 0xc00044a000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc000098570, 0xc00044a000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc000426720)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000426720, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc00040b4a0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc00040b4a0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc00040b4a0, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc00040b4a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc000337440, 0xc000308930, 0xc00030cde0, 0xc00040b4a0)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 147 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc06c002a00, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc0003c5980)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc0003c5980, 0xc0002368a0)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 148 [runnable]:
occamy | syscall.Syscall(0x1, 0x10, 0xc00001450a, 0xf0, 0xf0, 0xf0, 0x0)
occamy | /golang/go/src/syscall/asm_linux_amd64.s:18 +0x5
occamy | syscall.write(0x10, 0xc00001450a, 0xf0, 0x2004, 0x0, 0x400, 0x203000)
occamy | /golang/go/src/syscall/zsyscall_linux_amd64.go:914 +0x5a
occamy | syscall.Write(...)
occamy | /golang/go/src/syscall/syscall_unix.go:214
occamy | internal/poll.(*FD).Write(0xc00016a900, 0xc00001450a, 0xf0, 0x2004, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:268 +0x179
occamy | net.(*netFD).Write(0xc00016a900, 0xc00001450a, 0xf0, 0x2004, 0x0, 0x77, 0x0)
occamy | /golang/go/src/net/fd_unix.go:220 +0x4f
occamy | net.(*conn).Write(0xc000010208, 0xc00001450a, 0xf0, 0x2004, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:196 +0x8e
occamy | github.com/gorilla/websocket.(*Conn).write(0xc000135340, 0x1, 0x0, 0x0, 0x0, 0xc00001450a, 0xf0, 0x2004, 0xc000478000, 0x0, ...)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:378 +0x151
occamy | github.com/gorilla/websocket.(*messageWriter).flushFrame(0xc000044f18, 0xc000478001, 0xc000478000, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:595 +0x25f
occamy | github.com/gorilla/websocket.(*Conn).WriteMessage(0xc000135340, 0x1, 0xc000478000, 0xec, 0xec, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:752 +0x247
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc00008f860, 0xc00024ad40, 0xc0003a03e0, 0xc000135340)
occamy | /occamy/server/session.go:123 +0x92
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 149 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ac03de08, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00016a918, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00016a900, 0xc0002bc000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00016a900, 0xc0002bc000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc000010208, 0xc0002bc000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc000073560)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000073560, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc000135340, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc000135340, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc000135340, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc000135340, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc00008f860, 0xc00024ad40, 0xc0003a03e0, 0xc000135340)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 49 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0768, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00009dc18, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00009dc00, 0xc0001fa000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00009dc00, 0xc0001fa000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc000098588, 0xc0001fa000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc000188ea0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000188ea0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc0001f6580, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0001f6580, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc0001f6580, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc0001f6580, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc000189320, 0xc0001968b0, 0xc000190e60, 0xc0001f6580)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | goroutine 150 [syscall]:
occamy | github.com/changkun/occamy/lib._Cfunc_guac_user_input_thread(0x7fc05c000b90, 0x7fc000e4e1c0)
occamy | _cgo_gotypes.go:497 +0x41
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection.func2(0xc00059f980)
occamy | /occamy/lib/user.go:239 +0x5d
occamy | github.com/changkun/occamy/lib.(*User).HandleConnection(0xc00059f980, 0xc0004b4000)
occamy | /occamy/lib/user.go:239 +0x3d
occamy | created by github.com/changkun/occamy/server.(*Session).Join
occamy | /occamy/server/session.go:93 +0x51a
occamy |
occamy | goroutine 151 [runnable]:
occamy | syscall.Syscall(0x0, 0x2e, 0xc0003f0000, 0x2000, 0x2dd, 0x2000, 0x0)
occamy | /golang/go/src/syscall/asm_linux_amd64.s:18 +0x5
occamy | syscall.read(0x2e, 0xc0003f0000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/syscall/zsyscall_linux_amd64.go:686 +0x5a
occamy | syscall.Read(...)
occamy | /golang/go/src/syscall/syscall_unix.go:189
occamy | github.com/changkun/occamy/protocol.IO.Read(0x2e, 0xc0003f0000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /occamy/protocol/io.go:21 +0x49
occamy | bufio.(*Reader).fill(0xc0004a60c0)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).ReadSlice(0xc0004a60c0, 0x3b, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:359 +0x3d
occamy | bufio.(*Reader).ReadBytes(0xc0004a60c0, 0x3b, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:438 +0x7a
occamy | github.com/changkun/occamy/protocol.(*InstructionIO).ReadRaw(...)
occamy | /occamy/protocol/instruction.go:156
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func1(0xc0004a6120, 0xc00002a090, 0xc00000e040, 0xc00036ab00)
occamy | /occamy/server/session.go:119 +0x41
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:116 +0xbb
occamy |
occamy | goroutine 152 [IO wait]:
occamy | internal/poll.runtime_pollWait(0x7fc0ad8c0148, 0x72, 0xffffffffffffffff)
occamy | /golang/go/src/runtime/netpoll.go:203 +0x55
occamy | internal/poll.(*pollDesc).wait(0xc00009db98, 0x72, 0x2000, 0x2000, 0xffffffffffffffff)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
occamy | internal/poll.(*pollDesc).waitRead(...)
occamy | /golang/go/src/internal/poll/fd_poll_runtime.go:92
occamy | internal/poll.(*FD).Read(0xc00009db80, 0xc00050c000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/internal/poll/fd_unix.go:169 +0x19b
occamy | net.(*netFD).Read(0xc00009db80, 0xc00050c000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/fd_unix.go:202 +0x4f
occamy | net.(*conn).Read(0xc000098580, 0xc00050c000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
occamy | /golang/go/src/net/net.go:184 +0x8e
occamy | bufio.(*Reader).fill(0xc000336f00)
occamy | /golang/go/src/bufio/bufio.go:100 +0x103
occamy | bufio.(*Reader).Peek(0xc000336f00, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /golang/go/src/bufio/bufio.go:138 +0x4f
occamy | github.com/gorilla/websocket.(*Conn).read(0xc00036ab00, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:357 +0x40
occamy | github.com/gorilla/websocket.(*Conn).advanceFrame(0xc00036ab00, 0x40b94b, 0xc000012000, 0x43947c)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:787 +0x5c
occamy | github.com/gorilla/websocket.(*Conn).NextReader(0xc00036ab00, 0xc00032ef40, 0x44b2cf, 0xc000336360, 0x4, 0xc000336360)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:947 +0x8f
occamy | github.com/gorilla/websocket.(*Conn).ReadMessage(0xc00036ab00, 0x7fc0ac079101, 0xc00032efc8, 0x6cb413, 0xc000192280, 0xc69e01, 0xc000304280)
occamy | /occamy/vendor/github.com/gorilla/websocket/conn.go:1028 +0x2f
occamy | github.com/changkun/occamy/server.(*Session).serveIO.func2(0xc0004a6120, 0xc00002a090, 0xc00000e040, 0xc00036ab00)
occamy | /occamy/server/session.go:135 +0x3a
occamy | created by github.com/changkun/occamy/server.(*Session).serveIO
occamy | /occamy/server/session.go:132 +0x101
occamy |
occamy | rax 0x0
occamy | rbx 0x7fc0dabb9000
occamy | rcx 0x7fc0da1d8337
occamy | rdx 0x6
occamy | rdi 0x1
occamy | rsi 0x1d
occamy | rbp 0x7fc0da32cbe0
occamy | rsp 0x7fc089ff7898
occamy | r8 0x0
occamy | r9 0x7fc05c006e30
occamy | r10 0x8
occamy | r11 0x202
occamy | r12 0x7fc0d9f61fb1
occamy | r13 0x7fc0d9f62340
occamy | r14 0xc
occamy | r15 0x7fc08c058800
occamy | rip 0x7fc0da1d8337
occamy | rflags 0x202
occamy | cs 0x33
occamy | fs 0x0
occamy | gs 0x0
Describe the bug A cgo bug again. But not appear very often.
A stack trace: