You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Andrew Green <an...@shedside.com> on 2002/01/23 17:39:30 UTC

PerlRun Gotchas?

Hi,

A site I run uses a fair variety of different programs, the most common
of which are run through Apache::Registry.  To cut the memory overhead,
however, less commonly used programs are run through Apache::PerlRun.

Both the Registry and PerlRun programs use a common module which defines
a few subroutines and a selection of exported variables.  These variables
are in the module as globals (ie: no "my" declaration), but with a "use
vars" to get them through strict.

With seeming 50/50 frequency, the PerlRun programs work as intended, or
alternatively return:

     200 OK
     The server encountered an internal error or misconfiguration...
     ...More information about this error may be available in the
     server error log.

Yes, it's not HTTP 500, it is 200.  The error log indicates every time
that this is due to a global set in my module that remains undef for the
program that tries to call it (and an open that dies on failure requires
the global).  Hitting refresh normally does the trick.

The moment I move from PerlRun to ordinary CGI, the problem vanishes. 
Equally, it doesn't happen for Registry.

I've searched the guide, but couldn't find anything of help.  I have a
use Apache::PerlRun (); in my startup file, the common module is also
preloaded therein, and are also "use"d in the PerlRun programs
themselves.  I'm running mod_perl 1.23 on Apache 1.3.19 (Red Hat).

Any suggestions gratefully appreciated.

Cheers,
Andrew.

-- 
"Wow, that's almost as fun as meowing."
           -- http://www.exit109.com/%7Ejeremy/news/providers/40000groups.html