I have this sort of runtime error in a fairly involved project:
---------------------------
main.exe - Application Error
---------------------------
The instruction at "0x0411b00e" referenced memory at "0x00000020". The memory 
could not be "read".
---------------------------

Background info:
Its a realtime app, and I can't really run a debugger since there's a 
high-priority thread being started by a device driver, and stepping through 
code would immediately break the app. 

The app loads a DLL that processes some audio in real-time. Loading a DLL from 
one vendor runs perfectly, audio gets processed and I can hear back the result. 
But loading a DLL from a different vendor gives me this  runtime error. Another 
thing is I can show the GUI (if its available) of either DLLs, (generally audio 
plugins do come with GUI's). Both plugins show the GUI and I can interact with 
it with no issues. But trying to process audio on one of the DLLs fails.

I've tried it with over a dozen vendor DLLs. So far there's only one that 
fails. Its not so uncommon for an audio processing plugin to fail, but I'd like 
to know _why_. There are many plugin hosts on the market, and I've tried this 
specific DLL with a few of them, it seems to work. So something with my piece 
of the code might be wrong.

My real question is: how do I even begin to debug code that needs to run in 
realtime? There's no memory debugger for D2 that I know of (maybe Vlad will 
port his Diamond to D2 one day :) ), I've tried using a stacktrace but its not 
of much help, all I get back is this:

00 D:\dev\projects\sequencer\src\.\stacktrace\stacktrace.d::57(0) 
_D10stacktrace10stacktrace10StackTrace32UnhandeledExceptionFilterHandlerWPvZi
01 UnhandledExceptionFilter
02 ValidateLocale

Wrapping my main() inside a try{}catch{} doesn't help either, even if I try to 
catch Throwable's. So it might be an exception thrown from within a DLL. Or 
not. :)

I'm a complete newbie when it comes to runtime bugs like these. Any good 
resources, something to read, or techniques, to figure this out? Something 
tells me I'll just have to dive in neck-deep into the disassembly..

Reply via email to