Big problem with DirectX (MadExcept crashes the application)

delphi package - automated exception handling
Post Reply
paulmarv
Posts: 6
Joined: Tue May 26, 2009 10:49 pm

Big problem with DirectX (MadExcept crashes the application)

Post by paulmarv »

Hello,

I love MadExcept. It performs great and is very flexible. I own the commercial edition.

When I evaluated MadExcept, my graphics application was written in OpenGL. I have recently switched to DirectX, only to make a very disturbing discovery.

When I try to create the device, I get an access violation error if MadExcept is enabled. I wasted hours of my time trying to debug this - imagine how long it would take you to suppose MadExcept did this!

Anyways, here's the problematic code:
if FAILED(ddx.CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL, Handle,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
@dxPresentParams, IDirect3DDevice9(dxDev)
))
then begin
showmessage('DirectX CreateDevice() Failed. Graphics error #2');
end;
I am really scared/desparate/angry since I need the program to work, and if MadExcept can't be enabled I wasted my money.

Oh, and I did try Pause(true), do my stuff, Pause(false). No change.

I will give a free copy of my program to whomever solves my problem when it is released, if interested. I really would appreciate any help I can get with this.

Thank you.

Here's the bug report:
date/time : 2009-05-26, 18:55:37, 543ms
computer name : PRIMARYDEKSTOP
user name : Maravelias <admin>
registered owner : Maravelias
operating system : Windows XP Media Center Service Pack 2 build 2600
system language : English
system up time : 4 days 11 hours
program up time : 1 second
processors : 4x Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
physical memory : 1099/3060 MB (free/total)
free disk space : (C:) 297.39 GB
display mode : 1680x1050, 32 bit
process id : $1668
allocated memory : 52.11 MB
executable : WS.exe
exec. date/time : 2009-05-26 18:55
version : 0.0.0.283
compiled with : Delphi 2006/07
madExcept version : 3.0i beta 2
contact name : paulmarv
contact email : paulmarv@comcast.net
callstack crc : $f44b829b, $0ba37459, $0ba37459
exception number : 1
exception class : EAccessViolation
exception message : Access violation at address 004073C8 in module 'WS.exe'. Write of address FFF7FFF8.

main thread ($f70):
004073c8 +00c WS.exe System 3016 +0 @DynArrayClear
0040679c +0d0 WS.exe System 3016 +0 @FinalizeArray
004066a0 +020 WS.exe System 3016 +0 @FinalizeRecord
00451150 +398 WS.exe madExcept HandleCreateThreadHook
00451265 +035 WS.exe madExcept HookedCreateRemoteThread
760846e1 +019 kernel32.dll CreateThread
005b82bc +0c4 WS.exe render 1643 +15 DXInit
005b846e +042 WS.exe render 1745 +7 Initialize
005c4e4a +062 WS.exe map 2774 +6 TFrmMap.FormCreate
004b6819 +039 WS.exe Controls TWinControl.UpdateControlOriginalParentSize
0046c38a +05a WS.exe Classes TList.Delete
004c3059 +031 WS.exe Forms TCustomForm.DoCreate
004c2d15 +011 WS.exe Forms TCustomForm.AfterConstruction
00404bb9 +01d WS.exe System 3016 +0 @AfterConstruction
004c2cec +174 WS.exe Forms TCustomForm.Create
004ae838 +074 WS.exe Controls TControl.DoConstrainedResize
004ae8bc +024 WS.exe Controls TControl.Perform
004ad4f2 +006 WS.exe Controls TControl.GetTextBuf
004cb991 +031 WS.exe Forms TApplication.CreateForm
005d7d99 +01d WS.exe main 71 +1 TFrmMain.Button2Click
005d7dd2 +016 WS.exe main 84 +2 TFrmMain.FormCreate
004c3059 +031 WS.exe Forms TCustomForm.DoCreate
004c2d15 +011 WS.exe Forms TCustomForm.AfterConstruction
00404bb9 +01d WS.exe System 3016 +0 @AfterConstruction
004c2cec +174 WS.exe Forms TCustomForm.Create
004cb991 +031 WS.exe Forms TApplication.CreateForm
005da09b +02f WS.exe WS 45 +2 initialization
7608490f +010 kernel32.dll BaseThreadInitThunk

