[fpc-pascal] Linux program sometimes crashes with "EProcess : Failed to create pipes"
Burkhard Carstens
fpc at bcsoft.de
Thu Sep 10 12:44:07 CEST 2009
Am Donnerstag, 10. September 2009 11:01 schrieb T. Guilleminot:
> Hi,
>
> Have a Linux program that recently started to crash several times
> with such message :
> An unhandled exception occurred at $080A4CB9 :
> EProcess : Failed to create pipes
> $080A4CB9
> $080A4D3D
> $080526E0
> $08057C11
> $08058809
> $B7B082B6
> $B7B07B88
> $B7B0B0EB
> $B7B0B5BA
> $B7CF57D9
> $0805AABD
>
> This seems only occurs after a long running period of time.
> Considering error message and as it runs very often some OS processes
> I suspect TProcess. I use such procedure :
>
> Procedure Run_Command(Wait : boolean; TheCommand : ansistring);
> cdecl; export;
> var
> AProcess: TProcess;
> Begin
> AProcess := TProcess.Create(nil);
> AProcess.CommandLine := TheCommand;
> if Wait = true then AProcess.Options := AProcess.Options +
> [poWaitOnExit];
> AProcess.Execute;
> AProcess.Free;
> end;
>
> I think I may hit some OS limits or I overload system.
> Does anyone know how to diagnose this further (why it fails...)
> and/or to fix this ?
Using this procedure with wait=false leaves you a zombie process. I.e.
even, if "TehCommand" finished, the process isn't closed unless you
call fpWaitPID (or better WaitOnExit) on it's pid.
Not sure, but probably the zombie still holds the pipes and therefore
you run out of handles and some point.
see also: http://mantis.freepascal.org/view.php?id=11797
regards
Burkhard
More information about the fpc-pascal
mailing list