I have some really complicated legacy code I’ve been working on that crashes when collecting big chunks of data. I’ve been unable to find the exact reason for the crashes and am trying different ways to solve it or at least recover nicely. The last thing I did was enclose the crashing code in a
try ... except cleanup(); end;
just to make it behave. But the cleanup never gets done. Under what circumstances does an exception not get caught? This might be due to some memory overflow or something since the app is collecting quite a bit of data.
Oh and the exception I got before adding the try was ‘Access violation’ (what else?) and the CPU window points to very low addresses. Any ideas or pointers would be much appreciated!
‘Very low address’ probably means that somebody tried to call a virtual method on an object that was not really there (i.e. was ‘nil’). For example:
TStringList(nil).Clear;
The first part is very mysterious, though. I have no idea how that can happen.
I think you should try to catch that exception with madExcept. It has never failed me yet. (Disclaimer: I am not using D7.)