Oops. I sent this to Ty directly, now I will send it to the mailing list.
On Wed, May 20, 2009 at 4:33 PM, Ty Hahn <[email protected]> wrote:
> On Wed, May 20, 2009 at 9:20 AM, Robert Seward
> <[email protected]> wrote:
>> I have never experienced this, but I think there is a locking race in the
>> code. I have been making changes for myself in this area of the code, so I
>> could come up with a change and let you try it out. Give me a few days.
>>
>
> Actually it was not that hard for me to reproduce the situation. It's
> quite persistent.
> Writing a shell script opening two xrdp sessions was enough to reproduce.
I tried to reproduce this by opening two xrdp sessions at once, but it
never happened. Maybe I don't have enough processors on the server.
> Anyway. Thanks for your reply and I look forward to your code.
Attached is a patch. This patch isn't the best solution - it will
slow down the rate at which xrdp can start new sessions - but it is
simple and will let us know if I am on the right track.
Robert
Index: sesman/session.c
===================================================================
RCS file: /cvsroot/xrdp/xrdp/sesman/session.c,v
retrieving revision 1.31
diff -c -r1.31 session.c
*** sesman/session.c 20 Apr 2009 04:31:24 -0000 1.31
--- sesman/session.c 21 May 2009 16:30:44 -0000
***************
*** 424,429 ****
--- 424,443 ----
}
else /* parent sesman process */
{
+ /*
+ * Wait for a while to make sure the X server starts before continuing on.
+ * We wait here so that no other thread tries to grab this display number.
+ */
+ for (i = 0; !x_server_running(display); ++i)
+ {
+ if (i > 240)
+ {
+ log_message(&(g_cfg->log), LOG_LEVEL_ERROR,
+ "X server for display %d startup timeout", display);
+ return 0;
+ }
+ g_sleep(250);
+ }
temp->item->pid = pid;
temp->item->display = display;
temp->item->width = width;
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
xrdp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xrdp-devel