I've a strange behaviour using madexcept component into a multithreaded app.
If i uncheck then 'handle exception' into 'madexcept settings' my app works well. As soon as i check this option, i get strange error message that follows :
Code: Select all
date/time : 2005-06-13, 09:26:07, 343ms
computer name : DEV-GREG
user name : Greg
operating system : Windows XP Service Pack 2 build 2600
system language : French
system up time : 27 minutes 45 seconds
program up time : 2 minutes 15 seconds
processor : Intel(R) Pentium(R) M processor 2.00GHz
physical memory : 637/1023 MB (free/total)
free disk space : (C:) 23,55 GB
display mode : 1920x1200, 32 bit
process id : $cec
allocated memory : 16,65 MB
executable : MyApp.exe
exec. date/time : 2005-06-13 09:19
version : 1.0.3.19
madExcept version : 2.7g
exception class : EAccessViolation
exception message : Violation d'accès à l'adresse 01CBC756. Ecriture de l'adresse 03546723.
thread $1e0: <priority:-1>
01cbc756 ???
0044e5ec MyApp.exe Classes 9379 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
main thread ($c64):
7c91eb94 ntdll.dll KiFastSystemCallRet
77d19416 user32.dll WaitMessage
004c7b49 MyApp.exe Forms 7246 TApplication.Idle
004c6ed6 MyApp.exe Forms 6892 TApplication.HandleMessage
004c7162 MyApp.exe Forms 6976 TApplication.Run
005fb0fc MyApp.exe MyApp 51 initialization
thread $cf0 (cIdxMaker): <priority:-1>
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91d85a ntdll.dll NtDelayExecution
7c8023e7 kernel32.dll SleepEx
7c80244c kernel32.dll Sleep
005e00f8 MyApp.exe Classes_User 6380 cIdxMaker.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by main thread ($c64) at:
005def78 MyApp.exe Classes_User 6100 cIdxMaker.Create
thread $d04 (TIdUDPListenerThread):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91e9be ntdll.dll NtWaitForSingleObject
719e150a WS2HELP.dll WahReferenceContextByHandle
719f2e64 WS2_32.dll select
00533dbd MyApp.exe IdStackWindows 276 TIdStackWindows.WSSelect
0053816e MyApp.exe IdUDPServer 197 TIdUDPListenerThread.Run
0053718c MyApp.exe IdThread 137 TIdThread.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by main thread ($c64) at:
005372ab MyApp.exe IdThread 167 TIdThread.Create
thread $80c (cUDPSender):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91d85a ntdll.dll NtDelayExecution
7c8023e7 kernel32.dll SleepEx
7c80244c kernel32.dll Sleep
005e7062 MyApp.exe class_generique 2916 cUDPSender.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by main thread ($c64) at:
005e6e9a MyApp.exe class_generique 2879 cUDPSender.Create
thread $dac (TIdListenerThread):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91e9be ntdll.dll NtWaitForSingleObject
719e150a WS2HELP.dll WahReferenceContextByHandle
719f2e64 WS2_32.dll select
00533dbd MyApp.exe IdStackWindows 276 TIdStackWindows.WSSelect
00536c98 MyApp.exe IdSocketHandle 339 TIdSocketHandle.Select
00559a3e MyApp.exe IdServerIOHandlerSocket TIdServerIOHandlerSocket.Accept
0055bcbf MyApp.exe IdTCPServer 691 TIdListenerThread.Run
0053718c MyApp.exe IdThread 137 TIdThread.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by main thread ($c64) at:
005372ab MyApp.exe IdThread 167 TIdThread.Create
thread $c60 (TIdUDPListenerThread):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91e9be ntdll.dll NtWaitForSingleObject
719e150a WS2HELP.dll WahReferenceContextByHandle
719f2e64 WS2_32.dll select
00533dbd MyApp.exe IdStackWindows 276 TIdStackWindows.WSSelect
0053816e MyApp.exe IdUDPServer 197 TIdUDPListenerThread.Run
0053718c MyApp.exe IdThread 137 TIdThread.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by main thread ($c64) at:
005372ab MyApp.exe IdThread 167 TIdThread.Create
thread $db8 (tSimpleThread):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91dd07 ntdll.dll NtOpenFile
7c80edf4 kernel32.dll FindFirstFileExW
7c813592 kernel32.dll FindFirstFileA
0042cf60 MyApp.exe SysUtils 4944 FileAge
0042cfc0 MyApp.exe SysUtils 4972 FileExists
005ea2f7 MyApp.exe Classes_Agency 858 cMemoryIndex.CheckDt
005fa567 MyApp.exe u_main 4054 tSimpleThread.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by main thread ($c64) at:
005fa496 MyApp.exe u_main 4033 tSimpleThread.Create
thread $e00 (TIdPeerThread):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91e9be ntdll.dll NtWaitForSingleObject
719e150a WS2HELP.dll WahReferenceContextByHandle
719f2e64 WS2_32.dll select
00533d72 MyApp.exe IdStackWindows 272 TIdStackWindows.WSSelect
00536a0b MyApp.exe IdSocketHandle 258 TIdSocketHandle.Readable
00556c9d MyApp.exe IdIOHandlerSocket 193 TIdIOHandlerSocket.Readable
00557bfa MyApp.exe IdTCPConnection 436 TIdTCPConnection.ReadFromStack
00557b1b MyApp.exe IdTCPConnection 404 TIdTCPConnection.ReadBuffer
00557ec3 MyApp.exe IdTCPConnection 496 TIdTCPConnection.ReadInteger
005f1787 MyApp.exe u_main 1691 TMainFrm.IPServerExecute
0055b45f MyApp.exe IdTCPServer 408 TIdTCPServer.DoExecute
0055c010 MyApp.exe IdTCPServer 796 TIdPeerThread.Run
0055bf06 MyApp.exe IdTCPServer 759 TIdPeerThread.BeforeRun
0053718c MyApp.exe IdThread 137 TIdThread.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by thread $dac (TIdListenerThread) at:
005372ab MyApp.exe IdThread 167 TIdThread.Create
thread $540 (cUser):
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91d85a ntdll.dll NtDelayExecution
7c8023e7 kernel32.dll SleepEx
7c80244c kernel32.dll Sleep
005da1ad MyApp.exe Classes_User 4218 cUser.Execute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by thread $e00 (TIdPeerThread) at:
005cb0a8 MyApp.exe Classes_User 625 cUser.Create
thread $e14 (cIPSender): <priority:-1>
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91d85a ntdll.dll NtDelayExecution
7c8023e7 kernel32.dll SleepEx
7c80244c kernel32.dll Sleep
005dc48f MyApp.exe Classes_User 5036 cIPSender.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by thread $e00 (TIdPeerThread) at:
005dc245 MyApp.exe Classes_User 4968 cIPSender.Create
thread $c90 (cCopyThread): <priority:-1>
7c91eb94 ntdll.dll KiFastSystemCallRet
7c91d85a ntdll.dll NtDelayExecution
7c8023e7 kernel32.dll SleepEx
7c80244c kernel32.dll Sleep
005e09e6 MyApp.exe Classes_User 6552 cCopyThread.Execute
0042986a MyApp.exe madExcept HookedTThreadExecute
0044e5a6 MyApp.exe Classes 9372 ThreadProc
00405214 MyApp.exe System 11554 ThreadWrapper
004297ff MyApp.exe madExcept ThreadExceptFrame
>> created by thread $e00 (TIdPeerThread) at:
005e02b1 MyApp.exe Classes_User 6426 cCopyThread.Create
thread $3a0:
>> stack not accessible
thread $1e8:
>> stack not accessible
thread $604:
>> stack not accessible
Under the debugger, here is part of the asm code :
MOV EAX,Parameter
MOV ECX,[EAX].TThreadRec.Parameter
MOV EDX,[EAX].TThreadRec.Func
PUSH ECX << FAULT RAISED HERE
PUSH EDX
CALL _FreeMem
POP EDX
POP EAX
CALL EDX
My App uses Indy Components (UDP and IP).
Have you ever seen this kind of problem before ?
Is there a workaround ( i disable madexcept for the release version at the moment )?
Hope this information may help you.
Greg