[ 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)