[Mono-bugs] [Bug 82689][Nor] New - ListView: Win32 hang on infinite recalc (?when both scrollbars needed)

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Tue Sep 4 10:40:34 EDT 2007


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 andyhume32 at yahoo.co.uk.

http://bugzilla.ximian.com/show_bug.cgi?id=82689

--- shadow/82689	2007-09-04 10:40:34.000000000 -0400
+++ shadow/82689.tmp.18784	2007-09-04 10:40:34.000000000 -0400
@@ -0,0 +1,270 @@
+Bug#: 82689
+Product: Mono: Class Libraries
+Version: 1.2
+OS: 
+OS Details: XP SP2
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Normal
+Component: Windows.Forms
+AssignedTo: mono-bugs at ximian.com                            
+ReportedBy: andyhume32 at yahoo.co.uk               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: ListView: Win32 hang on infinite recalc (?when both scrollbars needed)
+
+ListView on Win32 often goes into an infinite loop of NCCALCSIZE-NCPAINT-
+ERASEBKGND-WINDOWPOSCHANGED-WINDOWPOSCHANGING-etc and thus hangs the 
+application.  Partial Windows SDK Spy++ log below, full 250KB log 
+available.  It seems to occur when the listview needs both scrollbars.  
+I'll attach a screenshot.
+
+In some circumstances -- perhaps mouse in window, or child dialog was 
+over window -- it instead crashes with:
+
+(trimmed--full trace below)[[
+Unhandled Exception: System.MemberAccessException: Object is busy and 
+cannot state allow this operation [GDI+ status: ObjectBusy]
+
+at System.Drawing.GDIPlus.CheckStatus (System.Drawing.Status) [0x000df] 
+in System.Drawing\gdipFunctions.cs:206
+at System.Drawing.Graphics.FillRectangle 
+(System.Drawing.Brush,int,int,int,int) [0x0002a] in 
+System.Drawing\Graphics.cs:1600
+at System.Drawing.Graphics.FillRectangle 
+(System.Drawing.Brush,System.Drawing.Rectangle) [0x00012] in 
+System.Drawing\Graphics.cs:1591
+at (wrapper remoting-invoke-with-check) 
+System.Drawing.Graphics.FillRectangle 
+(System.Drawing.Brush,System.Drawing.Rectangle) <0x000ce>
+at System.Windows.Forms.Control.PaintControlBackground 
+(System.Windows.Forms.PaintEventArgs) [0x00326] in 
+System.Windows.Forms\Control.cs:1398
+at System.Windows.Forms.Control.OnPaintBackground 
+(System.Windows.Forms.PaintEventArgs) [0x00000] in 
+System.Windows.Forms\Control.cs:5994
+...
+...
+]]
+
+I'm having difficulty creating a small-ish app reproducing this.  The 
+full application is one of the samples available in my Brecham.Obex 
+available from http://32feet.NET  However it needs to talk to a OBEX 
+peer -- normally an IrDA or Bluetooth device -- that supports the Folder-
+Browsing (Bluetooth's FTP) service.  And without patched socket-io.c 
+Bluetooth and IrDA sockets can't be used on Mono.
+
+I have test both with patched mono SVN head, and also by using a TCP/IP-
+>Bluetooth proxy server with 1.2.5, and on 1.2.4 with some hacks to the 
+app.  It shows both behaviours on all three.  I think that I've added a 
+file with a long name to the remote folder hence not seeing this problems 
+previously.
+
+
+[[
+...
+...
+<04954> 000A0C0A S WM_WINDOWPOSCHANGING lpwp:0022F59C
+<04955> 000A0C0A R WM_WINDOWPOSCHANGING
+<04956> 000A0C0A S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0022F570
+<04957> 000A0C0A R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0022F570
+<04958> 000A0C0A S WM_NCPAINT hrgn:48040C49
+<04959> 000A0C0A R WM_NCPAINT
+<04960> 000A0C0A S WM_ERASEBKGND hdc:960117BA
+<04961> 000A0C0A R WM_ERASEBKGND fErased:True
+<04962> 000A0C0A S WM_WINDOWPOSCHANGED lpwp:0022F59C
+<04963> 000A0C0A R WM_WINDOWPOSCHANGED
+<04964> 000A0C0A S WM_WINDOWPOSCHANGING lpwp:0022F59C
+<04965> 000A0C0A R WM_WINDOWPOSCHANGING
+<04966> 000A0C0A S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0022F570
+<04967> 000A0C0A R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0022F570
+<04968> 000A0C0A S WM_WINDOWPOSCHANGED lpwp:0022F59C
+<04969> 000A0C0A R WM_WINDOWPOSCHANGED
+<04970> 000A0C0A S WM_WINDOWPOSCHANGING lpwp:0022F5A8
+<04971> 000A0C0A R WM_WINDOWPOSCHANGING
+<04972> 000A0C0A S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0022F57C
+<04973> 000A0C0A R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0022F57C
+<04974> 000A0C0A S WM_NCPAINT hrgn:0B041789
+<04975> 000A0C0A R WM_NCPAINT
+<04976> 000A0C0A S WM_ERASEBKGND hdc:960117BA
+<04977> 000A0C0A R WM_ERASEBKGND fErased:True
+<04978> 000A0C0A S WM_WINDOWPOSCHANGED lpwp:0022F5A8
+<04979> 000A0C0A R WM_WINDOWPOSCHANGED
+<04980> 000A0C0A S WM_WINDOWPOSCHANGING lpwp:0022F5A8
+<04981> 000A0C0A R WM_WINDOWPOSCHANGING
+<04982> 000A0C0A S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0022F57C
+<04983> 000A0C0A R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0022F57C
+<04984> 000A0C0A S WM_WINDOWPOSCHANGED lpwp:0022F5A8
+<04985> 000A0C0A R WM_WINDOWPOSCHANGED
+<04986> 000A0C0A S WM_WINDOWPOSCHANGING lpwp:0022F59C
+<04987> 000A0C0A R WM_WINDOWPOSCHANGING
+<04988> 000A0C0A S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0022F570
+<04989> 000A0C0A R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0022F570
+<04990> 000A0C0A S WM_NCPAINT hrgn:690419E3
+<04991> 000A0C0A R WM_NCPAINT
+<04992> 000A0C0A S WM_ERASEBKGND hdc:960117BA
+<04993> 000A0C0A R WM_ERASEBKGND fErased:True
+<04994> 000A0C0A S WM_WINDOWPOSCHANGED lpwp:0022F59C
+<04995> 000A0C0A R WM_WINDOWPOSCHANGED
+<04996> 000A0C0A S WM_WINDOWPOSCHANGING lpwp:0022F59C
+<04997> 000A0C0A R WM_WINDOWPOSCHANGING
+<04998> 000A0C0A S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0022F570
+<04999> 000A0C0A R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0022F570
+<05000> 000A0C0A S WM_WINDOWPOSCHANGED lpwp:0022F59C
+]]
+
+[[
+Unhandled Exception: System.MemberAccessException: Object is busy and 
+cannot state allow this operation [GDI+ status: ObjectBusy]
+
+at System.Drawing.GDIPlus.CheckStatus (System.Drawing.Status) [0x000df] 
+in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\System.Drawing\System.Drawing\gdipFunctions.cs:206
+at System.Drawing.Graphics.FillRectangle 
+(System.Drawing.Brush,int,int,int,int) [0x0002a] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\System.Drawing\System.Drawing\Graphics.cs:1600
+at System.Drawing.Graphics.FillRectangle 
+(System.Drawing.Brush,System.Drawing.Rectangle) [0x00012] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\System.Drawing\System.Drawing\Graphics.cs:1591
+at (wrapper remoting-invoke-with-check) 
+System.Drawing.Graphics.FillRectangle 
+(System.Drawing.Brush,System.Drawing.Rectangle) <0x000ce>
+at System.Windows.Forms.Control.PaintControlBackground 
+(System.Windows.Forms.PaintEventArgs) [0x00326] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:1398
+at System.Windows.Forms.Control.OnPaintBackground 
+(System.Windows.Forms.PaintEventArgs) [0x00000] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:5994
+at System.Windows.Forms.Control.WmPaint (System.Windows.Forms.Message&) 
+[0x00063] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:5169
+at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message&) 
+[0x0016c] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:4949
+at ItemControl.WndProc (System.Windows.Forms.Message&) [0x00061] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\ListView.cs:2527
+at ControlWindowTarget.OnMessage (System.Windows.Forms.Message&) 
+[0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:224
+at ControlNativeWindow.WndProc (System.Windows.Forms.Message&) [0x00000] 
+in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:205
+at System.Windows.Forms.NativeWindow.WndProc 
+(intptr,System.Windows.Forms.Msg,intptr,intptr) [0x0006b] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\NativeWindow.cs:183
+at System.Windows.Forms.XplatUIWin32.InternalWndProc 
+(intptr,System.Windows.Forms.Msg,intptr,intptr) [0x0002d] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\XplatUIWin32.cs:1859
+at (wrapper native-to-managed) 
+System.Windows.Forms.XplatUIWin32.InternalWndProc 
+(intptr,System.Windows.Forms.Msg,intptr,intptr) <0x0004d>
+in (unmanaged) 7E418733
+at (wrapper managed-to-native) 
+System.Windows.Forms.XplatUIWin32.Win32UpdateWindow (intptr) <0x00004>
+at System.Windows.Forms.XplatUIWin32.UpdateWindow (intptr) [0x00000] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\XplatUIWin32.cs:1727
+at System.Windows.Forms.XplatUI.UpdateWindow (intptr) [0x00000] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\XplatUI.cs:1131
+at System.Windows.Forms.Control.Refresh () [0x0001c] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:3936
+at System.Windows.Forms.Control.Refresh () [0x0003f] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:3940
+at System.Windows.Forms.ListView.Redraw (bool) [0x00035] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\ListView.cs:1020
+at (wrapper remoting-invoke-with-check) 
+System.Windows.Forms.ListView.Redraw (bool) <0x0004f>
+at ListViewItemCollection.CollectionChanged (bool) [0x00024] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\ListView.cs:4637
+at ListViewItemCollection.Clear () [0x000b5] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\ListView.cs:4393
+at FolderExplorer2.Form1.connectButton_Click (object,System.EventArgs) 
+<0x00071>
+at System.Windows.Forms.Control.OnClick (System.EventArgs) [0x0001c] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:5603
+at System.Windows.Forms.Button.OnClick (System.EventArgs) [0x00025] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Button.cs:104
+at System.Windows.Forms.ButtonBase.OnMouseUp 
+(System.Windows.Forms.MouseEventArgs) [0x00076] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\ButtonBase.cs:616
+at System.Windows.Forms.Button.OnMouseUp 
+(System.Windows.Forms.MouseEventArgs) [0x00000] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Button.cs:126
+at System.Windows.Forms.Control.WmLButtonUp 
+(System.Windows.Forms.Message&) [0x0005c] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:5204
+at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message&) 
+[0x0017c] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:4962
+at System.Windows.Forms.ButtonBase.WndProc 
+(System.Windows.Forms.Message&) [0x00055] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\ButtonBase.cs:674
+at System.Windows.Forms.Button.WndProc (System.Windows.Forms.Message&) 
+[0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Button.cs:148
+at ControlWindowTarget.OnMessage (System.Windows.Forms.Message&) 
+[0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:224
+at ControlNativeWindow.WndProc (System.Windows.Forms.Message&) [0x00000] 
+in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Control.cs:205
+at System.Windows.Forms.NativeWindow.WndProc 
+(intptr,System.Windows.Forms.Msg,intptr,intptr) [0x0006b] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\NativeWindow.cs:183
+at System.Windows.Forms.XplatUIWin32.InternalWndProc 
+(intptr,System.Windows.Forms.Msg,intptr,intptr) [0x0002d] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\XplatUIWin32.cs:1859
+at (wrapper native-to-managed) 
+System.Windows.Forms.XplatUIWin32.InternalWndProc 
+(intptr,System.Windows.Forms.Msg,intptr,intptr) <0x0004d>
+in (unmanaged) 7E418733
+at (wrapper managed-to-native) 
+System.Windows.Forms.XplatUIWin32.Win32DispatchMessage 
+(System.Windows.Forms.MSG&) <0x00004>
+at System.Windows.Forms.XplatUIWin32.DispatchMessage 
+(System.Windows.Forms.MSG&) [0x00000] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\XplatUIWin32.cs:2054
+at System.Windows.Forms.XplatUI.DispatchMessage 
+(System.Windows.Forms.MSG&) [0x00000] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\XplatUI.cs:540
+at System.Windows.Forms.Application.RunLoop 
+(bool,System.Windows.Forms.ApplicationContext) [0x0037c] in 
+C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Application.cs:747
+at System.Windows.Forms.Application.Run (System.Windows.Forms.Form) 
+[0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\mono-1.2.5
+\mcs\class\Managed.Windows.Forms\System.Windows.Forms\Application.cs:534
+at 
+Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRu
+n () <0x00040>
+at 
+Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run 
+(string[]) <0x0000b>
+at FolderExplorer2.My.MyApplication.Main (string[]) <0x0003e>
+]]


More information about the mono-bugs mailing list