[
https://issues.apache.org/jira/browse/GUACAMOLE-1140?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17794642#comment-17794642
]
Nick Couchman commented on GUACAMOLE-1140:
------------------------------------------
I've just closed GUACAMOLE-1890 as a duplicate of this bug, which I'm now
hitting not related to multiple users joining the connection, but when SFTP is
enabled on a RDP connection.
> Joining an RDP connection may segfault if underlying RDP connection is not
> yet established
> ------------------------------------------------------------------------------------------
>
> Key: GUACAMOLE-1140
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-1140
> Project: Guacamole
> Issue Type: Bug
> Components: RDP
> Affects Versions: 1.2.0
> Reporter: Thomas Kruse
> Priority: Major
> Attachments: core.lzma
>
>
> If a user joins an RDP connection leveraging Guacamole's session sharing
> functionality, but the underlying connection to the RDP server has not yet
> been established, a segfault may occur while handling the join operation:
> {code:none}
> #1 0x000055da270e5de9 in guac_common_list_lock (list=<optimized out>) at
> list.c:75
> #2 0x00007f8bb956c5cb in guac_rdp_pipe_svc_send_pipes
> (user=user@entry=0x7f8bac00d5e0) at channels/pipe-svc.c:49
> #3 0x00007f8bb957a0cb in guac_rdp_user_join_handler (user=0x7f8bac00d5e0,
> argc=<optimized out>, argv=<optimized out>) at user.c:92
> #4 0x00007f8bbb1d134a in guac_client_add_user
> (client=client@entry=0x7f8b280060e0, user=user@entry=0x7f8bac00d5e0,
> argc=argc@entry=76,
> argv=<optimized out>) at client.c:286
> #5 0x00007f8bbb1d8bea in guac_user_handle_connection
> (user=user@entry=0x7f8bac00d5e0, usec_timeout=usec_timeout@entry=15000000)
> at user-handshake.c:337
> #6 0x000055da270e5a96 in guacd_user_thread (data=0x7f8b280ad010) at proc.c:98
> #7 0x00007f8bbade2fa3 in start_thread (arg=<optimized out>) at
> pthread_create.c:486
> #8 0x00007f8bba71f4cf in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
> {code}
> This is because the relevant structure ({{rdp_client->available_svc}}) is not
> actually allocated until later in the RDP-specific connection initialization
> process, which occurs in its own thread spawned by the connection owner. If
> that allocation has not yet occurred, the attempt to synchronize the
> newly-joined user with the current session state will result in a segfault.
> Original context:
> {quote}
> I am running guacd from docker on an Ubuntu 20.04 host. Connections to guacd
> are from a custom backend using the official guacamole-common 1.1.0 maven
> artifact with a websocket.
> To demonstrate stuff (teaching) multiple connections (10-12) are opened as
> shared sessions with the read-only property set after a leading session is
> opened and the connection id is propagated. The shared connections are all
> opened simultaneously - and closed (more or less) simultaneously, often
> together with the leading session.
> Shared drive is disabled.
> Most of the time it works flawlessly, until guacd segfaults.
> {quote}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)