关闭表单在 00000258 处产生访问冲突
最近,当我通过“关闭”按钮将其关闭时,我的日志记录表单开始产生访问冲突。
使用 madExcept,我在调用堆栈中找不到任何(对我来说)有用的东西,或者实际上找不到任何东西。
这是我的日志:
date/time : 2011-06-19, 16:26:06, 851ms
computer name : JEFF-PC
user name : Jeff <admin>
registered owner : Microsoft / Microsoft
operating system : Windows 7 x64 Service Pack 1 build 7601
system language : Danish
system up time : 4 hours 27 minutes
program up time : 13 seconds
processors : 8x Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
physical memory : 2852/6142 MB (free/total)
free disk space : (C:) 321,83 GB
display mode : 1920x1080, 32 bit
process id : $1e70
allocated memory : 77,05 MB
executable : xSky.exe
exec. date/time : 2011-06-19 16:25
version : 1.4.25.1168
compiled with : Delphi 2010
madExcept version : 3.0l
contact name : Jeff Hansen
contact email : [email protected]
callstack crc : $85c8cb0e, $11baad03, $46cd9070
exception number : 1
exception class : EAccessViolation
exception message : Access violation at address 0052A237 in module 'xSky.exe'. Read of address 00000258.
main thread ($7b0):
0052a237 +0003 xSky.exe Controls 11847 +1 TWinControl.HandleNeeded
0052a25d +0005 xSky.exe Controls 11856 +1 TWinControl.GetHandle
006742c5 +6735 xSky.exe sSkinProvider TsSkinProvider.NewWndProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
770c0117 +002b ntdll.dll KiUserCallbackDispatcher
76950d48 +0016 USER32.dll CallWindowProcW
0052758c +00d8 xSky.exe Controls 9860 +30 TWinControl.DefaultHandler
0054be0a +005a xSky.exe Forms 5223 +11 TCustomForm.DefaultHandler
00529177 +00a3 xSky.exe Controls 11042 +20 TWinControl.WMSysCommand
0054cedd +0055 xSky.exe Forms 5832 +14 TCustomForm.WMSysCommand
00522bc8 +02d4 xSky.exe Controls 7062 +91 TControl.WndProc
0052748c +0568 xSky.exe Controls 9819 +144 TWinControl.WndProc
00549b98 +0594 xSky.exe Forms 3960 +191 TCustomForm.WndProc
00673672 +5ae2 xSky.exe sSkinProvider TsSkinProvider.NewWndProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
769496c0 +0047 USER32.dll SendMessageW
006712ed +375d xSky.exe sSkinProvider TsSkinProvider.NewWndProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
769496c0 +0047 USER32.dll SendMessageW
0067f857 +073f xSky.exe sSkinProvider TacBorderForm.BorderProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
76947885 +000a USER32.dll DispatchMessageW
00552d55 +011d xSky.exe Forms 9784 +30 TApplication.ProcessMessage
00552d9a +000a xSky.exe Forms 9814 +1 TApplication.HandleMessage
005530c5 +00c9 xSky.exe Forms 9951 +26 TApplication.Run
007e493b +008f xSky.exe xSky 54 +10 initialization
750f33c8 +0010 kernel32.dll BaseThreadInitThunk
thread $b8c:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $129c:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $1748:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $1ac8:
770d0146 +0e ntdll.dll NtWaitForMultipleObjects
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $a88 (TWorkerThread):
770cf8ba +0e ntdll.dll NtWaitForSingleObject
74f20810 +92 KERNELBASE.dll WaitForSingleObjectEx
750f118f +3e kernel32.dll WaitForSingleObjectEx
750f1143 +0d kernel32.dll WaitForSingleObject
006d0129 +19 xSky.exe VirtualTrees TWorkerThread.Execute
004666af +2b xSky.exe madExcept HookedTThreadExecute
004a1656 +42 xSky.exe Classes 11018 +8 ThreadProc
00406cf0 +28 xSky.exe System 13579 +33 ThreadWrapper
00466591 +0d xSky.exe madExcept CallThreadProcSafe
004665fb +37 xSky.exe madExcept ThreadExceptFrame
750f33c8 +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($7b0) at:
006d006e +16 xSky.exe VirtualTrees TWorkerThread.Create
thread $1fb0:
76947908 +26 USER32.dll GetMessageW
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $1fc8:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $15dc (TacTimerThread):
770d0146 +0e ntdll.dll NtWaitForMultipleObjects
74f2095c +fa KERNELBASE.dll WaitForMultipleObjectsEx
750f1a27 +89 kernel32.dll WaitForMultipleObjectsEx
004a4e06 +56 xSky.exe SyncObjs 339 +14 THandleObject.WaitFor
005f54b0 +0c xSky.exe acThdTimer 6852 +0 TacTimerThread.Execute
004a1656 +42 xSky.exe Classes 11018 +8 ThreadProc
00406cf0 +28 xSky.exe System 13579 +33 ThreadWrapper
00466591 +0d xSky.exe madExcept CallThreadProcSafe
004665fb +37 xSky.exe madExcept ThreadExceptFrame
750f33c8 +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($7b0) at:
005f55a1 +0d xSky.exe acThdTimer 6852 +0 TacThreadedTimer.StartTimer
在这种情况开始发生之前,我对项目所做的唯一更改是向我的项目添加了一个表单,然后再次将其删除。它的所有痕迹都已被删除,但我的日志表单仍然令人恶心。
记录表单是自动创建表单。我所做的就是 frmLog.Show;
一如既往,这可能是非常愚蠢的事情,但我就是想不通。
我没有在任何“表单关闭”事件中执行任何操作。
编辑:当双击 Mad 中的顶部调用堆栈项时,我需要单元 Controls,以及 if WindowHandle = 0 then in procedure TWinControl.HandleNeeded; 行。
Recently my Logging Form started producing Access Violations, when I close it on the Close button.
Using madExcept, I could not find anything usefull (to me) in the Call Stack, or anything actually.
Here is my log:
date/time : 2011-06-19, 16:26:06, 851ms
computer name : JEFF-PC
user name : Jeff <admin>
registered owner : Microsoft / Microsoft
operating system : Windows 7 x64 Service Pack 1 build 7601
system language : Danish
system up time : 4 hours 27 minutes
program up time : 13 seconds
processors : 8x Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
physical memory : 2852/6142 MB (free/total)
free disk space : (C:) 321,83 GB
display mode : 1920x1080, 32 bit
process id : $1e70
allocated memory : 77,05 MB
executable : xSky.exe
exec. date/time : 2011-06-19 16:25
version : 1.4.25.1168
compiled with : Delphi 2010
madExcept version : 3.0l
contact name : Jeff Hansen
contact email : [email protected]
callstack crc : $85c8cb0e, $11baad03, $46cd9070
exception number : 1
exception class : EAccessViolation
exception message : Access violation at address 0052A237 in module 'xSky.exe'. Read of address 00000258.
main thread ($7b0):
0052a237 +0003 xSky.exe Controls 11847 +1 TWinControl.HandleNeeded
0052a25d +0005 xSky.exe Controls 11856 +1 TWinControl.GetHandle
006742c5 +6735 xSky.exe sSkinProvider TsSkinProvider.NewWndProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
770c0117 +002b ntdll.dll KiUserCallbackDispatcher
76950d48 +0016 USER32.dll CallWindowProcW
0052758c +00d8 xSky.exe Controls 9860 +30 TWinControl.DefaultHandler
0054be0a +005a xSky.exe Forms 5223 +11 TCustomForm.DefaultHandler
00529177 +00a3 xSky.exe Controls 11042 +20 TWinControl.WMSysCommand
0054cedd +0055 xSky.exe Forms 5832 +14 TCustomForm.WMSysCommand
00522bc8 +02d4 xSky.exe Controls 7062 +91 TControl.WndProc
0052748c +0568 xSky.exe Controls 9819 +144 TWinControl.WndProc
00549b98 +0594 xSky.exe Forms 3960 +191 TCustomForm.WndProc
00673672 +5ae2 xSky.exe sSkinProvider TsSkinProvider.NewWndProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
769496c0 +0047 USER32.dll SendMessageW
006712ed +375d xSky.exe sSkinProvider TsSkinProvider.NewWndProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
769496c0 +0047 USER32.dll SendMessageW
0067f857 +073f xSky.exe sSkinProvider TacBorderForm.BorderProc
00526b2c +002c xSky.exe Controls 9540 +3 TWinControl.MainWndProc
004a3b28 +0014 xSky.exe Classes 13014 +8 StdWndProc
76947885 +000a USER32.dll DispatchMessageW
00552d55 +011d xSky.exe Forms 9784 +30 TApplication.ProcessMessage
00552d9a +000a xSky.exe Forms 9814 +1 TApplication.HandleMessage
005530c5 +00c9 xSky.exe Forms 9951 +26 TApplication.Run
007e493b +008f xSky.exe xSky 54 +10 initialization
750f33c8 +0010 kernel32.dll BaseThreadInitThunk
thread $b8c:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $129c:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $1748:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $1ac8:
770d0146 +0e ntdll.dll NtWaitForMultipleObjects
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $a88 (TWorkerThread):
770cf8ba +0e ntdll.dll NtWaitForSingleObject
74f20810 +92 KERNELBASE.dll WaitForSingleObjectEx
750f118f +3e kernel32.dll WaitForSingleObjectEx
750f1143 +0d kernel32.dll WaitForSingleObject
006d0129 +19 xSky.exe VirtualTrees TWorkerThread.Execute
004666af +2b xSky.exe madExcept HookedTThreadExecute
004a1656 +42 xSky.exe Classes 11018 +8 ThreadProc
00406cf0 +28 xSky.exe System 13579 +33 ThreadWrapper
00466591 +0d xSky.exe madExcept CallThreadProcSafe
004665fb +37 xSky.exe madExcept ThreadExceptFrame
750f33c8 +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($7b0) at:
006d006e +16 xSky.exe VirtualTrees TWorkerThread.Create
thread $1fb0:
76947908 +26 USER32.dll GetMessageW
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $1fc8:
770d1f2f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
750f33c8 +10 kernel32.dll BaseThreadInitThunk
thread $15dc (TacTimerThread):
770d0146 +0e ntdll.dll NtWaitForMultipleObjects
74f2095c +fa KERNELBASE.dll WaitForMultipleObjectsEx
750f1a27 +89 kernel32.dll WaitForMultipleObjectsEx
004a4e06 +56 xSky.exe SyncObjs 339 +14 THandleObject.WaitFor
005f54b0 +0c xSky.exe acThdTimer 6852 +0 TacTimerThread.Execute
004a1656 +42 xSky.exe Classes 11018 +8 ThreadProc
00406cf0 +28 xSky.exe System 13579 +33 ThreadWrapper
00466591 +0d xSky.exe madExcept CallThreadProcSafe
004665fb +37 xSky.exe madExcept ThreadExceptFrame
750f33c8 +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($7b0) at:
005f55a1 +0d xSky.exe acThdTimer 6852 +0 TacThreadedTimer.StartTimer
The only change I did to my project, before this started happening, was that I added a form to my Project, and later removed it again. All traces of it has been removed, however my Log form still pukes AV's.
The Logging Form is an Auto-Create form. All I do to show it, is frmLog.Show;
Its probably something really stupid, as always, but I just cant figure it out.
I am not doing anything in any of the Form Close events.
EDIT: When doubleclicking the top Call Stack item in Mad, it took me to unit Controls, and the line if WindowHandle = 0 then in procedure TWinControl.HandleNeeded;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关闭你的皮肤,看看它是否仍然会爆炸。这可能不是根本原因,但调用堆栈中的皮肤内容可能会掩盖真正的问题。
Turn off your skins and see if it still blows up. That's probably not the root cause, but having the skin stuff in the call stack may be obscuring the real problem.