我們的應用程序遇到奇怪的致命System.AccessViolationException。我們看到了這些,因爲我們配置了AppDomain.CurrentDomain.UnhandledException事件來記錄異常。找到System.AccessViolationException的原因
Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Bootstrap.Run() in e:\build-dir\src\Bootstrap.cs:line 25
例外本身似乎並沒有包含任何不是消息更多信息「嘗試讀取或寫入受保護的內存。這通常是指示其他內存已損壞。」
- 我們現在可以採取哪些措施來解決問題的原因?
- 有沒有什麼辦法可以確定導致崩潰的非法地址或指針值?
- 我們可以找出本機庫代碼導致問題的原因嗎?
- 是否有更多的調試/跟蹤,我們可以啓用?
UPDATE
- 難道這由早期非線程使用的WinForms的API造成的?
您是否嘗試過上附加一個調試運行此,也有足夠的符號加載給一個有用的callstack? – 2012-04-20 01:52:51