|
From: george.priv on 5 Apr 2008 18:51 Simplified code: task body Some_task is Time_For_Next_Frame : time; procedure Fetch_Frame is -- Here is where Time_For_Next_Frame is calculated begin Send_Frame; Time_For_Next_Frame := Clock + Desired_Delta_T; end Fetch_Frame; begin loop select ... or delay until Time_For_Next_Frame; Fetch_Frame; end loop; end Some_Task; Symptoms: After over 24+ hour operations it seems that delay gives no delay no matter what value there is on Windows system . On Linux all is fine. If I replace delay statement with delay Desired_Delta_T; all seemed fine. Does anyone knows of that limitation? George.
From: george.priv on 6 Apr 2008 23:10 On Apr 5, 6:51 pm, george.p...(a)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?
From: Dmitry A. Kazakov on 7 Apr 2008 03:25 On Sun, 6 Apr 2008 20:10:38 -0700 (PDT), george.priv(a)gmail.com wrote: > On Apr 5, 6:51 pm, george.p...(a)gmail.com wrote: [...] > with Ada.Calendar; > use Ada.Calendar; I don't know the implementation of, but Ada.Calendar is a political time, influenced by the time synchronization stuff. What happens if you replace it by Ada.Real_Time? -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de
From: george.priv on 7 Apr 2008 10:43 On Apr 7, 3:25 am, "Dmitry A. Kazakov" <mail...(a)dmitry-kazakov.de> wrote: > On Sun, 6 Apr 2008 20:10:38 -0700 (PDT), george.p...(a)gmail.com wrote: > > On Apr 5, 6:51 pm, george.p...(a)gmail.com wrote: > > [...] > > > with Ada.Calendar; > > use Ada.Calendar; > > I don't know the implementation of, but Ada.Calendar is a political time, > influenced by the time synchronization stuff. What happens if you replace > it by Ada.Real_Time? > > -- > Regards, > Dmitry A. Kazakovhttp://www.dmitry-kazakov.de It may worth trying and I will set this up running at first opportunity, but I think since it is a particular computer system/OS combination it should eliminate "political" issue since all systems are in one time zone and all synced from the same time server. So far I saw that happening only on one system with Server 2003. Similar hardware running Debian is doing fine. Other machines running Windows XP and Vista (Notebook) went for 32 hours now and doing fine. All workstations at my place are the same - that limits my sample pool. I also do repeat run on failed machine to see if there will be consistency in times. Regards, George Privalov
From: george.priv on 7 Apr 2008 10:51 On Apr 7, 10:43 am, george.p...(a)gmail.com wrote: > On Apr 7, 3:25 am, "Dmitry A. Kazakov" <mail...(a)dmitry-kazakov.de> > wrote: > > > On Sun, 6 Apr 2008 20:10:38 -0700 (PDT), george.p...(a)gmail.com wrote: > > > On Apr 5, 6:51 pm, george.p...(a)gmail.com wrote: > > > [...] > > > > with Ada.Calendar; > > > use Ada.Calendar; > > > I don't know the implementation of, but Ada.Calendar is a political time, > > influenced by the time synchronization stuff. What happens if you replace > > it by Ada.Real_Time? > > > -- > > Regards, > > Dmitry A. Kazakovhttp://www.dmitry-kazakov.de > > It may worth trying and I will set this up running at first > opportunity, but I think since it is a particular computer system/OS > combination it should eliminate "political" issue since all systems > are in one time zone and all synced from the same time server. So far > I saw that happening only on one system with Server 2003. Similar > hardware running Debian is doing fine. Other machines running Windows > XP and Vista (Notebook) went for 32 hours now and doing fine. All > workstations at my place are the same - that limits my sample pool. I > also do repeat run on failed machine to see if there will be > consistency in times. > > Regards, > > George Privalov As soon as I posted that message, my XP workstation failed. But time is now off forward 2 seconds after 30.5 hours. So drama is not over yet. Actual Delay: 10.000123715, Running (h): 30.430967673 Actual Delay: 10.000125595, Running (h): 30.433745487 Actual Delay: 10.000125257, Running (h): 30.436523299 Actual Delay: 10.000124860, Running (h): 30.439301112 Actual Delay: 10.000124743, Running (h): 30.442078925 Actual Delay: 12.000310334, Running (h): 30.445412345 Actual Delay: 12.000189837, Running (h): 30.448745732 Actual Delay: 12.000190605, Running (h): 30.452079118 Actual Delay: 12.000190805, Running (h): 30.455412505 Actual Delay: 12.000191032, Running (h): 30.458745892 Actual Delay: 12.000189268, Running (h): 30.462079278 Actual Delay: 12.000190642, Running (h): 30.465412665 Actual Delay: 12.000190666, Running (h): 30.468746051 Actual Delay: 12.000190224, Running (h): 30.472079438 Actual Delay: 12.000190730, Running (h): 30.475412825 George
|
Next
|
Last
Pages: 1 2 Prev: Child Package Operator Visibility Next: problem linking with glu and win32ada |