Uploaded image for project: 'Guacamole'
  1. Guacamole
  2. GUACAMOLE-1388

"Reconnect" resize method for RDP may cause clipboard assertion to fail

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.4.0
    • 1.4.0
    • RDP
    • None

    Description

      If an RDP connection is configured to use "Reconnect" as its resize method, an assertion within Guacamole's handling of the CLIPRDR channel may fail due to the relevant clipboard structure not actually being available:

      #0  0x00007fb19d795387 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:55
      #1  0x00007fb19d796a78 in __GI_abort () at abort.c:90
      #2  0x00007fb19d78e1a6 in __assert_fail_base (fmt=0x7fb19d8e9e00 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7fb1984ed825 "clipboard != ((void *)0)", file=file@entry=0x7fb1984ed812 "channels/cliprdr.c", line=line@entry=77, function=function@entry=0x7fb1984edd80 <__PRETTY_FUNCTION__.18895> "guac_rdp_cliprdr_send_format_list") at assert.c:92
      #3  0x00007fb19d78e252 in __GI___assert_fail (assertion=assertion@entry=0x7fb1984ed825 "clipboard != ((void *)0)", file=file@entry=0x7fb1984ed812 "channels/cliprdr.c", line=line@entry=77, function=function@entry=0x7fb1984edd80 <__PRETTY_FUNCTION__.18895> "guac_rdp_cliprdr_send_format_list") at assert.c:101
      #4  0x00007fb1984d70ef in guac_rdp_cliprdr_send_format_list (cliprdr=0x7fb184046d60) at channels/cliprdr.c:77
      #5  0x00007fb1984d7141 in guac_rdp_clipboard_end_handler (user=<optimized out>, stream=<optimized out>) at channels/cliprdr.c:657
      #6  0x00007fb19f23dd6e in __guac_handle_end (user=0x7fb1940029e0, argc=<optimized out>, argv=<optimized out>) at user-handlers.c:516
      #7  0x00007fb19f23e1c0 in guac_user_input_thread (data=<optimized out>) at user-handshake.c:165
      #8  0x00007fb19e65eea5 in start_thread (arg=0x7fb17bfff700) at pthread_create.c:307
      #9  0x00007fb19d85d9fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
      

      This does not appear to occur 100% of the time, but the following steps reproduce the issue fairly reliably:

      1. Open an SSH connection as a tile.
      2. Open an RDP connection that is configured to use the "Reconnect" resize method.
      3. Within the Guacamole menu, quickly uncheck and recheck the SSH connection so that its order on the screen changes from being first (leftmost) to last (rightmost).
      4. The RDP connection should disconnect or stop responding, with guacd reporting that the connection has been removed. The relevant connection process terminated abruptly because of the assertion failure.

      If a debugger is attached at the time, the corresponding assertion failure that resulted in the connection process closing will be easier to see.

      This appears to not strictly be a regression from GUACAMOLE-724, but the changes from GUACAMOLE-724 make it much more likely to occur in practice.

      Attachments

        Issue Links

          Activity

            People

              mjumper Mike Jumper
              mjumper Mike Jumper
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: