Hello all, first many thanks for your great work! I'm a system administrator with very few C knowledge but I'm working on xrdp since april 2010 in order to understand deeply how it works.
I did some patch to xrdp (0.5.0) in order to have the following features implemented for my company: - Using the same unix user for all sessions (startwm -> X11rdp + firefox + java_vm) distinguishing the sessions by a "terminal_id". so the code was modified as below: - Username does not identify anymore the session, a "terminal_id" is used instead - Directory field has been replaced. This field now contains the "terminal_id" (aka: unique number that identify the terminal server client) - If directory field is empty, then it failback using usernames to identify sessions - terminal_id is also passed as parameter to session startup script - Some logging improved to identify connections, reconnection, disconnections this patches are very light and they work very well but sometimes the session hangs during reconnection in this way: 1. I can see login windows 2. connecting to sesman ok 3. connecting (xup) 4. connected ok 5. it freezes a little bit here and then the connection closes itself :( it happens randomly so it is difficult to analyse. What I found is that sometime the xrdp-chansrv session process got creazy because of SIGPIPE. Here the log: xrdp-chansrv [0552054173]: main: using DISPLAY 28 xrdp-chansrv [0552054257]: channel_thread_loop: thread start xrdp-chansrv [0552054934]: send_init_response_message: xrdp-chansrv [0552054946]: clipboard_init: g_xfixes_event_base 106 xrdp-chansrv [0552054947]: clipboard_init st 1, maj 4 min 0 xrdp-chansrv [0552135738]: channel_thread_loop: trans_check_wait_objs error resetting xrdp-chansrv [0552144866]: send_init_response_message: xrdp-chansrv [0552144871]: clipboard_init: g_xfixes_event_base 106 xrdp-chansrv [0552144871]: clipboard_init st 1, maj 4 min 0 xrdp-chansrv [0552180176]: nil_signal_handler: got signal 13 <last line repeated infinitively> What can I do? I thought to patch chansrv.c in this way: Index: chansrv.c =================================================================== --- chansrv.c (revision 2678) +++ chansrv.c (working copy) @@ -519,6 +519,7 @@ nil_signal_handler(int sig) { LOG(1, ("nil_signal_handler: got signal %d", sig)); + g_set_wait_obj(g_term_event); } i'm still testing but not sure it will fix this strange behaviour... any idea? thanks, Nicola Ps. I already checked the kernel parameters (like number open files etc...) and seems to be ok. ------------------------------------------------------------------------------ ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo _______________________________________________ xrdp-devel mailing list xrdp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xrdp-devel