MP_init_done++;
void modperl_init(server_rec *base_server, apr_pool_t *p){    server_rec *s;    modperl_config_srv_t *base_scfg;    PerlInterpreter *base_perl;    /* get the real base server when invoked from vhost.     *     * without doing it segfaults when the first PerlLoadModule     * appears inside vhost, e.g.:     *     <VirtualHost _default_:8535>     *         PerlLoadModule Foo     *     </VirtualHost>      * an arrangement which is unfortunately hard to automate with our     * test suite, but see test TestDirective::perlloadmodule6     */    if (base_server->is_virtual) {        base_server = modperl_global_get_server_rec();    }    base_scfg = modperl_config_srv_get(base_server);    MP_TRACE_d_do(MpSrv_dump_flags(base_scfg,                                   base_server->server_hostname));#ifndef USE_ITHREADS    if (base_scfg->threaded_mpm) {        ap_log_error(APLOG_MARK, APLOG_ERR, 0, base_server,                     "cannot use threaded MPM without ithreads enabled Perl");        exit(1);    }#endif    if (!MpSrvENABLE(base_scfg)) {        /* how silly */        return;    }    base_perl = modperl_startup(base_server, p);#ifdef USE_ITHREADS    modperl_interp_init(base_server, p, base_perl);    MpInterpBASE_On(base_scfg->mip->parent);#endif    for (s=base_server->next; s; s=s->next) {        if (modperl_init_vhost(s, p, base_server) != OK) {            exit(1); /*XXX*/        }    }}