thread $107c:
773f9242 +0a ntdll.dll NtWaitForMultipleObjects
7608c3de +00 kernel32.dll WaitForMultipleObjectsEx
771c0202 +00 USER32.dll MsgWaitForMultipleObjectsEx
771b9b53 +1a USER32.dll MsgWaitForMultipleObjects
00450c21 +0d WS.exe madExcept CallThreadProcSafe
00450c8b +37 WS.exe madExcept ThreadExceptFrame
7608490f +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($f70) at:
7433769f +00 gdiplus.dll

modules:
00400000 WS.exe 0.0.0.283 C:\Users\Maravelias\Documents\PMSoft\WS
04720000 igdumd32.dll 7.14.10.1409 C:\Windows\system32
10000000 lpng.dll C:\Users\Maravelias\Documents\PMSoft\WS
6a8f0000 AcGenral.DLL 6.0.6001.18165 C:\Windows\AppPatch
6dcf0000 AcLayers.dll 6.0.6001.18165 C:\Windows\AppPatch
6dd80000 DDRAW.dll 6.0.6001.18000 C:\Windows\system32
6e520000 d3d9.dll 6.0.6001.18000 C:\Windows\system32
6e740000 opengl32.dll 6.0.6000.16386 C:\Windows\system32
6e8a0000 GLU32.dll 6.0.6000.16386 C:\Windows\system32
6f910000 olepro32.dll 6.0.6001.18000 C:\Windows\system32
6fb60000 dwmapi.dll 6.0.6001.18000 C:\Windows\system32
71ec0000 d3d8thk.dll 6.0.6000.16386 C:\Windows\system32
727f0000 sfc_os.DLL 6.0.6001.18000 C:\Windows\system32
72800000 ShimEng.dll 6.0.6000.16386 C:\Windows\system32
72ac0000 sfc.dll 6.0.6000.16386 C:\Windows\system32
72b80000 WINSPOOL.DRV 6.0.6001.18000 C:\Windows\system32
73ac0000 MSACM32.dll 6.0.6001.18000 C:\Windows\system32
73bc0000 SHUNIMPL.dll 6.0.6000.16386 C:\Windows\system32
73cb0000 OLEACC.dll 4.2.5406.0 C:\Windows\system32
73fb0000 winmm.dll 6.0.6001.18000 C:\Windows\system32
74160000 DCIMAN32.dll 6.0.6000.16386 C:\Windows\system32
74320000 gdiplus.dll 5.2.6001.18065 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6001.18065_none_9e7abe2ec9c13222
74640000 wsock32.dll 6.0.6001.18000 C:\Windows\system32
74970000 comctl32.dll 6.10.6001.18000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_5cdbaa5a083979cc
74c70000 UxTheme.dll 6.0.6001.18000 C:\Windows\system32
74f10000 msimg32.dll 6.0.6000.16386 C:\Windows\system32
75280000 version.dll 6.0.6001.18000 C:\Windows\system32
755f0000 MPR.dll 6.0.6001.18000 C:\Windows\system32
75890000 NETAPI32.dll 6.0.6001.18157 C:\Windows\system32
759d0000 apphelp.dll 6.0.6001.18000 C:\Windows\system32
75a60000 SAMLIB.dll 6.0.6001.18000 C:\Windows\system32
75a80000 NTMARTA.DLL 6.0.6001.18000 C:\Windows\system32
75ab0000 Secur32.dll 6.0.6001.18215 C:\Windows\system32
75ad0000 USERENV.dll 6.0.6001.18000 C:\Windows\system32
75b80000 PSAPI.DLL 6.0.6000.16386 C:\Windows\system32
75c20000 IMM32.DLL 6.0.6001.18000 C:\Windows\system32
75c40000 SHLWAPI.dll 6.0.6001.18000 C:\Windows\system32
75ca0000 WLDAP32.dll 6.0.6001.18000 C:\Windows\system32
75cf0000 ole32.dll 6.0.6001.18000 C:\Windows\system32
75e40000 USP10.dll 1.626.6001.18000 C:\Windows\system32
75ec0000 URLMON.DLL 7.0.6001.18226 C:\Windows\system32
75ff0000 iertutil.dll 7.0.6001.18226 C:\Windows\system32
76040000 kernel32.dll 6.0.6001.18215 C:\Windows\system32
76120000 SETUPAPI.dll 6.0.6001.18000 C:\Windows\system32
762b0000 WS2_32.dll 6.0.6001.18000 C:\Windows\system32
762e0000 msvcrt.dll 7.0.6001.18000 C:\Windows\system32
76390000 shell32.dll 6.0.6001.18167 C:\Windows\system32
76ea0000 GDI32.dll 6.0.6001.18159 C:\Windows\system32
76ef0000 oleaut32.dll 6.0.6001.18000 C:\Windows\system32
76f80000 RPCRT4.dll 6.0.6001.18051 C:\Windows\system32
77050000 comdlg32.dll 6.0.6001.18000 C:\Windows\system32
770d0000 ADVAPI32.dll 6.0.6001.18000 C:\Windows\system32
771a0000 USER32.dll 6.0.6001.18000 C:\Windows\system32
772d0000 wininet.dll 7.0.6001.18226 C:\Windows\system32
773a0000 ntdll.dll 6.0.6001.18000 C:\Windows\system32
774d0000 Normaliz.dll 6.0.6000.16386 C:\Windows\system32
774e0000 NSI.dll 6.0.6001.18000 C:\Windows\system32
774f0000 LPK.DLL 6.0.6001.18000 C:\Windows\system32
77530000 MSCTF.dll 6.0.6001.18000 C:\Windows\system32

