Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=80063 --- shadow/80063 2006-11-27 05:06:11.000000000 -0500 +++ shadow/80063.tmp.19322 2006-11-27 05:06:11.000000000 -0500 @@ -0,0 +1,63 @@ +Bug#: 80063 +Product: Mono: Runtime +Version: 1.2 +OS: GNU/Linux [Other] +OS Details: +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: io-layer +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: Signals abort Thread.Sleep + +Description of Problem: +When a non-fatal signal arrives at a process, running sleeps get interrupted. + +Steps to reproduce the problem: +1. Invoke the following: + +using System; +using System.Runtime.InteropServices; +using System.Threading; + +class X { + const int SIGQUIT = 3; + [DllImport("libc")] + static extern int raise(int signal); + + static void Main() { + new Thread(Raiser).Start(); + DateTime before = DateTime.UtcNow; + Thread.Sleep(4000); + DateTime after = DateTime.UtcNow; + int millis = after.Subtract(before).Milliseconds; + Console.WriteLine("Slept for {0} ms", millis); + if (millis < 3900) throw new Exception("Too few millis"); + } + + static void Raiser() { + Thread.Sleep(500); + raise(SIGQUIT); + } +} + +Actual Results: +Full thread dump: +[cut irrelevant stack traces] +Slept for 501 ms + +Unhandled Exception: System.Exception: Too few millis + at X.Main () [0x00000] + +Expected Results: +Reissuing the sleep after EINTR if necessary, always giving timestamp +difference of at least 4000 ms (+- system clock inaccuracies). + +How often does this happen? +Always. The actual time varies between 500 and 610 ms. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
