perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: [mp2] post_config crash during test startup on Win32
Date Tue, 21 Dec 2004 16:00:58 GMT
Markus Wichitill wrote:
> VMem::Free(void * 0x01ffc79c) line 208 + 3 bytes
> CPerlHost::Free(void * 0x01ffc79c) line 59 + 34 bytes
> PerlMemFree(IPerlMem * 0x00262544, void * 0x01ffc79c) line 302

Lovely. Markus, Please try this patch. Just a guess.

Index: src/modules/perl/modperl_config.c
===================================================================
--- src/modules/perl/modperl_config.c	(revision 122969)
+++ src/modules/perl/modperl_config.c	(working copy)
@@ -447,6 +447,7 @@
      modperl_require_file_t **requires;
      int i;
  #ifdef USE_ITHREADS
+    PerlInterpreter *orig_perl = PERL_GET_CONTEXT;
      pTHX;
  #endif

@@ -454,6 +455,7 @@
      for (i = 0; i < scfg->PerlPostConfigRequire->nelts; i++){
  #ifdef USE_ITHREADS
          aTHX = requires[i]->perl;
+        PERL_SET_CONTEXT(aTHX);
  #endif
          if (modperl_require_file(aTHX_ requires[i]->file, TRUE)){
              MP_TRACE_d(MP_FUNC, "loaded Perl file: %s for server %s\n",
@@ -463,9 +465,15 @@
              ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
                           "Can't load Perl file: %s for server %s, 
exiting...",
                           requires[i]->file, modperl_server_desc(s, p));
+#ifdef USE_ITHREADS
+            PERL_SET_CONTEXT(orig_perl);
+#endif
              return FALSE;
          }
      }
+#ifdef USE_ITHREADS
+    PERL_SET_CONTEXT(orig_perl);
+#endif

      return TRUE;
  }
Index: src/modules/perl/modperl_cmd.c
===================================================================
--- src/modules/perl/modperl_cmd.c	(revision 122969)
+++ src/modules/perl/modperl_cmd.c	(working copy)
@@ -282,16 +282,13 @@
      apr_pool_t *p = parms->pool;
      apr_finfo_t finfo;
      MP_dSCFG(parms->server);
-    MP_PERL_DECLARE_CONTEXT;

      if (APR_SUCCESS == apr_stat(&finfo, arg, APR_FINFO_TYPE, p)) {
          if (finfo.filetype != APR_NOFILE) {
               modperl_require_file_t *require = apr_pcalloc(p, 
sizeof(*require));
  #ifdef USE_ITHREADS
              if (modperl_is_running()) {
-                MP_PERL_OVERRIDE_CONTEXT;
-                require->perl = aTHX;
-                MP_PERL_RESTORE_CONTEXT;
+                require->perl = scfg->mip->parent->perl;
              }
  #endif
              require->file = arg;

-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

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


Mime
View raw message