You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "John K. Sterling" <st...@covalent.net> on 2000/10/20 15:01:01 UTC
[PATCH] stop win32 crash when bringing down service
it appears that the mp dso was being unloaded before the cleanups were
complete, causing a crash in cleanup_sv - ONLY when running as a
service. still not sure why this happens, but this patch at least
eliminates the crash. i believe this is only called before the process
comes down (nt service restart seems to bring the process down), so it
shouldn't really leak.
--- mod_perl.c_bk Fri Oct 20 12:03:22 2000
+++ mod_perl.c Fri Oct 20 12:58:52 2000
@@ -507,8 +507,20 @@
static void mp_dso_unload(void *data)
{
-
- array_header *librefs = xs_dl_librefs((pool *)data);
+ array_header *librefs;
+#ifdef WIN32
+ // This is here to stop a crash when bringing down
+ // a service. Apparently the dso is unloaded too early.
+ // This if statement tests to see if we are running as a
+ // service. apache does the same
+ // see apache's isProcessService() in service.c
+ if (AllocConsole())
+ {
+ FreeConsole();
+ return;
+ }
+#endif
+ librefs = xs_dl_librefs((pool *)data);
perl_shutdown(NULL, NULL);
unload_xs_so(librefs);
Re: [PATCH] stop win32 crash when bringing down service
Posted by Doug MacEachern <do...@covalent.net>.
applied, nice find!