comp.lang.ada
 help / color / mirror / Atom feed
From: george.priv@gmail.com
Subject: Re: delay until problem in Windows
Date: Sun, 6 Apr 2008 20:10:38 -0700 (PDT)
Date: 2008-04-06T20:10:38-07:00	[thread overview]
Message-ID: <9bfa59b1-c5ef-42ee-9d2a-729d215293a3@a1g2000hsb.googlegroups.com> (raw)
In-Reply-To: b5e8b5e8-f725-4891-a931-b41ae96e2c53@m71g2000hse.googlegroups.com

On Apr 5, 6:51 pm, george.p...@gmail.com wrote:


Little update on the issue.  The following program was created to
reproduce the problem:

with Ada.Calendar;
use Ada.Calendar;
with Ada.Text_IO;
use Ada.Text_IO;

with Ada.Calendar.Formatting;
use Ada.Calendar.Formatting;

procedure Delay_Test is

   Start_Time  : Time := Clock;
   Time_Failed : Time := Start_Time; -- Time of first failure
encountered

   task Delay_Test_Tsk is
      entry Term;
   end Delay_Test_Tsk;

   task body Delay_Test_Tsk is

      DT            : constant Duration := 10.0;       -- Desired
Delta T
      Time_For_Next :          Time     := Clock + DT; -- Next cycle
      Last          :          Time     := Clock;      -- Last cycle
clocked
      Fail_Count    :          Natural  := 0;

   begin

      while Fail_Count < 5 loop

         select
            accept Term;
            exit;
         or
            delay until Time_For_Next;
            declare
               Actual_Delta : Duration := Clock - Last;
            begin

               Last := Clock;
               Time_For_Next := Last + DT;

               Put_Line("Actual Delay: " &
Duration'Image(Actual_Delta)
                  & ", Running (h):"
                  & Duration'Image((Clock - Start_Time)/3600.0));
               if Actual_Delta < DT then
                  if Fail_Count = 0 then
                     Time_Failed := Clock;
                  end if;
                  Fail_Count := Fail_Count + 1;
               else
                  Fail_Count := 0;
               end if;
            end;

         end select;

      end loop;

      Put_Line("Started at:" & Image(Start_Time));

      if Time_Failed /= Start_Time then
         Put_Line("Failed at :" & Image(Time_Failed));
         Put_Line("Failed after  :" & Duration'Image(Time_Failed -
Start_Time));
      end if;

   end Delay_Test_Tsk;

   Line : String (1 .. 80);
   Last : Natural;

begin
   loop
      Get_Line(Line, Last);
      exit when Line(1) = 'q' or Line(1) = 'Q';
   end loop;
   Delay_Test_Tsk.Term;
end Delay_Test;




Results vary from Windows flavors and I am not sure also that it is
not related to a particular hardware.  So far it is fine on Vista
(after 22 hours) and XP (10 Hours).  It failed on Server 2003 after 12
hours see output:

Actual Delay:  10.000372615, Running (h): 11.836564300
Actual Delay:  10.000381345, Running (h): 11.839342185
Actual Delay:  10.000370677, Running (h): 11.842120066
Actual Delay:  10.000379534, Running (h): 11.844897949
Actual Delay:  10.000372998, Running (h): 11.847675831
Actual Delay:  10.000545537, Running (h): 11.850453761
Actual Delay:  7.984454967, Running (h): 11.852675966
Actual Delay:  7.984806621, Running (h): 11.854893969
Actual Delay:  7.984636928, Running (h): 11.857111924
Actual Delay:  7.984678819, Running (h): 11.859329891
Actual Delay:  7.984673656, Running (h): 11.861547856
Started at:2008-04-06 07:14:09
Failed at :2008-04-06 19:05:18
Failed after  : 42669.633539129


If anyone would like to check their systems and let us know?





  parent reply	other threads:[~2008-04-07  3:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-05 22:51 delay until problem in Windows george.priv
2008-04-06 21:04 ` Jacob Sparre Andersen
2008-04-07  3:32   ` george.priv
2008-04-07  3:10 ` george.priv [this message]
2008-04-07  7:25   ` Dmitry A. Kazakov
2008-04-07 14:43     ` george.priv
2008-04-07 14:51       ` george.priv
2008-04-08 11:02         ` Alex R. Mosteo
2008-04-09 14:56     ` george.priv
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox