[fpc-pascal] random "Disk Full" exceptions
M.Santhoff at t-online.de
Sat Oct 20 18:20:51 CEST 2007
Am Samstag, den 20.10.2007, 09:28 +0200 schrieb Marc Santhoff:
> when running a program interacting with a c library accessing the disc
> drive and writing some informational strings to "stderr" there are
> An unhandled exception occurred at $0804940D :
> EInOutError : Disk Full
> exceptions randomly all over the place. The line position in the program
> is constant but the amount of data processed is changing randomly. At
> some runs no exception occurs at all.
> The source line is:
> writeln(stderr, '--> hit found: '+inttostr(fcnt) + ' - ' +
> inttostr(PInteger(longint(adr)-longint(fx))^) + ' - ' +
Very nasty thing:
The output channel is temporarily blocked and gives back "EAGAIN".
This leads to exceptions thrown repeatedly which cannot be signaled
because the output channel is blocked!
I'm changing my practice of using stderr for debugging output, that much
is sure. I know try ... except-blocks would come in handy, but I had to
disable them for debugging purposes.
Concluding I can say: fpc is too fast in writing for my computer! ;)
More information about the fpc-pascal