Thanks for the help.

It appears that the GetLastOSError is 9 for these errors.
In the errno.inc for Linux, that is
  ESysEBADF       = 9;    { Bad file number }

I'm not exactly sure what this means though.
Right now as a workaround, when this happens, I do a sleep(100) and retry the page generation and it seems to work.

This only happens when multiple simultaneous requests arrive to the apache server (ex: a dozen iframes hitting cgi calls from a 3rd party website, requesting the same template to be used to generate a response web page with different parameters).

I would like to eliminate this problem in a more elegant way (fix) if it is possible.

AB

On 3/15/2010 02:58, Jonas Maebe wrote:

I have a CGI application with a datamodule that is using templates
to generate the response pages (accessing a MySQL database through
ZEOS).
Every once in a while, I'm getting an "Unable to open file"
exception that points to one of the templates the website is using.

What could be the problem?

Maybe you run out of file handles?

If that is the case, shouldn't something be in the syslog or some
other log?

No. It's a generic user error like any other.

Is there any way I can check this for sure like last system error
string or something?

You can call sysutils.GetLastOSError and look up the number in errno.inc

The exception message only says that "Unable to open file
<filepath_filename>".

I checked the /proc/sys/fs/file-max and it shows 294692

The per-user open file handles limit is different. You can see it in the
output of "ulimit -a" under bash (if it says "unlimited", it means that
it uses the system limit). Maybe you leak file handles somewhere. You
can look in /proc/<pid>/fd from time to time to see whether the number
of open files keeps growing over time.

_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to