if (MpSrvPARENT(scfg)) { MpInterpBASE_On(scfg->mip->parent); } } else {  modperl_interp_init(s, p, perl); MpInterpBASE_On(scfg->mip->parent); }
MpInterpBASE_On(scfg->mip->parent);
PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p){    AV *endav;    dTHXa(NULL);    MP_dSCFG(s);    PerlInterpreter *perl;    int status;    char **argv;    int argc;#ifndef USE_ITHREADS    modperl_cleanup_data_t *cdata;#endif#ifdef MP_USE_GTOP    MP_TRACE_m_do(        scfg->gtop = modperl_gtop_new(p);        modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");    );#endif    argv = modperl_config_srv_argv_init(scfg, &argc);    if (!(perl = perl_alloc())) {        perror("perl_alloc");        exit(1);    }#ifdef USE_ITHREADS    aTHX = perl;#endif    perl_construct(perl);    PL_perl_destruct_level = 2;    MP_boot_data_set(p, s);    status = perl_parse(perl, modperl_xs_init, argc, argv, NULL);    MP_boot_data_set(NULL, NULL);    if (status) {        perror("perl_parse");        exit(1);    }    /* suspend END blocks to be run at server shutdown */    endav = PL_endav;    PL_endav = Nullav;/* This was fixed in 5.9.0/5.8.1 (17775), but won't compile after 19122 */#if PERL_REVISION == 5 && PERL_VERSION == 8 && PERL_SUBVERSION == 0 && \    defined(USE_REENTRANT_API) && defined(HAS_CRYPT_R) && defined(__GLIBC__)    /* workaround perl5.8.0/glibc bug */    PL_reentrant_buffer->_crypt_struct.current_saltbits = 0;#endif        perl_run(perl);#ifdef USE_ITHREADS    if (s->is_virtual) {        /* if alloc flags is On or clone flag is On,         * virtual host gets its own mip         */        if (MpSrvPARENT(scfg) || MpSrvCLONE(scfg)) {            modperl_interp_init(s, p, perl);        }        /* if we allocated a parent perl, mark it to be destroyed */        if (MpSrvPARENT(scfg)) {            MpInterpBASE_On(scfg->mip->parent);        }    }    else {        /* base server */        modperl_interp_init(s, p, perl);        MpInterpBASE_On(scfg->mip->parent);    }    #endif    PL_endav = endav;    set_taint_var(perl);        MP_TRACE_i(MP_FUNC, "constructed interpreter=0x%lx\n",               (unsigned long)perl);#ifdef MP_USE_GTOP    MP_TRACE_m_do(        modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_parse");    );#endif    if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) {        exit(1);    }    if (!modperl_config_apply_PerlModule(s, scfg, perl, p)) {        exit(1);    }#ifndef USE_ITHREADS    cdata = modperl_cleanup_data_new(server_pool, (void*)perl);    apr_pool_cleanup_register(server_pool, cdata,                              modperl_shutdown, apr_pool_cleanup_null);#endif    return perl;}