I'm working on application that needs to be able to run on a high resolution monitor (2550x1440). One or our WPF controls uses the XamDockManager. When this control is displayed in size 2400x1200 or larger, a redocking action will cause the system to crash due to an out of memory exception.
To isolate the problem, I have created a test application with nothing but a XamDockManager sitting in a large MainWindow.xaml. I was able to reproduce the crash with the same exception signature.
The exception tracing is shown below. The test MainWindow.xaml is attached to this post. If anybody have ran into the same problem and found a fix for it, please share. Thank you.
--------------------------------------------------------------------------
Exception:
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
at System.Windows.Media.Composition.DUCE.Channel.SyncFlush() at System.Windows.Media.MediaContext.CompleteRender() at System.Windows.Interop.HwndTarget.OnResize() at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam) at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow) at System.Windows.Window.ShowHelper(Object booleanBox) at System.Windows.Window.Show() at Infragistics.Windows.Controls.ToolWindowHostWindow.Show(Boolean activate) at Infragistics.Windows.Controls.ToolWindow.ShowInToolWindowHostWindow(Boolean activate, Window owningWindow) at Infragistics.Windows.Controls.ToolWindow.ShowImpl(FrameworkElement owner, Boolean activate) at Infragistics.Windows.Controls.ToolWindow.Show(FrameworkElement owner, Boolean activate, Boolean preferPopup) at Infragistics.Windows.DockManager.DockManagerUtilities.ShowToolWindow(ToolWindow window, FrameworkElement owner, Boolean activate) at Infragistics.Windows.DockManager.Dragging.DragManager.ShowDropPreview(FrameworkElement owner, DropPreviewTabLocation location, Size size, HorizontalAlignment horzAlign, VerticalAlignment vertAlign, Double offsetX, Double offsetY, PaneLocation targetLocation) at Infragistics.Windows.DockManager.Dragging.DragManager.ShowDropPreview(FrameworkElement owner, DropPreviewTabLocation location, Nullable`1 sideForNone, Size size, Double offsetX, Double offsetY, PaneLocation targetLocation) at Infragistics.Windows.DockManager.Dragging.DragManager.ShowDropPreview(FrameworkElement owner, Dock side, Size size, Double offset, PaneLocation targetLocation) at Infragistics.Windows.DockManager.Dragging.AddToGroupActionBase.PerformAction(DragManager dragManager, Boolean isPreview) at Infragistics.Windows.DockManager.Dragging.DragManager.ProcessDragMove(IInputDeviceInfo e, Nullable`1 windowRect) at Infragistics.Windows.DockManager.Dragging.DragManager.ProcessDragMove(MouseEventArgs e) at Infragistics.Windows.DockManager.Dragging.DragManager.OnDragElementMouseMove(Object sender, MouseEventArgs e) at System.Windows.Input.MouseEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.ContentElement.RaiseTrustedEvent(RoutedEventArgs args) at System.Windows.Input.InputManager.ProcessStagingArea() at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at System.Windows.Application.Run()
----------------------------------------------
Pink,
Thank you for the update. Machine 1 is using a Nvidia Quadro FX 1600M video card and machine 3 is using a Nvidia Quadro FX 1700M video card. Both of these cards use the same video driver so that is likely the cause of the issue. Note that machine 3 is using an older version of the driver than machine 1.
Driver Name: nv4_disp.dll
machine 3 version: 6.14.0011.7688
machine 1 version: 6.14.0012.6658
I still looking to see if I can get access to this hardware running Windows XP SP3.
Attached is the display settings for Machine 3 (Machine3.txt).
NetAdvantage assemblies:
Runtime version: v4.0.30319
Version: 11.1.20111.1002
Please provide me with the full version of the NetAdvantage assemblies in your project. In Visual Studio this can be seen in the properties window when the assembly is selected. You can also get this by looking at the file properties for the assembly in Windows Explorer and looking at the File Version on the Details tab.
Let me know if you have any questions with this matter.
I am looking to see if I have access to a machine with a NVIDIA Quadro FX 1600M or even similar graphics card for testing this. Do you have the machine details including the video card for the second machine that crashed?
You may also want to look at the Guidelines for troubleshooting graphic issues in WPF applications as there are a few steps for troubleshooting issues and a possible workaround:
http://support.microsoft.com/kb/963021
Hello Pink,
Thanks for taking time to reply. The detailed info about the environment would really help us to repro the issue.
Regards
Ramesh