Закрытие формы производит нарушение прав доступа на 00000258 - PullRequest
2 голосов
/ 19 июня 2011

Недавно моя форма регистрации начала создавать нарушения прав доступа, когда я закрываю ее на кнопке Закрыть.

Используя 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     : ihidmyemailforthispost@hotmail.com
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

Единственное изменение, которое я сделал в своем проекте до того, как это начало происходить, было то, что я добавил форму в свой Проект, а затем снова удалил ее. Все следы этого были удалены, однако моя форма журнала все еще бьет AV.

Форма регистрации - это форма автоматического создания. Все, что я делаю, чтобы показать это, это frmLog.Show;

Наверное, что-то действительно глупое, как всегда, но я просто не могу понять.

Я ничего не делаю ни в одном из событий закрытия формы.

РЕДАКТИРОВАТЬ: При двойном щелчке по верхнему элементу Call Stack в Mad, мне потребовались единицы управления, и строка, если WindowHandle = 0, то в процедуре TWinControl.HandleNeeded;

1 Ответ

3 голосов
/ 19 июня 2011

Выключите свои скины и посмотрите, не взорвется ли он.Возможно, это не основная причина, но наличие скина в стеке вызовов может скрыть реальную проблему.

...