In order to resolve reported crashing on win 2003, I have had to change
the static libxml builds to use the flag LIBXML_STATIC_FOR_DLL.
This now requires a DllMain to be added within any dll that is building
libxml2 in statically.
PHP 4.x - domxml (use php_domxml.c.diff.txt patch)
PHP 5.x/HEAD added within libxml.c (apply libxml.c.diff.txt to PHP 5 and
HEAD - was made against HEAD)
This changes the threading a bit to work in the same manner as if
libxml2 were built and linked to as a shared lib.
Along with these changes new libxml libraries are needed.
debug builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.debug.php.zip
release builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.php.zip
So far I have been testing these against 5.2 builds and ran a few tests
with domxml in PHP 4.4 to make sure all was good. I would appreciate it
if anyone running win builds make these changes to their local builds
and let me know if anyone runs into any problems (there really shouldnt
be any, but in any case..). Would like some additional outside testing
before committing this stuff.
Rob
Hi Rob,
Since we're adding a DllMain function, shouldn't it be located in
main/main.c. We might need to hook up other thread initialization stuff
in there in the future.
Edin
Rob Richards wrote:
In order to resolve reported crashing on win 2003, I have had to change
the static libxml builds to use the flag LIBXML_STATIC_FOR_DLL.This now requires a DllMain to be added within any dll that is building
libxml2 in statically.
PHP 4.x - domxml (use php_domxml.c.diff.txt patch)
PHP 5.x/HEAD added within libxml.c (apply libxml.c.diff.txt to PHP 5 and
HEAD - was made against HEAD)This changes the threading a bit to work in the same manner as if
libxml2 were built and linked to as a shared lib.Along with these changes new libxml libraries are needed.
debug builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.debug.php.ziprelease builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.php.zipSo far I have been testing these against 5.2 builds and ran a few tests
with domxml in PHP 4.4 to make sure all was good. I would appreciate it
if anyone running win builds make these changes to their local builds
and let me know if anyone runs into any problems (there really shouldnt
be any, but in any case..). Would like some additional outside testing
before committing this stuff.Rob
Index: libxml.c
RCS file: /repository/php-src/ext/libxml/libxml.c,v
retrieving revision 1.51
diff -u -r1.51 libxml.c
--- libxml.c 6 Aug 2006 17:41:39 -0000 1.51
+++ libxml.c 10 Aug 2006 20:25:31 -0000
@@ -1043,6 +1043,13 @@
}
/* }}} */+#ifdef PHP_WIN32
+PHP_LIBXML_API BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
- return xmlDllMain(hinstDLL, fdwReason, lpvReserved);
+}
+#endif#endif
/*
Index: php_domxml.c
RCS file: /repository/php-src/ext/domxml/Attic/php_domxml.c,v
retrieving revision 1.218.2.50.2.2
diff -u -r1.218.2.50.2.2 php_domxml.c
--- php_domxml.c 18 Mar 2006 10:46:27 -0000 1.218.2.50.2.2
+++ php_domxml.c 8 Aug 2006 11:47:17 -0000
@@ -5520,6 +5520,13 @@
/* }}} /
#endif / HAVE_DOMXSLT */+#ifdef PHP_WIN32
+__declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
- return xmlDllMain(hinstDLL, fdwReason, lpvReserved);
+}
+#endif#endif /* HAVE_DOMXML */
/*
Doesn't really matter where it is. The only reason I added it in
libxml.c was since libxml2 was the first/only lib needing a DllMain in
teh php5ts_xxx.dll build, I put it there so there was minimal changes to
the core code.
Evenutally I thought it might make more sense to me moved elsewhere so
other extensions could (if needed) take advantage of it.
Rob
Edin Kadribasic wrote:
Hi Rob,
Since we're adding a DllMain function, shouldn't it be located in
main/main.c. We might need to hook up other thread initialization
stuff in there in the future.Edin
Now that 5.1.5 and 4.4.4 have been released, is it possible to get these
changes and updated lib in?
Ilia, not sure if this interrupts your RC schedule at all, but this
change should resolve many of the windows crashes reported under 2003,
so would like to get this into 5.2.
Rob
Edin Kadribasic wrote:
Hi Rob,
Since we're adding a DllMain function, shouldn't it be located in
main/main.c. We might need to hook up other thread initialization
stuff in there in the future.Edin
Rob Richards wrote:
In order to resolve reported crashing on win 2003, I have had to
change the static libxml builds to use the flag LIBXML_STATIC_FOR_DLL.This now requires a DllMain to be added within any dll that is
building libxml2 in statically.
PHP 4.x - domxml (use php_domxml.c.diff.txt patch)
PHP 5.x/HEAD added within libxml.c (apply libxml.c.diff.txt to PHP 5
and HEAD - was made against HEAD)This changes the threading a bit to work in the same manner as if
libxml2 were built and linked to as a shared lib.Along with these changes new libxml libraries are needed.
debug builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.debug.php.ziprelease builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.php.zipSo far I have been testing these against 5.2 builds and ran a few
tests with domxml in PHP 4.4 to make sure all was good. I would
appreciate it if anyone running win builds make these changes to
their local builds and let me know if anyone runs into any problems
(there really shouldnt be any, but in any case..). Would like some
additional outside testing before committing this stuff.Rob
Index: libxml.c
RCS file: /repository/php-src/ext/libxml/libxml.c,v
retrieving revision 1.51
diff -u -r1.51 libxml.c
--- libxml.c 6 Aug 2006 17:41:39 -0000 1.51
+++ libxml.c 10 Aug 2006 20:25:31 -0000
@@ -1043,6 +1043,13 @@
}
/* }}} */+#ifdef PHP_WIN32
+PHP_LIBXML_API BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD
fdwReason, LPVOID lpvReserved)
+{
- return xmlDllMain(hinstDLL, fdwReason, lpvReserved);
+}
+#endif#endif
/*
Index: php_domxml.c
RCS file: /repository/php-src/ext/domxml/Attic/php_domxml.c,v
retrieving revision 1.218.2.50.2.2
diff -u -r1.218.2.50.2.2 php_domxml.c
--- php_domxml.c 18 Mar 2006 10:46:27 -0000 1.218.2.50.2.2
+++ php_domxml.c 8 Aug 2006 11:47:17 -0000
@@ -5520,6 +5520,13 @@
/* }}} /
#endif / HAVE_DOMXSLT */+#ifdef PHP_WIN32
+__declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD
fdwReason, LPVOID lpvReserved)
+{
- return xmlDllMain(hinstDLL, fdwReason, lpvReserved);
+}
+#endif#endif /* HAVE_DOMXML */
/*
Rob,
Is there a reason why we can't call this from MINIT? I'm not sure a good
long-term solution is to have a DllMain when we don't need one.
Andi
-----Original Message-----
From: Rob Richards [mailto:rrichards@ctindustries.net]
Sent: Thursday, August 10, 2006 2:03 PM
To: Edin Kadribasic; internals@lists.php.net
Subject: [PHP-DEV] libxml2/threading/win 2003In order to resolve reported crashing on win 2003, I have had
to change the static libxml builds to use the flag
LIBXML_STATIC_FOR_DLL.This now requires a DllMain to be added within any dll that
is building
libxml2 in statically.
PHP 4.x - domxml (use php_domxml.c.diff.txt patch) PHP
5.x/HEAD added within libxml.c (apply libxml.c.diff.txt to
PHP 5 and HEAD - was made against HEAD)This changes the threading a bit to work in the same manner as if
libxml2 were built and linked to as a shared lib.Along with these changes new libxml libraries are needed.
debug builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.debug.php.ziprelease builds:
http://ctindustries.net/libxml/libxml2-2.6.26.threads.zip
http://ctindustries.net/libxml/libxslt-1.1.17.php.zipSo far I have been testing these against 5.2 builds and ran a
few tests with domxml in PHP 4.4 to make sure all was good. I
would appreciate it if anyone running win builds make these
changes to their local builds and let me know if anyone runs
into any problems (there really shouldnt be any, but in any
case..). Would like some additional outside testing before
committing this stuff.Rob