[
https://issues.apache.org/jira/browse/GUACAMOLE-898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17889358#comment-17889358
]
Nick Couchman commented on GUACAMOLE-898:
-----------------------------------------
[~changkun]: Can you please test with the latest version (either 1.5.5 or
upcoming 1.6.0) and see if this is still an issue? I suspect it has been
resolved by changes made to these in the interim.
> Segment fault when two users race on same connection
> ----------------------------------------------------
>
> Key: GUACAMOLE-898
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-898
> Project: Guacamole
> Issue Type: Bug
> Components: libguac, RDP, SSH, VNC
> Affects Versions: 1.0.0
> Reporter: Changkun Ou
> Priority: Minor
>
> The VNC/RDP and SSH plugins all create a {{display/term}} in connection owner
> {{guac_vnc_client_thread/guac_rdp_client_thread}} and {{ssh_client_thread}}
> thread.
> However, the {{client->display or client->term}} is immediately used in
> non-owner threads.
> If two users are racing on the same connection and the {{client->display or
> client->term}} is not ready for the non-owner, then:
> {{guac_common_display_dup(vnc_client->display, user, user->socket);}}
> or
> {{guac_common_display_dup(rdp_client->display, user, user->socket);}}
> or
> {{guac_terminal_dup(ssh_client->term, user, user->socket);}}
> can result in segment fault because the {{display/term}} pointer can still be
> a {{NULL}} pointer.
> Here is a stack trace:
> {code:java}
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0x7ff9c2fad700 (LWP 9)]
> 0x00007ff9cbcd1cc0 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
> dbus-libs-1.10.24-13.el7_6.x86_64 elfutils-libelf-0.176-2.el7.x86_64
> elfutils-libs-0.176-2.el7.x86_64 expat-2.1.0-10.el7_3.x86_64
> flac-libs-1.3.0-5.el7_1.x86_64 fontconfig-2.13.0-4.3.el7.x86_64
> freetype-2.8-14.el7.x86_64 glibc-2.17-292.el7.x86_64 gmp-6.0.0-15.el7.x86_64
> gnutls-3.3.29-9.el7_6.x86_64 gsm-1.0.13-11.el7.x86_64
> keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-37.el7_7.2.x86_64
> libICE-1.0.9-9.el7.x86_64 libSM-1.2.2-2.el7.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
> libXi-1.7.9-1.el7.x86_64 libXrender-0.9.10-1.el7.x86_64
> libXtst-1.2.3-1.el7.x86_64 libasyncns-0.8-7.el7.x86_64
> libattr-2.4.46-13.el7.x86_64 libcap-2.22-10.el7.x86_64
> libcom_err-1.42.9-16.el7.x86_64 libffi-3.0.13-18.el7.x86_64
> libgcc-4.8.5-39.el7.x86_64 libgcrypt-1.5.3-14.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 libgpg-error-1.12-3.el7.x86_64
> libjpeg-turbo-1.2.90-8.el7.x86_64 libogg-1.3.0-7.el7.x86_64
> libpng-1.5.13-7.el7_2.x86_64 libselinux-2.5-14.1.el7.x86_64
> libsndfile-1.0.25-10.el7.x86_64 libtasn1-4.10-1.el7.x86_64
> libuuid-2.23.2-61.el7.x86_64 libvncserver-0.9.9-13.el7_6.x86_64
> libvorbis-1.3.3-8.el7.1.x86_64 libwebp-0.3.0-7.el7.x86_64
> libxcb-1.13-1.el7.x86_64 lz4-1.7.5-3.el7.x86_64 lzo-minilzo-2.06-8.el7.x86_64
> nettle-2.7.1-8.el7.x86_64 openssl-libs-1.0.2k-19.el7.x86_64
> p11-kit-0.23.5-3.el7.x86_64 pcre-8.32-17.el7.x86_64
> pixman-0.34.0-1.el7.x86_64 pulseaudio-libs-10.0-5.el7.x86_64
> systemd-libs-219-67.el7_7.2.x86_64 tcp_wrappers-libs-7.6-77.el7.x86_64
> uuid-1.6.2-26.el7.x86_64 xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-18.el7.x86_64
> (gdb) bt
> #0 0x00007ff9cbcd1cc0 in pthread_mutex_lock () from /lib64/libpthread.so.0
> #1 0x00007ff9c05a0bd3 in guac_common_display_dup (display=0x0,
> user=user@entry=0x7ff9900008c0, socket=0x7ff990000b60) at display.c:169
> #2 0x00007ff9c059fbd7 in guac_vnc_user_join_handler (user=0x7ff9900008c0,
> argc=<optimized out>, argv=0x7ff9900048a0) at user.c:87
> #3 0x00007ff9cbeeafc8 in guac_client_add_user
> (client=client@entry=0x7ff9a4000bb0, user=user@entry=0x7ff9900008c0, argc=22,
> argv=<optimized out>)
> at client.c:307
> #4 0x00007ff9cbef2311 in guac_user_handle_connection (user=0x7ff9900008c0,
> usec_timeout=15000000) at user-handshake.c:414
> (gdb)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)