[ 
https://issues.apache.org/jira/browse/GUACAMOLE-767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805540#comment-16805540
 ] 

Michael Jumper commented on GUACAMOLE-767:
------------------------------------------

[~MathiasM], you should not use such an ancient guacd. If you are seeing this 
behavior only in later releases (and can reproduce it reliably), a git bisect 
between 0.9.4 and 1.0.0 may be in order.

>From what I recall having looked into this before, there are cases where 
>FreeRDP mishandles failures on a file descriptor it uses for event handling, 
>resulting in a busy loop. I don't believe there's anything something external 
>to FreeRDP like guacd can do to avoid that (other than defensively kill closed 
>connections that appear unresponsive, as done via GUACAMOLE-533), but if this 
>doesn't occur with an older guacd, it's worth finding out why.

> Guacd running in container may not terminate and start consuming CPU
> --------------------------------------------------------------------
>
>                 Key: GUACAMOLE-767
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-767
>             Project: Guacamole
>          Issue Type: Bug
>          Components: guacamole
>    Affects Versions: 1.0.0
>            Reporter: Constantin M
>            Priority: Major
>
> A guacd process may drop the connection to the rdp server and stay around 
> consuming CPU.
>  The rdp is the xrdp v0.9.9  [https://github.com/neutrinolabs/xrdp/releases]
>  This happens when the guacd is running in a docker container 
> [https://hub.docker.com/r/guacamole/guacd/] 1.0.0
>  In this case the connection to the guacamole client enters in a CLOSE_WAIT 
> state.
> The parent guacd process starts writing WaitForSingleObject: unknown handle 
> type, but is able to accept new clients.
> A backtrace of the hanging process looks like:
>  
>  {{Thread 6 (Thread 0x7f7c35b78700 (LWP 953)):}}
>  {{#0  0x00007f7c48684603 in select () at 
> ../sysdeps/unix/syscall-template.S:84}}
>  {{#1  0x00007f7c3cfe1f33 in WaitForSingleObject () from 
> /usr/lib/x86_64-linux-gnu/libwinpr-synch.so.0.1}}
>  {{#2  0x00007f7c3d3f2352 in MessageQueue_Wait () from 
> /usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1}}
>  {{#3  0x00007f7c3fbd789f in ?? () from 
> /usr/lib/x86_64-linux-gnu/libfreerdp-utils.so.1.1}}
>  {{#4  0x00007f7c494bc4a4 in start_thread (arg=0x7f7c35b78700) at 
> pthread_create.c:456}}
>  {{#5  0x00007f7c4868bd0f in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:97}}
> {{Thread 5 (Thread 0x7f7c36379700 (LWP 952)):}}
>  {{#0  0x00007f7c48684603 in select () at 
> ../sysdeps/unix/syscall-template.S:84}}
>  {{#1  0x00007f7c3cfe1f33 in WaitForSingleObject () from 
> /usr/lib/x86_64-linux-gnu/libwinpr-synch.so.0.1}}
>  {{#2  0x00007f7c3d3f2352 in MessageQueue_Wait () from 
> /usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1}}
>  {{#3  0x00007f7c3fbd789f in ?? () from 
> /usr/lib/x86_64-linux-gnu/libfreerdp-utils.so.1.1}}
>  {{#4  0x00007f7c494bc4a4 in start_thread (arg=0x7f7c36379700) at 
> pthread_create.c:456}}
>  {{#5  0x00007f7c4868bd0f in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:97}}
> {{Thread 4 (Thread 0x7f7c376d4700 (LWP 951)):}}
>  {{#0  __lll_lock_wait () at 
> ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135}}
>  {{#1  0x00007f7c494bec26 in __GI___pthread_mutex_lock (mutex=0x7f7c4001cec8) 
> at ../nptl/pthread_mutex_lock.c:115}}
>  {{#2  0x00007f7c444c37da in guac_rdp_user_mouse_handler 
> (user=0x7f7c38002ad0, x=1051, y=641, mask=0) at input.c:41}}
>  {{#3  0x00007f7c4a09792e in __guac_handle_mouse (user=0x7f7c38002ad0, 
> argc=3, argv=0x7f7c38004a20) at user-handlers.c:142}}
>  {{#4  0x00007f7c4a096fd4 in guac_user_handle_instruction 
> (user=0x7f7c38002ad0, opcode=0x7f7c3800632f "mouse", argc=3, 
> argv=0x7f7c38004a20) at user.c:178}}
>  {{#5  0x00007f7c4a0987c0 in guac_user_input_thread (data=0x7f7c44eedd10) at 
> user-handshake.c:222}}
>  {{#6  0x00007f7c494bc4a4 in start_thread (arg=0x7f7c376d4700) at 
> pthread_create.c:456}}
>  {{#7  0x00007f7c4868bd0f in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:97}}
> {{Thread 3 (Thread 0x7f7c456ef700 (LWP 950)):}}
>  {{#0  0x00007f7c4867e92d in read () at 
> ../sysdeps/unix/syscall-template.S:84}}
>  {{#1  0x00007f7c4868bfde in eventfd_read (fd=<optimized out>, 
> value=<optimized out>) at ../sysdeps/unix/sysv/linux/eventfd_read.c:26}}
>  {{#2  0x00007f7c3cfe1725 in ResetEvent () from 
> /usr/lib/x86_64-linux-gnu/libwinpr-synch.so.0.1}}
>  {{#3  0x00007f7c4427bd59 in transport_check_fds () from 
> /usr/lib/x86_64-linux-gnu/libfreerdp-core.so.1.1}}
>  {{#4  0x00007f7c4426c407 in freerdp_check_fds () from 
> /usr/lib/x86_64-linux-gnu/libfreerdp-core.so.1.1}}
>  {{#5  0x00007f7c444c52b2 in guac_rdp_handle_connection 
> (client=0x7f7c4000b010) at rdp.c:768}}
>  {{#6  0x00007f7c444c58ff in guac_rdp_client_thread (data=0x7f7c4000b010) at 
> rdp.c:1013}}
>  {{#7  0x00007f7c494bc4a4 in start_thread (arg=0x7f7c456ef700) at 
> pthread_create.c:456}}
>  {{#8  0x00007f7c4868bd0f in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:97}}
> {{Thread 2 (Thread 0x7f7c44eee700 (LWP 949)):}}
>  {{#0  0x00007f7c494bd6dd in pthread_join (threadid=140171482580736, 
> thread_return=0x0) at pthread_join.c:90}}
>  {{#1  0x00007f7c4a0988c4 in guac_user_start (parser=0x7f7c380049f0, 
> user=0x7f7c38002ad0, usec_timeout=15000000) at user-handshake.c:278}}
>  {{#2  0x00007f7c4a098d37 in guac_user_handle_connection 
> (user=0x7f7c38002ad0, usec_timeout=15000000) at user-handshake.c:417}}
>  {{#3  0x0000558b4027979f in guacd_user_thread (data=0x7f7c400297a0) at 
> proc.c:98}}
>  {{#4  0x00007f7c494bc4a4 in start_thread (arg=0x7f7c44eee700) at 
> pthread_create.c:456}}
>  {{#5  0x00007f7c4868bd0f in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:97}}
> {{Thread 1 (Thread 0x7f7c45ef0700 (LWP 946)):}}
>  {{#0  0x00007f7c494c5e10 in __libc_recvmsg (fd=8, msg=0x7f7c45eefc60, 
> flags=0) at ../sysdeps/unix/sysv/linux/recvmsg.c:28}}
>  {{#1  0x0000558b40279683 in guacd_recv_fd (sock=8) at move-fd.c:86}}
>  {{#2  0x0000558b40279b03 in guacd_exec_proc (proc=0x7f7c4000aff0, 
> protocol=0x7f7c4000c113 "rdp") at proc.c:335}}
>  {{#3  0x0000558b40279dba in guacd_create_proc (protocol=0x7f7c4000c113 
> "rdp") at proc.c:441}}
>  {{#4  0x0000558b402786b8 in guacd_route_connection (map=0x7f7c4a3aa010, 
> socket=0x7f7c4000af10) at connection.c:298}}
>  {{#5  0x0000558b402788ca in guacd_connection_thread (data=0x558b41c3b3f0) at 
> connection.c:393}}
>  {{#6  0x00007f7c494bc4a4 in start_thread (arg=0x7f7c45ef0700) at 
> pthread_create.c:456}}
>  



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

Reply via email to