[comp.sys.isis] Time warp! Adjusting timers by 0.-150 secs

jmd@sbctri.sbc.com (James M. Doherty) (01/28/91)

Can anyone out there help us determine what is causing this error, currently
we are running isis at about 20 sites, recently I ported the isis to the tandem
integreity S2 a fault tolerant platform running SYS V3.2 with a berkly fast
file system.  There are also several sun workstations involved with the network
and others. 

In order to port the code to the tandem we had to compile it without unix domain sockets. All of our other machines support this.

	Could this be the cause ?

The error message we are getting follows :
===========================================
... Time is now Mon Jan 28 08:34:24 1991
Time warp!  Adjusting timers by 0.-010 secs
Time warp!  Adjusting timers by 0.-160 secs
Time warp!  Adjusting timers by 0.-730 secs
Time warp!  Adjusting timers by 0.-200 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-750 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-750 secs
... Time is now Mon Jan 28 08:35:26 1991
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-110 secs
... Time is now Mon Jan 28 08:37:01 1991
Time warp!  Adjusting timers by 0.-150 secs
Time warp!  Adjusting timers by 0.-110 secs

===========================================

I am concerned  because isis seems to come up and then crash after a period of 
5 to 10 minutes. 

The code in question is in :

	pr_main.c:
============================================
time_warp(delta)
  {
      register qnode *qp;
      print("Time warp!  Adjusting timers by %d.%.3d secs\n", delta/1000, delta%1000);
      for(qp = time_queue->qu_next; qp != time_queue; qp = qp->qu_next)
      qp->qu_time += delta;
      net_timewarp(delta);
  }
============================================
It is referenced in main_loop with the following :
============================================

 /* Detect small time jumps here */
            time_warp(delta);
            }
                if(rv == 0)
                    bclr(&in_mask);
                if(btst(&out_mask))
                    cl_restart_io(out_mask);
            }
============================================
Gettime()
  {
        static PREV_TIME;
        struct timeval tp;
        register time, delta;
        gettimeofday(&tp, (struct timezone*)0);
        time = (tp.tv_sec-time_0.tv_sec)*1000 + tp.tv_usec/1000;
    PREV_TIME = ISIS_TIME;
        ISIS_TIME = time;
    delta = time-PREV_TIME;
    if(delta < 0 || delta > 180000)
            time_warp(delta);
        return(time);
  }
============================================

	Any thoughts or help would be appreciated !