processes:
0000 Idle 0
0004 System 0
01ac smss.exe 0
01f0 csrss.exe 0
022c wininit.exe 0
0238 csrss.exe 1
025c winlogon.exe 1
0280 services.exe 0
028c lsass.exe 0
0298 lsm.exe 0
0334 svchost.exe 0
0370 svchost.exe 0
0398 svchost.exe 0
03f4 svchost.exe 0
0414 svchost.exe 0
042c svchost.exe 0
046c audiodg.exe 0
0488 SLsvc.exe 0
04a8 svchost.exe 0
04f8 DockLogin.exe 0
0544 svchost.exe 0
0600 WLTRYSVC.EXE 0
0628 BCMWLTRY.EXE 0
06a0 spoolsv.exe 0
06c0 svchost.exe 0
02a8 mDNSResponder.exe 0
03b4 FileZilla server.exe 0
07e8 lxdfcoms.exe 0
064c GoogleUpdate.exe 0
01d8 mdm.exe 0
086c svchost.exe 0
0880 PSIService.exe 0
08a4 SbieSvc.exe 0
08e0 svchost.exe 0
0914 ViewpointService.exe 0
092c k9filter.exe 0
094c svchost.exe 0
0960 SearchIndexer.exe 0
0a28 XAudio.exe 0
0a30 WUDFHost.exe 0
0ba8 UI0Detect.exe 0
0d00 taskeng.exe 0
0f58 Dwm.exe 1 high C:\Windows\system32
0f88 taskeng.exe 1 normal C:\Windows\system32
0adc MSASCui.exe 1 normal C:\Program Files\Windows Defender
0608 igfxpers.exe 1 normal C:\Windows\System32
0b68 lxdfmon.exe 1 normal C:\Program Files\Lexmark 6500 Series
01c8 lxdfamon.exe 1 normal C:\Program Files\Lexmark 6500 Series
0cb4 igfxsrvc.exe 1 normal C:\Windows\system32
0660 wmpnetwk.exe 0
1020 Explorer.EXE 1 normal C:\Windows
0fb8 usnsvc.exe 0
1228 wuauclt.exe 1 normal C:\Windows\system32
1094 notepad++.exe 1 normal C:\Program Files\Notepad++
0ef0 bds.exe 1 normal C:\Program Files\Borland\BDS\4.0\Bin
1598 GoogleUpdate.exe 1 normal C:\Users\Maravelias\AppData\Local\Google\Update
1160 WMPNSCFG.exe 1 normal C:\Program Files\Windows Media Player
15d4 wmplayer.exe 1 normal C:\Program Files\Windows Media Player
07ec mfpmp.exe 1
0bd4 firefox.exe 1 normal C:\Program Files\Mozilla Firefox
0f00 SearchProtocolHost.exe 0
1494 SearchFilterHost.exe 0 idle C:\Windows\system32
1668 WS.exe 1 normal C:\Users\Maravelias\Documents\PMSoft\WS

