[Mono-bugs] [Bug 79519][Nor] New - Switching forms is not immediate on slow computers
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Thu Sep 28 09:22:50 EDT 2006
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 kuba.brecka at gmail.com.
http://bugzilla.ximian.com/show_bug.cgi?id=79519
--- shadow/79519 2006-09-28 09:22:50.000000000 -0400
+++ shadow/79519.tmp.15590 2006-09-28 09:22:50.000000000 -0400
@@ -0,0 +1,63 @@
+Bug#: 79519
+Product: Mono: Class Libraries
+Version: 1.1
+OS: GNU/Linux [Other]
+OS Details: Slackware
+Status: NEW
+Resolution:
+Severity:
+Priority: Normal
+Component: Windows.Forms
+AssignedTo: toshok at ximian.com
+ReportedBy: kuba.brecka at gmail.com
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: Switching forms is not immediate on slow computers
+
+To reproduce this bug, you need two forms, each with a button. When you
+click the button, BringToTop() of the other form is called. You when you
+put these forms to the same location (so the button are also on the same
+location), if you click continuosly on the button, the forms are switching.
+But, if you click very quickly, sometimes you manage to click the button on
+one form twice, before the other form shows up.
+
+The problem is that when you call Form.BringToTop, it should pause the
+processing of windows messages until the new forms is shown. The same
+happens with Form.Show, ShowModal and Hide.
+
+This bug is really difficult to reproduce. As far as I know it can be
+reproduced only on Linux (I wasn't able to reproduce it on Windows). The
+problem with this bug is that it appears only:
+ - on very slow computers (300 Mhz and below)
+ - or when the CPU load is very high
+
+I made a test case, that creates some threads to keep the processor busy.
+
+Steps to reproduce:
+1) Run the attached program on Linux.
+2) Click the "align" button.
+3) The "start thread" button starts a thread (a simple while (true) { } ).
+If you click it five times, it creates five threads. I can reproduce this
+bug with five threads. If it doesn't work, try 10 threads, then 15.
+4) Once the system is busy (application should work very slowly), start
+clicking very quickly on the "button1" button. This button only shows
+second form. On the second form, there is another button on the same place
+that shows the first form. So by clicking rapidly, the forms shouls be
+switching.
+5) After 15-20 seconds, exit the program (you will need to kill it by
+Ctrl-C or like that).
+6) The program creates a file named "a.log". Every click on button1 on the
+first form is logged as "1", every click on the button on the second form
+is logged as "2".
+
+Expected results:
+In the a.log, there should be a sequence of "12121212..."
+
+Actual results:
+If you click quickly enough, you should see a "11" or a "22" string the
+log. This is obviously a bug.
+
+Reproduce code:
+-- see attachment --
More information about the mono-bugs
mailing list