From: rasmus Date: Thu, 15 Aug 2002 19:14:47 +0000 (+0000) Subject: Many more to come - just committing to get the framework in there so X-Git-Tag: AGB_BEFORE_AAA_CHANGES~259 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f630d5f36dedd22efa953ab97b3ca088b363144;p=apache Many more to come - just committing to get the framework in there so people can start adding to it. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96386 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/developer/thread_safety.html b/docs/manual/developer/thread_safety.html new file mode 100644 index 0000000000..33259e8d83 --- /dev/null +++ b/docs/manual/developer/thread_safety.html @@ -0,0 +1,90 @@ + + + + + + + Apache 2.0 Thread Safe Issues + + + + + + +

Thread Safetyness

+

When using any of the threaded mpms in Apache 2.0 it is important + that every function from Apache be thread safe. When linking in 3rd + party extensions it can be difficult to determine whether the resulting + server will be thread safe. Casual testing generally won't tell you this + either as thread safety problems can lead to subtle race conditons that + may only show up in certain conditions under heavy load.

+ +

Common 3rd Party Libraries

+

The following is a list of common libraries that are used by 3rd party + Apache modules. You can check to see if your module is using a potentially + unsafe library by using tools such as ldd and nm. For PHP, + for example, try this: +

% ldd libphp4.so
+libsablot.so.0 => /usr/local/lib/libsablot.so.0 (0x401f6000)
+libexpat.so.0 => /usr/lib/libexpat.so.0 (0x402da000)
+libsnmp.so.0 => /usr/lib/libsnmp.so.0 (0x402f9000)
+libpdf.so.1 => /usr/local/lib/libpdf.so.1 (0x40353000)
+libz.so.1 => /usr/lib/libz.so.1 (0x403e2000)
+libpng.so.2 => /usr/lib/libpng.so.2 (0x403f0000)
+libmysqlclient.so.11 => /usr/lib/libmysqlclient.so.11 (0x40411000)
+libming.so => /usr/lib/libming.so (0x40449000)
+libm.so.6 => /lib/libm.so.6 (0x40487000)
+libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x404a8000)
+libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x404e7000)
+libcrypt.so.1 => /lib/libcrypt.so.1 (0x40505000)
+libssl.so.2 => /lib/libssl.so.2 (0x40532000)
+libcrypto.so.2 => /lib/libcrypto.so.2 (0x40560000)
+libresolv.so.2 => /lib/libresolv.so.2 (0x40624000)
+libdl.so.2 => /lib/libdl.so.2 (0x40634000)
+libnsl.so.1 => /lib/libnsl.so.1 (0x40637000)
+libc.so.6 => /lib/libc.so.6 (0x4064b000)
+/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
+In addition to these libraries you will need to have a look at any libraries +linked statically into the module. You can use nm to look for individual +symbols in the module.

+ +

Library List

+

Please drop a note to rasmus@apache.org [need a better contact address here] if + you have additions or corrections to this list.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LibraryVersionThread Safe?Notes
ASpell/PSpell ?
Berkeley DB ?
BZip2 ?
cdb ?
C-Client ?
cpdflib ?
libcrypt ?
Expat YesNeed a separate parser instance per thread
FreeTDS ?
FreeType ?
GD 1.8.x ?
GD 2.0.x ?
gdbm ?
ImageMagick ?
Imlib2 ?
libjpegv6b?
libmysqlclient ?
Ming0.2a?
Net-SNMP5.0.x?
OpenLDAP2.1.x?
OpenSSL0.96g?
liboci8 (Oracle 8+)8.x,9.x?
pdflib4.0.x?
libpng1.0.x?
libpng1.2.x?
libpq (PostgreSQL)7.xYesDon't share connections across threads and watch out for crypt() calls
Sablotron0.95?
zlib1.1.4?
+

+ + +