hardware:
+ Computer
- ACPI x86-based PC
+ Disk drives
- Hitachi HDP725050GLA360 ATA Device
- Lexmark USB Mass Storage USB Device
- TEAC USB HS-CF Card USB Device
- TEAC USB HS-MS Card USB Device
- TEAC USB HS-SD Card USB Device
- TEAC USB HS-xD/SM USB Device
+ Display adapters
- Intel(R) G33/G31 Express Chipset Family (driver 7.14.10.1409)
+ DVD/CD-ROM drives
- HL-DT-ST DVD+-RW GSA-H73N ATA Device
+ Human Interface Devices
- HID-compliant consumer control device
- HID-compliant device
- Premium Tilt Wheel (HID) (driver 1.0.0.4)
- USB Human Interface Device
- USB Human Interface Device
- USB Human Interface Device
+ IDE ATA/ATAPI controllers
- ATA Channel 0
- ATA Channel 0
- ATA Channel 1
- ATA Channel 1
- Intel(R) ICH9 Family 2 port Serial ATA Storage Controller 2 - 2926 (driver 8.3.0.1016)
- Intel(R) ICH9R/DO/DH 4 port Serial ATA Storage Controller 1 - 2920 (driver 8.3.0.1016)
+ IEEE 1394 Bus host controllers
- AGERE OHCI Compliant IEEE 1394 Host Controller
+ Imaging devices
- Lexmark 6500 Series (driver 1.0.0.0)
- Monitor Webcam
+ Keyboards
- HID Keyboard Device
+ Mice and other pointing devices
- HID-compliant mouse
+ Microsoft Common Controller For Windows Class
- Xbox 360 Wireless Receiver for Windows
+ Modems
- Conexant D850 PCI V.92 Modem (driver 7.58.0.50)
+ Monitors
- Generic PnP Monitor
+ Network adapters
- Dell Wireless 1505 Draft 802.11n WLAN Mini-Card (driver 4.102.15.61)
- Realtek RTL8168C(P)/8111C(P) Family PCI-E Gigabit Ethernet NIC (NDIS 6.0) (driver 6.202.125.2008)
+ Portable Devices
- USB HS-CF Card
- USB HS-MS Card
- USB HS-SD Card
- USB HS-xD/SM
- USB Mass Storage
+ Printers
- Lexmark 6500 Series (driver 1.0.5.1)
+ Processors
- Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
- Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
- Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
- Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
+ Sound, video and game controllers
- Monitor Webcam
- Realtek High Definition Audio (driver 6.0.1.5548)
+ Storage controllers
- Microsoft iSCSI Initiator
+ Storage volume shadow copies
- Generic volume shadow copy
- Generic volume shadow copy
- Generic volume shadow copy
- Generic volume shadow copy
- Generic volume shadow copy
- Generic volume shadow copy
- Generic volume shadow copy
+ System devices
- ACPI Fan
- ACPI Fixed Feature Button
- ACPI Power Button
- ACPI Thermal Zone
- Direct memory access controller
- High Definition Audio Controller
- High Precision Event Timer (driver 7.0.0.1011)
- Intel(R) 82801 PCI Bridge - 244E (driver 7.0.0.1011)
- Intel(R) 82802 Firmware Hub Device
- Intel(R) G33/G31/P35/P31 Express Chipset PCI Express Root Port - 29C1 (driver 8.4.0.1017)
- Intel(R) G33/G31/P35/P31 Express Chipset Processor to I/O Controller - 29C0 (driver 8.4.0.1017)
- Intel(R) ICH9 Family PCI Express Root Port 1 - 2940 (driver 8.3.0.1016)
- Intel(R) ICH9 Family PCI Express Root Port 4 - 2946 (driver 8.3.0.1016)
- Intel(R) ICH9 Family PCI Express Root Port 5 - 2948 (driver 8.3.0.1016)
- Intel(R) ICH9 Family SMBus Controller - 2930 (driver 8.3.0.1008)
- Intel(R) ICH9R LPC Interface Controller - 2916 (driver 8.3.0.1016)
- Microsoft ACPI-Compliant System
- Microsoft System Management BIOS Driver
- Motherboard resources
- Motherboard resources
- Motherboard resources
- Numeric data processor
- PCI bus
- Plug and Play Software Device Enumerator
- Programmable interrupt controller
- System board
- System CMOS/real time clock
- System speaker
- System timer
- Terminal Server Keyboard Driver
- Terminal Server Mouse Driver
- UMBus Enumerator
- UMBus Enumerator
- UMBus Root Bus Enumerator
- Volume Manager
+ Universal Serial Bus controllers
- CA-200 (driver 1.1.0.0)
- Generic USB Hub
- Generic USB Hub
- Intel(R) ICH9 Family USB Universal Host Controller - 2934 (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB Universal Host Controller - 2935 (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB Universal Host Controller - 2936 (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB Universal Host Controller - 2937 (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB Universal Host Controller - 2938 (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB Universal Host Controller - 2939 (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB2 Enhanced Host Controller - 293A (driver 8.3.0.1011)
- Intel(R) ICH9 Family USB2 Enhanced Host Controller - 293C (driver 8.3.0.1011)
- USB Composite Device
- USB Composite Device
- USB Composite Device
- USB Mass Storage Device
- USB Printing Support
- USB Root Hub
- USB Root Hub
- USB Root Hub
- USB Root Hub
- USB Root Hub
- USB Root Hub
- USB Root Hub
- USB Root Hub

cpu registers:
eax = 0012f5d4
ebx = 0012f5d8
ecx = fff80000
edx = 00416010
esi = 00416010
edi = 00000001
eip = 004073c8
esp = 0012f43c
ebp = 0012f5fc

stack dump:
0012f43c a1 67 40 00 04 00 00 00 - b3 60 41 00 b8 f5 12 00 .g@......`A.....
0012f44c d4 f5 12 00 a5 66 40 00 - 50 f4 12 00 00 00 00 00 .....f@.P.......
0012f45c f6 10 45 00 55 11 45 00 - 5d 11 45 00 78 55 b9 00 ..E.U.E.].E.xU..
0012f46c a8 f6 12 00 01 00 00 00 - 00 00 00 00 00 00 00 00 ................
0012f47c 86 21 18 00 18 bb 1a 00 - f0 2b 0a 76 00 01 00 00 .!.......+.v....
0012f48c c4 f3 12 00 66 04 00 00 - 14 f5 12 00 34 98 3a 77 ....f.......4.:w
0012f49c db ad fe 16 fe ff ff ff - 1f 86 40 77 52 86 40 77 ..........@wR.@w
0012f4ac c8 be 1a 00 d0 be 1a 00 - 00 00 00 00 70 7e 3e 77 ............p~>w
0012f4bc 00 00 00 00 24 f5 12 00 - 31 32 06 76 00 00 18 00 ....$...12.v....
0012f4cc 00 00 00 00 c8 be 1a 00 - dd 31 06 76 4c cb 33 ce .........1.vL.3.
0012f4dc 78 55 b9 00 b0 4c dc 00 - 01 00 00 00 64 04 66 04 xU...L......d.f.
0012f4ec d0 be 1a 00 38 00 3a 00 - 00 fc fd 7f 18 bb 1a 00 ....8.:.........
0012f4fc d0 be 1a 00 00 00 00 00 - 00 00 52 6e 00 00 00 00 ..........Rn....
0012f50c d8 f4 12 00 80 c7 08 76 - f4 f6 12 00 89 e2 04 76 .......v.......v
0012f51c 88 0f 27 b8 fe ff ff ff - dd 31 06 76 88 94 06 76 ..'......1.v...v
0012f52c 00 fc fd 7f 00 00 00 00 - 00 00 00 00 58 f5 12 00 ............X...
0012f53c c3 94 06 76 64 f5 12 00 - 00 00 00 00 00 00 00 00 ...vd...........
0012f54c 78 55 b9 00 b0 4c dc 00 - 01 00 00 00 6c f6 12 00 xU...L......l...
0012f55c a2 e9 53 6e ac e9 53 6e - 43 3a 5c 57 69 6e 64 6f ..Sn..SnC:\Windo
0012f56c 77 73 5c 73 79 73 74 65 - 6d 33 32 5c 64 33 64 39 ws\system32\d3d9

disassembling:
004073bc public System.@DynArrayClear: ; function entry point
004073bc 3016 ecx, [eax]
004073be ecx, ecx
004073c0 loc_4073f5
004073c2 dword ptr [eax], 0
004073c8 > lock dword ptr [ecx-8]
004073cc loc_4073f5
004073ce eax
004073cf eax, ecx
004073d1 ecx, ecx
004073d3 cl, [edx+1]
[...]
madshi
Site Admin
Posts: 10766
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Don't be too hasty in judging madExcept... ;)

What does render.DXInit (line 1643) do? Does it create a thread? If so, how does your thread function look like?

Can you reproduce this crash in a brand new test project? If so, could you please send me the source code of that test project, so that I can reproduce the problem on my PC? If I can reproduce the problem on my PC with a project that I can compile myself, I can promise that I'll be able to fix the problem...
Nico Bendlin
Posts: 46
Joined: Fri Apr 28, 2006 1:17 pm

Post by Nico Bendlin »

I assume that the implementation of IDirect3D9.CreateDevice() creates an internal worker thread (therefore he/she cannot tell how the thread function looks like).
madshi
Site Admin
Posts: 10766
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

That's quite possible, of course...
paulmarv
Posts: 6
Joined: Tue May 26, 2009 10:49 pm

Post by paulmarv »

madshi wrote:Don't be too hasty in judging madExcept... ;)

What does render.DXInit (line 1643) do? Does it create a thread? If so, how does your thread function look like?

Can you reproduce this crash in a brand new test project? If so, could you please send me the source code of that test project, so that I can reproduce the problem on my PC? If I can reproduce the problem on my PC with a project that I can compile myself, I can promise that I'll be able to fix the problem...
My apologies for my hastiness. I will do this and send it to you.

It creates no threads, although it is very possible, as the previous poster said, that CreateDevice creates a thread. I thank you for your support on this and will get that project to you later, first I need to create a test project.
paulmarv
Posts: 6
Joined: Tue May 26, 2009 10:49 pm

Post by paulmarv »

Here is a link to download a zip of the test project: http://www.mediafire.com/download.php?jytnqdxqnmi
Belev
Posts: 6
Joined: Fri Oct 17, 2008 11:10 am

Post by Belev »

I have similar problems with CreateDevice. Application hangs on invoking the function. However this problem is seen on Windows Vista and Windows 7. There is no such problems on XP.

I had to patch madexcept to not hook the non-Delphi threads. It would be nice if there is an option to disable hooking for non-Delphi threads and/or some events to manage what threads to be hooked or not.
paulmarv
Posts: 6
Joined: Tue May 26, 2009 10:49 pm

Post by paulmarv »

Belev wrote:I have similar problems with CreateDevice. Application hangs on invoking the function. However this problem is seen on Windows Vista and Windows 7. There is no such problems on XP.

I had to patch madexcept to not hook the non-Delphi threads. It would be nice if there is an option to disable hooking for non-Delphi threads and/or some events to manage what threads to be hooked or not.
Would you be so kind as to explain how to do this or even zip the source and send it to me? I would really appreciate that as I've wasted my money if I can't get this solved by the time I release.

Thank you!
madshi
Site Admin
Posts: 10766
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

I'm sorry for taking so long. I've now finally looked into this - and unfortunately I can't reproduce the problem on my PC. Pressing the "Init" button with madExcept enabled does not crash for me. Maybe it only crashes with a specific graphics card or specific graphics driver?

(ATI 3850, XPSP2, Delphi 7, latest madExcept version)
paulmarv
Posts: 6
Joined: Tue May 26, 2009 10:49 pm

Post by paulmarv »

No problem, I understand you're busy.

I have Vista Home Premium 32 bit with a cheap Intel(R) G33/G31 Express Chipset Family card.

Perhaps you could somehow make it so that madExcept starts taking effect after a certain point? (in this case, after CreateDevice)

Or, there could be some DontAttachToThreads() function that I call before CreateDevice, and then I would call DoAttachToThreads.
madshi
Site Admin
Posts: 10766
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

The next build will no longer hook thread creation, if madExcept is active in a dll. Furthermore I've added functions named "HookThreads" and "DontHookThreads" which allow you to overwrite the default behaviour (i.e. hook threads in a dll, or not hook threads in an exe). The next build should be up in the next few days. Calling "DontHookThreads" should solve the problem for you. However, doing that means that madExcept will no longer automatically catch exceptions in any secondary threads. That means you will have to add an "try..except madExcept.HandleException end" block around any thread you want to have protected.
paulmarv
Posts: 6
Joined: Tue May 26, 2009 10:49 pm

Post by paulmarv »

Thanks a million madshi, I'm not doing much multithreading anyways so that shouldn't be much of a problem.
Post Reply