Hi,

I have found an Apache-2.4.18 configuration that causes mod_perl-2.09 to crash when using ITHREADS. Since my configuration file is complicated, I thought it would be easier to explain the conditions in the mod_perl source code that cause the problem to occur.

In mod_perl.c around line 388, there is the following code:

    /* the base server could have mod_perl callbacks disabled, but it
     * still needs perl to drive the vhosts */
    if (!MpSrvENABLE(scfg) && s->is_virtual) {
        MP_TRACE_i(MP_FUNC, "mod_perl disabled for server %s", vhost);
        scfg->mip = NULL;
        return OK;
    }

In other words, there are certain Apache virtual host configurations that cause some scfg structures to operate without a mip pointer. This causes segmentation faults in at least two places in mod_perl that do not check if "scfg->mip" is NULL before using mip as a pointer. The first place is in mod_perl.c at line 512:

    if (scfg->mip->tipool->idle) {

My solution was to wrap the entire if/else statement with the following lines:

    if (scfg->mip) {
        ...
    }

The other place this is a problem is in modperl_interp.c at line 504:

    PerlInterpreter *perl = scfg->mip->parent->perl;

The same solution seems to work as well:

    if (scfg->mip) {
        ...
    }

Thanks for all of your good work on mod_perl.

Best,

Geoff Mottram

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to