अपने स्वचालित दुर्घटना संग्रह MaxTo के लिए मैं निम्नलिखित क्रैश रिपोर्ट मिल गया के माध्यम से:Win32Exception नहीं भंडारण इस आदेश पर कार्रवाई करने के लिए उपलब्ध है
V8.12.0.0 - System.ComponentModel.Win32Exception - :Void UpdateLayered():0
Version: MaxTo8.12.0.0
Exception: System.ComponentModel.Win32Exception
Error message: Not enough storage is available to process this command
Stack trace:
at System.Windows.Forms.Form.UpdateLayered()
at System.Windows.Forms.Form.OnHandleCreated(EventArgs e)
at System.Windows.Forms.Control.WmCreate(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmCreate(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at MaxTo.MainForm.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
एक और स्टैकट्रेस:
Version: MaxTo2009.9.0.0
Exception: System.ComponentModel.Win32Exception
Error message: Not enough storage is available to process this command
Stack trace:
at System.Windows.Forms.Form.UpdateLayered()
at System.Windows.Forms.Form.OnHandleCreated(EventArgs e)
at System.Windows.Forms.Control.WmCreate(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmCreate(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
इस नवीनतम स्टैक ट्रेस में मैक्सटो का बिल्कुल कोई संदर्भ नहीं है, और मुझे प्राप्त होने वाले 9 0% क्रैश उपरोक्त के समान स्टैक निशान के साथ हैं।
नेट पर चारों ओर पढ़ना मुझे लगता है कि यदि आप चर को रिलीज़ या डिस्प्ले करना भूल जाते हैं तो यह त्रुटि सामान्य होती है। मेरे WndProc
के माध्यम से देखकर, जो कभी-कभी समस्या से गुजरती है, मुझे किसी भी वस्तु के संदर्भ में लटका हुआ एक भी स्थान नहीं मिल रहा है। सभी वैरिएबल में से एक वैंडप्रोक के लिए स्थानीय हैं, और इसलिए विधि समाप्त होने पर कचरा इकट्ठा किया जाना चाहिए।
protected override void WndProc(ref Message m)
{
base.WndProc(ref m); // I'm assuming the first trace can be caught here
IntPtr hwnd = m.WParam;
// Our hook tells us something got maximized
if (Win32Import.UWM_MAXIMIZE == (UInt32)m.Msg)
{
// Figure out if we are temporarily disabled or using alternative profiles
KeyStateInfo keyState = KeyboardInfo.GetKeyState(Settings.AlternativeProfileKey);
Rectangle r = FindRectangle(MousePosition, (Settings.EnableAlternativeProfile && keyState.IsPressed ? AlternativeRegions : Regions));
// Did we find a rectangle to place it in?
if (r != Rectangle.Empty)
{
Rectangle position = Win32Import.GetWindowRectangle(hwnd);
Rectangle previousPos = GetLocation(hwnd);
if (position == r && previousPos != Rectangle.Empty)
{
// We are restoring the original position
Win32Import.SetWindowPos(hwnd, IntPtr.Zero, previousPos.X, previousPos.Y, previousPos.Width, previousPos.Height, Win32Import.SWP_NOZORDER | Win32Import.SWP_NOSENDCHANGING);
}
else
{
// We are maximizing to a region
Win32Import.ShowWindow(hwnd, Win32Import.WindowShowStyle.Restore);
Win32Import.SetWindowPos(hwnd, IntPtr.Zero, r.X, r.Y, r.Width, r.Height, Win32Import.SWP_NOZORDER | Win32Import.SWP_NOSENDCHANGING);
// Make sure we remember this location
RememberLocation(hwnd, position);
}
}
}
else if (MaxTo64WindowHandleMessage == m.Msg)
{
// Store the window handle of our 64-bit subprocess
SubProcess64WindowHandle = m.WParam;
}
}
मैं कई दिनों में प्रोग्राम चलाने के दौरान भी त्रुटि को पुन: उत्पन्न करने में सक्षम नहीं हूं।
मेरी धारणा यह है कि सिस्टम या तो अपरिवर्तित स्मृति या जीडीआई हैंडल पर कम है, लेकिन मैं इसे कहीं भी पुष्टि नहीं कर सकता। इस त्रुटि पर कोई अच्छा प्रलेखन प्रतीत नहीं होता है।
कोई विचार यह और क्या हो सकता है? क्या मैं इस त्रुटि को रोकने के लिए कुछ भी कर सकता हूं?
अद्यतन: सवाल एक सभ्य समाधान की कमी की वजह से, अधिक स्टैक ट्रेस के साथ फिर से खोला गया। बस इसे अनदेखा करना समस्या को हल नहीं करता है।
प्रश्न से संबंधित नहीं है लेकिन आप क्रैश रिपोर्ट कैसे एकत्र करते हैं? – Giorgi
Fogbugz BugzScout (Google इसे) का उपयोग करना, और प्रोग्राम में एक कस्टम लिखित वैश्विक त्रुटि हैंडलर का उपयोग करना। यह बहुत मुश्किल नहीं है। –
त्रुटि के समय Windows अनुप्रयोग इवेंट लॉग में कुछ भी रिपोर्ट किया गया है? –