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
[email protected]
https://lists.sourceforge.net/lists/listinfo/xrdp-devel