Hello,
I'm forwarding my mail again since nobody replied to it.
What do developers think about it?
Best regards,
-Vlad
----- Forwarded message from Vlad Harchev <[EMAIL PROTECTED]> -----
From: Vlad Harchev <[EMAIL PROTECTED]>
Subject: Re: Xvnc-3.3.3 eats 100% CPU sometimes after a week of work or
time adjustment
Date: Thu, 26 Jun 2003 12:47:21 +0500
To: [EMAIL PROTECTED]
User-Agent: Mutt/1.4i
On Fri, Nov 01, 2002 at 05:21:57PM +0400, Vlad Harchev wrote:
Hello,
Please note to how old message (that was left unreplied) I'm replying too.
> On Fri, 1 Nov 2002, Vlad Harchev wrote:
>
> > Hi,
> >
> > I'm using Xvnc-3.3.3 from redhat-7.2 for x86 (package name is
> > vnc-server-3.3.3r2-18).
> > I encounter the following problem with it:
> >
> > Sometimes Xvnc begins eating 100% CPU. Stracing it I get the following loop
> > (2 cycles shown):
> >
> > time(NULL) = 1026840822
> > select(128, [0 1 3 5 6 7 8], NULL, NULL, {0, 0}) = 0 (Timeout)
> > select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)
> > gettimeofday({1026840822, 9415}, NULL) = 0
> > time(NULL) = 1026840822
> > select(128, [0 1 3 5 6 7 8], NULL, NULL, {0, 0}) = 0 (Timeout)
> > select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)
> > gettimeofday({1026840822, 9622}, NULL) = 0
> >
> > In such state Xvnc perfectly accepts connections from vncviewers, and works
> > fine.
> >
> > Only killing Xvnc stops it from eating all CPU.
> >
> > As I observed, Xvnc switches to this state in the following conditions:
> > 1) Either 1 week or more of process life.
> > 2) Changing the time on the box (e.g. increasing current system time by a
> > couple of minutes using 'date -s').
> > It seems condition 1 is necessary, and condition 2 is not necessary provided
> > condition 1 takes place.
> >
> > There are several Xvncs running on that box - they are started at the same
> > time (with precission of several seconds), and they begin eating CPU almost at
> > the same time. Not all Xvncs that switch to that state are connected to - one
> > of Xvncs is run for programs just to have $DISPLAY pointing somewhere, and
> > it's started as "Xvnc -ac -depth 8 -geometry 20x20 -fp
> > tcp/localhost:7100 :8" and NO apps draw windows on it at all too, and it also
> > begins eating CPU too. Other Xvncs are run using following commandline:
> > "Xvnc -fp tcp/localhost:7100 -pixelformat rgb565 -depth 16 -geometry 1024x768"
> >
> > Here is a stderr output of the Xvnc that nobody was connecting to:
> > ------
> > started at Oct 22 18:12:31 2002
> > 22/10/02 18:12:31 Xvnc version 3.3.3r2+tight1.1p9
> > 22/10/02 18:12:31 Copyright (C) AT&T Laboratories Cambridge.
> > 22/10/02 18:12:31 All Rights Reserved.
> > 22/10/02 18:12:31 See http://www.uk.research.att.com/vnc for information on
> > VNC
> > 22/10/02 18:12:31 Desktop name 'x11' (srv:8)
> > 22/10/02 18:12:31 Protocol version supported 3.3
> > 22/10/02 18:12:31 Listening for VNC connections on TCP port 5908
> > -------
> > As you can see, the log is empty (no connections were made to this Xvnc).
> > It started eating all CPU on oct 31 between 21:30 and 21:40 (I'm using
> > reports provided by sar(1)).
>
> I'm sorry, I forgot to add that I changed the system time (increaded by 5
> minutes) on Oct 31 21:36. So it seems Xvnc began eating all CPU
> almost immedeately..
>
> Best regards,
> -Vlad
>
Yesterday RedHat released updates to the XFree86 package for RH7.x and Rh8,
which had the following among the list of problems fixed:
{{
- - Fix a long standing problem in the X server where the mouse, keyboard, or
video would hang, or the server to go into an endless loop whenever the
system time was changed backwards
}}
It fully matches symptoms I've witnessed.
After inspecting that source package for XFree, it turned out that:
Description of the problem can be found at:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=63509
The patch that fixes this problem is rather short, and I've attached it.
What do you think about it?
Could developers please review it, try to apply, and ideally make a new
release of Xvnc?
--
Best regards,
-Vlad
This patch for 4.2.1, guarantees time atomicity in GetTimeInMillis() which should
prevent time skew from crashing the X server. <[EMAIL PROTECTED]>
--- xc/programs/Xserver/hw/xfree86/common/xf86Io.c:3.49 Fri May 31 14:45:58 2002
+++ xc/programs/Xserver/hw/xfree86/common/xf86Io.c Mon Sep 16 14:05:46 2002
@@ -400,25 +400,20 @@
{
struct timeval tp;
register CARD32 val;
+ register INT32 diff;
static CARD32 oldval = 0;
- static CARD32 skew = 0;
+ static CARD32 time = 0;
gettimeofday(&tp, 0);
- val = (tp.tv_sec * 1000) + (tp.tv_usec / 1000) + skew;
- /* On some systems the clock is not monothonic */
- if ((val < oldval) && ((oldval - val) < HALFMONTH)) {
- /* if clock is not monothonic find out clock skew skew */
- xf86MsgVerb(X_WARNING,4,"System time not monotonic!\n");
- skew += oldval - val;
- val = (tp.tv_sec * 1000) + (tp.tv_usec / 1000) + skew;
- } else if (skew && ((val - oldval) < HALFMONTH)) {
- /* try to reduce skew */
- INT32 diff = skew - (val - oldval);
- skew = diff < 0 ? 0 : diff;
- val = (tp.tv_sec * 1000) + (tp.tv_usec / 1000) + skew;
+ val = (tp.tv_sec * 1000) + (tp.tv_usec / 1000);
+ if (oldval) {
+ diff = val - oldval;
+ if (diff > 0)
+ time += diff;
}
oldval = val;
- return val;
+
+ return time;
}
#endif /* DDXTIME && !QNX4 */
_______________________________________________
VNC-List mailing list
[EMAIL PROTECTED]
To remove yourself from the list visit:
http://www.realvnc.com/mailman/listinfo/vnc-list
----- End forwarded message -----
_______________________________________________
VNC-List mailing list
[EMAIL PROTECTED]
To remove yourself from the list visit:
http://www.realvnc.com/mailman/listinfo/vnc-list