OoO En  ce début  d'après-midi nuageux du  samedi 20 octobre  2007, vers
14:51, Jens Thiele <[EMAIL PROTECTED]> disait:

> Package: xrdp
> Version: 0.4.0~dfsg-3
> Severity: wishlist

> xrdp wakes up every 100000 usec. (10 times/s) if there is nothing to do.
> This is annoying if you run xrdp in a virtual machine.

> ltrace:
> usleep(100000)                                                               
> = <void>
> pthread_mutex_lock(0x805b1d0, 0xb7ea0a4c, 0xbf83fe48, 0x804b603, 0x805b1d0)  
> = 0
> pthread_mutex_unlock(0x805b1d0, 0xb7ea0a4c, 0xbf83fe48, 0x804b632, 0x805b1d0) 
> = 0
> pthread_mutex_lock(0x805b1b0, 0xb7ea0a4c, 0xbf83fe48, 0x804b694, 0x805b1b0)  
> = 0
> pthread_mutex_unlock(0x805b1b0, 0xb7ea0a4c, 0xbf83fe48, 0x804b6a7, 0x805b1b0) 
> = 0
> accept(3, 0xbf83fe34, 0xbf83fe44, 0, 0x805b008)                              
> = -1
> __errno_location()                                                           
> = 0xb7c7368c
> usleep(100000)                                                               
> = <void>
> pthread_mutex_lock(0x805b1d0, 0xb7ea0a4c, 0xbf83fe48, 0x804b603, 0x805b1d0)  
> = 0
> pthread_mutex_unlock(0x805b1d0, 0xb7ea0a4c, 0xbf83fe48, 0x804b632, 0x805b1d0) 
> = 0
> pthread_mutex_lock(0x805b1b0, 0xb7ea0a4c, 0xbf83fe48, 0x804b694, 0x805b1b0)  
> = 0
> pthread_mutex_unlock(0x805b1b0, 0xb7ea0a4c, 0xbf83fe48, 0x804b6a7, 0x805b1b0) 
> = 0
> accept(3, 0xbf83fe34, 0xbf83fe44, 0, 0x805b008)                              
> = -1
> __errno_location()                                                           
> = 0xb7c7368c


>> lsof -p 7875|grep 3u
> xrdp    7875 xrdp    3u  IPv4  16827             TCP *:3389 (LISTEN)


> quick look at the code:
> maybe at xrdp_listen.c:211:
>       error = g_tcp_accept(self->sck);
>       if ((error == -1) && g_tcp_last_error_would_block(self->sck))
>       {
>         g_sleep(100);
>         g_loop();
>       }

I have changed 100 to 200 and ltrace shows that the value is doubled. So
you  seem  to  have  spotted  the  right point  of  wake-up.  A  bit  of
investigation shows that g_loop() is used to dynamically load modules in
the main thread.

Jay, do you see a simple fix for this problem?

Thanks.
-- 
# Okay, what on Earth is this one supposed to be used for?
        2.4.0 linux/drivers/char/cp437.uni


Reply via email to