[ 
https://issues.apache.org/jira/browse/GUACAMOLE-719?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rui Wang updated GUACAMOLE-719:
-------------------------------
    Component/s: guacamole-common

> Guacamole: Multiple simultaneous vnc connections over websocket close each 
> other
> --------------------------------------------------------------------------------
>
>                 Key: GUACAMOLE-719
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-719
>             Project: Guacamole
>          Issue Type: Bug
>          Components: guacamole-common, guacd
>    Affects Versions: 0.9.14
>            Reporter: Rui Wang
>            Priority: Major
>
> We are using guacamole to access remote desktop in web-browser. We try to use 
> websocket-tunnel for better performance, but if I open two tab in my browser 
> connecting to same vnc server with different ports through same guacd server, 
> one page get frozen(websocket stop send/receive any messages), the other get 
> error like: 776 and disconnected. And we can connect to these two vnc servers 
> using vnc-viewer direclty after browser vnc frozen/disconnected.
> Seems guacd will abort/kill one after another. It's only happending if we use 
> webscoket, using httpeServlet tunnel seems do not have such probelm.
> Anyone encounter similar issue? Here are my setup.
>  # guacamole-js was used in web side.
>  # We use x11vnc, guacd installed with same linux box
>  # We developed two endpoints use spring-boot: websocket-tunnel by extending 
> GuacamoleWebSocketTunnelEndpoint,http-servlet tunnel by extending 
> GuacamoleHTTPTunnelServlet
> guacd log here:
> {code:java}
> Jan 25 04:32:58 vnchost guacd[105232]: Protocol "vnc" selected
> Jan 25 04:32:58 vnchost guacd[105232]: Connection ID is 
> "$7d545e7e-0a29-40e5-a4a3-9964fa07b22b"
> Jan 25 04:32:58 vnchost guacd[105232]: VNC server supports protocol version 
> 3.8 (viewer 3.8)
> Jan 25 04:32:58 vnchost guacd[105232]: We have 1 security types to read
> Jan 25 04:32:58 vnchost guacd[105232]: 0) Received security type 1
> Jan 25 04:32:58 vnchost guacd[105232]: Selecting security type 1 (0/1 in the 
> list)
> Jan 25 04:32:58 vnchost guacd[105232]: Selected Security Scheme 1
> Jan 25 04:32:58 vnchost guacd[105232]: No authentication needed
> Jan 25 04:32:58 vnchost guacd[105232]: VNC authentication succeeded
> Jan 25 04:32:58 vnchost guacd[105232]: Desktop name "vnchost:0"
> Jan 25 04:32:58 vnchost guacd[105232]: Connected to VNC server, using 
> protocol version 3.8
> Jan 25 04:32:58 vnchost guacd[105232]: VNC server default format:
> Jan 25 04:32:58 vnchost guacd[105232]:  32 bits per pixel.
> Jan 25 04:32:58 vnchost guacd[105232]:  Least significant byte first in each 
> pixel.
> Jan 25 04:32:58 vnchost guacd[105232]:  TRUE colour: max red 255 green 255 
> blue 255, shift red 16 green 8 blue 0
> Jan 25 04:32:58 vnchost guacd[105232]: Starting client
> Jan 25 04:32:58 vnchost guacd[105232]: client2server supported messages (bit 
> flags)
> Jan 25 04:32:58 vnchost guacd[105232]: 00: 00ff 0081 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:32:58 vnchost guacd[105232]: 08: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:32:58 vnchost guacd[105232]: 10: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:32:58 vnchost guacd[105232]: 18: 0000 0000 0000 0000 - 0000 0000 
> 0000 0004
> Jan 25 04:32:58 vnchost guacd[105232]: server2client supported messages (bit 
> flags)
> Jan 25 04:32:58 vnchost guacd[105232]: 00: 001f 0080 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:32:58 vnchost guacd[105232]: 08: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:32:58 vnchost guacd[105232]: 10: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:32:58 vnchost guacd[105232]: 18: 0000 0000 0000 0000 - 0000 0000 
> 0000 0004
> Jan 25 04:32:58 vnchost guacd[105232]: Connected to Server "unknown 
> (LibVNCServer 0.9.9)"
> Jan 25 04:36:28 vnchost guacd[105538]: Protocol "vnc" selected
> Jan 25 04:36:28 vnchost guacd[105538]: Connection ID is 
> "$6fd98484-1dd0-4c66-aa04-6c358cd30548"
> Jan 25 04:36:29 vnchost guacd[105538]: VNC server supports protocol version 
> 3.8 (viewer 3.8)
> Jan 25 04:36:29 vnchost guacd[105538]: We have 1 security types to read
> Jan 25 04:36:29 vnchost guacd[105538]: 0) Received security type 1
> Jan 25 04:36:29 vnchost guacd[105538]: Selecting security type 1 (0/1 in the 
> list)
> Jan 25 04:36:29 vnchost guacd[105538]: Selected Security Scheme 1
> Jan 25 04:36:29 vnchost guacd[105538]: No authentication needed
> Jan 25 04:36:29 vnchost guacd[105538]: VNC authentication succeeded
> Jan 25 04:36:29 vnchost guacd[105538]: Desktop name "vnchost:2"
> Jan 25 04:36:29 vnchost guacd[105538]: Connected to VNC server, using 
> protocol version 3.8
> Jan 25 04:36:29 vnchost guacd[105538]: VNC server default format:
> Jan 25 04:36:29 vnchost guacd[105538]:  32 bits per pixel.
> Jan 25 04:36:29 vnchost guacd[105538]:  Least significant byte first in each 
> pixel.
> Jan 25 04:36:29 vnchost guacd[105538]:  TRUE colour: max red 255 green 255 
> blue 255, shift red 16 green 8 blue 0
> Jan 25 04:36:29 vnchost guacd[105538]: Starting client
> Jan 25 04:36:29 vnchost guacd[105538]: client2server supported messages (bit 
> flags)
> Jan 25 04:36:29 vnchost guacd[105538]: 00: 00ff 0081 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:36:29 vnchost guacd[105538]: 08: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:36:29 vnchost guacd[105538]: 10: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:36:29 vnchost guacd[105538]: 18: 0000 0000 0000 0000 - 0000 0000 
> 0000 0004
> Jan 25 04:36:29 vnchost guacd[105538]: server2client supported messages (bit 
> flags)
> Jan 25 04:36:29 vnchost guacd[105538]: 00: 001f 0080 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:36:29 vnchost guacd[105538]: 08: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:36:29 vnchost guacd[105538]: 10: 0000 0000 0000 0000 - 0000 0000 
> 0000 0000
> Jan 25 04:36:29 vnchost guacd[105538]: 18: 0000 0000 0000 0000 - 0000 0000 
> 0000 0004
> Jan 25 04:36:29 vnchost guacd[105538]: Connected to Server "unknown 
> (LibVNCServer 0.9.9)"
> Jan 25 04:36:29 vnchost guacd[105538]: Connection aborted
> Jan 25 04:36:30 vnchost guacd[105538]: Client disconnected
> Jan 25 04:36:30 vnchost kernel: guacd[105538]: segfault at 1000003f8 ip 
> 00007fbfce7bdc24 sp 00007ffe0d31c990 error 4 in 
> libguac-client-vnc.so.0.0.0[7fbfce7b2000+f000]
> Jan 25 04:36:30 vnchost abrt-hook-ccpp: Process 105538 (guacd) of user 0 
> killed by SIGSEGV - dumping core
> Jan 25 04:36:30 vnchost abrt-server: Executable '/usr/local/sbin/guacd' 
> doesn't belong to any package and ProcessUnpackaged is set to 'no'
> Jan 25 04:36:43 vnchost guacd[105232]: Client is not responding.
> Jan 25 04:36:43 vnchost guacd[105232]: Client disconnected
> Jan 25 04:36:43 vnchost kernel: guacd[105232]: segfault at 1000003f8 ip 
> 00007fbfce7bdc24 sp 00007ffe0d31c990 error 4 in 
> libguac-client-vnc.so.0.0.0[7fbfce7b2000+f000]
> Jan 25 04:36:43 vnchost abrt-hook-ccpp: Process 105232 (guacd) of user 0 
> killed by SIGSEGV - ignoring (repeated crash)
> {code}
> Spring-boot application log here
> {code:java}
> 2019-01-25 12:32:58.441 DEBUG 1 --- [nio-8080-exec-6] 
> o.a.guacamole.net.InetGuacamoleSocket    : Connecting to guacd at 
> vnchost:4832.
> 2019-01-25 12:32:58.961 DEBUG 1 --- [       Thread-6] 
> .g.b.g.w.e.MyGuacamoleWebSocketEndPoint : Open tunnel on port: '5900', uuid: 
> '2eba77c8-2f74-42a3-8ca5-4cf882ee3653' and connection_id: 
> '$7d545e7e-0a29-40e5-a4a3-9964fa07b22b'.
> 2019-01-25 12:36:28.785 DEBUG 1 --- [nio-8080-exec-2] 
> o.a.guacamole.net.InetGuacamoleSocket    : Connecting to guacd at 
> vnchost:4832.
> 2019-01-25 12:36:29.137 DEBUG 1 --- [       Thread-8] 
> .g.b.g.w.e.MyGuacamoleWebSocketEndPoint : Open tunnel on port: '5902', uuid: 
> '67446967-2e8e-42d7-9c73-68c2a80a270b' and connection_id: 
> '$6fd98484-1dd0-4c66-aa04-6c358cd30548'.
> 2019-01-25 12:36:30.510 DEBUG 1 --- [       Thread-8] 
> o.a.g.w.GuacamoleWebSocketTunnelEndpoint : Connection to guacd closed.
> org.apache.guacamole.GuacamoleConnectionClosedException: Connection to guacd 
> is closed.
>         at 
> org.apache.guacamole.io.ReaderGuacamoleReader.read(ReaderGuacamoleReader.java:183)
>  ~[guacamole-common-0.9.14.jar!/:na]
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:160)
>  ~[guacamole-common-0.9.14.jar!/:na]
> Caused by: java.net.SocketException: Connection reset
>         at java.net.SocketInputStream.read(SocketInputStream.java:210) 
> ~[na:1.8.0_191]
>         at java.net.SocketInputStream.read(SocketInputStream.java:141) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) 
> ~[na:1.8.0_191]
>         at java.io.InputStreamReader.read(InputStreamReader.java:184) 
> ~[na:1.8.0_191]
>         at 
> org.apache.guacamole.io.ReaderGuacamoleReader.read(ReaderGuacamoleReader.java:169)
>  ~[guacamole-common-0.9.14.jar!/:na]
>         ... 1 common frames omitted
>  2019-01-25 12:36:30.511 DEBUG 1 --- [       Thread-8] 
> .g.b.g.w.e.MyGuacamoleWebSocketEndPoint : Close tunnel on port: '5902', uuid: 
> '67446967-2e8e-42d7-9c73-68c2a80a270b' and connection_id: 
> '$6fd98484-1dd0-4c66-aa04-6c358cd30548'.
> 2019-01-25 12:36:30.511 DEBUG 1 --- [       Thread-8] 
> o.a.guacamole.net.InetGuacamoleSocket    : Closing socket to guacd.
> 2019-01-25 12:36:30.627 DEBUG 1 --- [nio-8080-exec-4] 
> o.a.g.w.GuacamoleWebSocketTunnelEndpoint : Connection to guacd closed.
> org.apache.guacamole.GuacamoleConnectionClosedException: Connection to guacd 
> is closed.
>         at 
> org.apache.guacamole.io.WriterGuacamoleWriter.write(WriterGuacamoleWriter.java:64)
>  ~[guacamole-common-0.9.14.jar!/:na]
>         at 
> org.apache.guacamole.io.WriterGuacamoleWriter.write(WriterGuacamoleWriter.java:73)
>  ~[guacamole-common-0.9.14.jar!/:na]
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.onMessage(GuacamoleWebSocketTunnelEndpoint.java:221)
>  ~[guacamole-common-0.9.14.jar!/:na]
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$1.onMessage(GuacamoleWebSocketTunnelEndpoint.java:129)
>  [guacamole-common-0.9.14.jar!/:na]
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$1.onMessage(GuacamoleWebSocketTunnelEndpoint.java:125)
>  [guacamole-common-0.9.14.jar!/:na]
>         at 
> org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:394) 
> [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:119)
>  [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:495) 
> [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:294) 
> [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133)
>  [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:82)
>  [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171)
>  [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151)
>  [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
>  [tomcat-embed-websocket-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
>  [tomcat-embed-core-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
>  [tomcat-embed-core-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
>  [tomcat-embed-core-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
>  [tomcat-embed-core-8.5.31.jar!/:8.5.31]
>         at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>  [tomcat-embed-core-8.5.31.jar!/:8.5.31]
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  [na:1.8.0_191]
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  [na:1.8.0_191]
>         at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>  [tomcat-embed-core-8.5.31.jar!/:8.5.31]
>         at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191]
> Caused by: java.net.SocketException: Socket closed
>         at 
> java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:118) 
> ~[na:1.8.0_191]
>         at java.net.SocketOutputStream.write(SocketOutputStream.java:155) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295) 
> ~[na:1.8.0_191]
>         at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141) 
> ~[na:1.8.0_191]
>         at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) 
> ~[na:1.8.0_191]
>         at 
> org.apache.guacamole.io.WriterGuacamoleWriter.write(WriterGuacamoleWriter.java:58)
>  ~[guacamole-common-0.9.14.jar!/:na]
>         ... 22 common frames omitted
>  {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to