in reply to Re^2: mod_perl, prefork mpm and alarms
in thread mod_perl, prefork mpm and alarms

So it's not alarm then. If you call ghostscript the same way from a command-line perl program, does it also hang?

Replies are listed 'Best First'.
Re^4: mod_perl, prefork mpm and alarms
by talexb (Chancellor) on Nov 29, 2006 at 20:05 UTC

    To quote from my original post,

      In short, I am trying to call a potentially long running process (Ghostscript) that is wrapped in some code that sets an alarm, then does an eval to call Ghostscript. Either Ghostscript finishes, or the alarm triggers to catch a runaway page being rendered.

    What's happening is that the Apache process is dying about the time that the alarm is set. Dying is bad, in this context. OK, in any context.

    Running this code from the command line works fine, this I'm trying to understand why setting an alarm (my guess, based on output from strace) might be causing the problem. After commenting out all of the calls to alarm, I'm still seeing problems:

    Something still appears to be setting an alarm

    rt_sigaction(SIGALRM, {0x4044fc80, [], SA_RESTORER, 0x402b88f8}, {SIG_DFL}, 8) = 0

    that I presume is breaking Apache, even though I believe I'm running under the prefork MPM.

    Alex / talexb / Toronto

    "Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds

      Something other than your script is setting an alarm? Maybe you should show us the code you use to call ghostscript. The above trace looks more like a problem with pipes to me.

        I owe you a beer. You're absolutely right .. the code that I'm calling does do some futzing around with pipes to call Ghostscript .. it's not my code, I'm just calling it, but I should have guessed (or even checked) that there were pipes involved.

        And that's not on .. Apache has taken control of the input and output pipes in the main process .. meaning if I want to do something *like* that, I have to start a sub-process and talk to it directly. So Apache was burping when it saw the code I was calling start to rearrange the plumbing, I guess.

        Well, it's going to get tricky later when I want to start a sub-process if one isn't yet running for a document, use it for a page image, and then leave it in place for subsequent requests for the same document.

        But Momma, that's where the fun is! --Manfred Mann

        Alex / talexb / Toronto

        "Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds