<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="thread_safety.xml.meta">
<parentdocument href="./">Developer Documentation</parentdocument>

<title>Apache HTTP Server 2.x Thread Safety Issues</title>

<summary>
    <p>When using any of the threaded mpms in the Apache HTTP Server 2.x it is important
    that every function called 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 conditions that
    may only show up in certain conditions under heavy load.</p>
</summary>

<section id="variables"><title>Global and static variables</title>
    <p>When writing your module or when trying to determine if a module or
    3rd party library is thread safe there are some common things to keep in
    mind.</p>

    <p>First, you need to recognize that in a threaded model each individual
    thread has its own program counter, stack and registers.  Local variables
    live on the stack, so those are fine.  You need to watch out for any
    static or global variables.  This doesn't mean that you are absolutely not
    allowed to use static or global variables.  There are times when you
    actually want something to affect all threads, but generally you need to
    avoid using them if you want your code to be thread safe.</p>

    <p>In the case where you have a global variable that needs to be global and
    accessed by all threads, be very careful when you update it.  If, for
    example, it is an incrementing counter, you need to atomically increment
    it to avoid race conditions with other threads.  You do this using a mutex
    (mutual exclusion). Lock the mutex, read the current value, increment it
    and write it back and then unlock the mutex.  Any other thread that wants
    to modify the value has to first check the mutex and block until it is
    cleared.</p>

    <p>If you are using <a href="http://apr.apache.org/">APR</a>, have a look
    at the <code>apr_atomic_<var>*</var></code> functions and the
    <code>apr_thread_mutex_<var>*</var></code> functions.</p>
    <!-- [would probably be a good idea to add an example here] -->
</section>

<section id="errno"><title>errno</title>
    <p>This is a common global variable that holds the error number of the
    last error that occurred. If one thread calls a low-level function that
    sets errno and then another thread checks it, we are bleeding error
    numbers from one thread into another.  To solve this, make sure your
    module or library defines <code>_REENTRANT</code> or is compiled with
    <code>-D_REENTRANT</code>. This will make errno a per-thread variable
    and should hopefully be transparent to the code. It does this by doing
    something like this:</p>

    <example>
      #define errno (*(__errno_location()))
    </example>

    <p>which means that accessing errno will call
    <code>__errno_location()</code> which is provided by the libc. Setting
    <code>_REENTRANT</code> also forces redefinition of some other functions
    to their <code><var>*</var>_r</code> equivalents and sometimes changes
    the common <code>getc</code>/<code>putc</code> macros into safer function
    calls.  Check your libc documentation for specifics.  Instead of, or in
    addition to <code>_REENTRANT</code> the symbols that may affect this are
    <code>_POSIX_C_SOURCE</code>, <code>_THREAD_SAFE</code>,
    <code>_SVID_SOURCE</code>, and <code>_BSD_SOURCE</code>.</p>
</section>

<section id="functions"><title>Common standard troublesome functions</title>
    <p>Not only do things have to be thread safe, but they also have to be
    reentrant. <code>strtok()</code> is an obvious one. You call it the first
    time with your delimiter which it then remembers and on each subsequent
    call it returns the next token.  Obviously if multiple threads are
    calling it you will have a problem.  Most systems have a reentrant version
    of the function called <code>strtok_r()</code> where you pass in an
    extra argument which contains an allocated <code>char *</code> which the
    function will use instead of its own static storage for maintaining
    the tokenizing state. If you are using <a href="http://apr.apache.org/"
    >APR</a> you can use <code>apr_strtok()</code>.</p>

    <p><code>crypt()</code> is another function that tends to not be reentrant,
    so if you run across calls to that function in a library, watch out. On
    some systems it is reentrant though, so it is not always a problem. If
    your system has <code>crypt_r()</code> chances are you should be using
    that, or if possible simply avoid the whole mess by using md5 instead.</p>
    <!-- [I don't see an apr_crypt() function.] -->
</section>

<section id="commonlibs"><title>Common 3rd Party Libraries</title>
    <p>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 <code>ldd(1)</code> and
    <code>nm(1)</code>. For <a href="http://www.php.net/">PHP</a>, for example,
    try this:</p>

    <example>
      % ldd libphp4.so<br />
      libsablot.so.0 => /usr/local/lib/libsablot.so.0 (0x401f6000)<br />
      libexpat.so.0 => /usr/lib/libexpat.so.0 (0x402da000)<br />
      libsnmp.so.0 => /usr/lib/libsnmp.so.0 (0x402f9000)<br />
      libpdf.so.1 => /usr/local/lib/libpdf.so.1 (0x40353000)<br />
      libz.so.1 => /usr/lib/libz.so.1 (0x403e2000)<br />
      libpng.so.2 => /usr/lib/libpng.so.2 (0x403f0000)<br />
      libmysqlclient.so.11 => /usr/lib/libmysqlclient.so.11 (0x40411000)<br />
      libm.so.6 => /lib/libm.so.6 (0x40487000)<br />
      libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x404a8000)<br />
      libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x404e7000)<br />
      libcrypt.so.1 => /lib/libcrypt.so.1 (0x40505000)<br />
      libssl.so.2 => /lib/libssl.so.2 (0x40532000)<br />
      libcrypto.so.2 => /lib/libcrypto.so.2 (0x40560000)<br />
      libresolv.so.2 => /lib/libresolv.so.2 (0x40624000)<br />
      libdl.so.2 => /lib/libdl.so.2 (0x40634000)<br />
      libnsl.so.1 => /lib/libnsl.so.1 (0x40637000)<br />
      libc.so.6 => /lib/libc.so.6 (0x4064b000)<br />
      /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
    </example>

    <p>In addition to these libraries you will need to have a look at any
    libraries linked statically into the module. You can use <code>nm(1)</code>
    to look for individual symbols in the module.</p>
</section>

<section id="liblist"><title>Library List</title>
    <p>Please drop a note to <a
    href="http://httpd.apache.org/lists.html#http-dev">dev@httpd.apache.org</a>
    if you have additions or corrections to this list.</p>

    <table style="zebra" border="1">
    <tr><th>Library</th><th>Version</th><th>Thread Safe?</th><th>Notes</th></tr>
    <tr><td><a href="http://aspell.sourceforge.net/">ASpell/PSpell</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="https://www.oracle.com/database/technologies/related/berkeleydb.html">Berkeley DB</a></td>
        <td>3.x, 4.x</td>
        <td>Yes</td>
        <td>Be careful about sharing a connection across threads.</td></tr>
    <tr><td><a href="https://sourceware.org/bzip2/">bzip2</a></td>
        <td> </td>
        <td>Yes</td>
        <td>Both low-level and high-level APIs are thread-safe. However,
        high-level API requires thread-safe access to errno.</td></tr>
    <tr><td><a href="http://cr.yp.to/cdb.html">cdb</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="https://github.com/uw-imap/imap">C-Client</a></td>
        <td> </td>
        <td>Perhaps</td>
        <td>c-client uses <code>strtok()</code> and
        <code>gethostbyname()</code> which are not thread-safe on most C
        library implementations.  c-client's static data is meant to be shared
        across threads. If <code>strtok()</code> and
        <code>gethostbyname()</code> are thread-safe on your OS, c-client
        <em>may</em> be thread-safe.</td></tr>
    <tr><td><a href="http://www.ijg.org/files/">libcrypt</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://expat.sourceforge.net/">Expat</a></td>
        <td> </td>
        <td>Yes</td>
        <td>Need a separate parser instance per thread</td></tr>
    <tr><td><a href="http://www.freetds.org/">FreeTDS</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.freetype.org/">FreeType</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.boutell.com/gd/">GD 1.8.x</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.boutell.com/gd/">GD 2.0.x</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.gnu.org/software/gdbm/gdbm.html">gdbm</a></td>
        <td> </td>
        <td>No</td>
        <td>Errors returned via a static <code>gdbm_error</code>
        variable</td></tr>
    <tr><td><a href="http://www.imagemagick.org/">ImageMagick</a></td>
        <td>5.2.2</td>
        <td>Yes</td>
        <td>ImageMagick docs claim it is thread safe since version 5.2.2 (see <a
        href="http://www.imagemagick.com/www/changelog.html"
        >Change log</a>).
        </td></tr>
    <tr><td><a href="https://www.enlightenment.org/about-efl"
        >Imlib2</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.ijg.org/files/">libjpeg</a></td>
        <td>v6b</td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://mysql.com">libmysqlclient</a></td>
        <td> </td>
        <td>Yes</td>
        <td>Use mysqlclient_r library variant to ensure thread-safety.  For
            more information, please read <a
            href="https://dev.mysql.com/doc/c-api/8.0/en/c-api-threaded-clients.html"
            >https://dev.mysql.com/doc/c-api/8.0/en/c-api-threaded-clients.html</a>.</td></tr>
    <tr><td><a href="http://net-snmp.sourceforge.net/">Net-SNMP</a></td>
        <td>5.0.x</td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.openldap.org/">OpenLDAP</a></td>
        <td>2.1.x</td>
        <td>Yes</td>
        <td>Use <code>ldap_r</code> library variant to ensure
        thread-safety.</td></tr>
    <tr><td><a href="http://www.openssl.org/">OpenSSL</a></td>
        <td>0.9.6g</td>
        <td>Yes</td>
        <td>Requires proper usage of <code>CRYPTO_num_locks</code>,
        <code>CRYPTO_set_locking_callback</code>,
        <code>CRYPTO_set_id_callback</code></td></tr>
    <tr><td><a href="http://www.oracle.com/">liboci8 (Oracle 8+)</a></td>
        <td>8.x,9.x</td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://pdflib.com/">pdflib</a></td>
        <td>5.0.x</td>
        <td>Yes</td>
        <td>PDFLib docs claim it is thread safe; changes.txt indicates it
            has been partially thread-safe since V1.91: <a
            href="http://www.pdflib.com/products/pdflib-family/pdflib/"
            >http://www.pdflib.com/products/pdflib-family/pdflib/</a>.</td></tr>
    <tr><td><a href="http://www.libpng.org/pub/png/libpng.html">libpng</a></td>
        <td>1.0.x</td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a href="http://www.libpng.org/pub/png/libpng.html">libpng</a></td>
        <td>1.2.x</td>
        <td>?</td>
        <td> </td></tr>
    <tr><td><a
        href="https://www.postgresql.org/docs/8.4/libpq-threading.html"
        >libpq (PostgreSQL)</a></td>
        <td>8.x</td>
        <td>Yes</td>
        <td>Don't share connections across threads and watch out for
        <code>crypt()</code> calls</td></tr>
    <tr><td><a href="http://www.gzip.org/zlib/">zlib</a></td>
        <td>1.1.4</td>
        <td>Yes</td>
        <td>Relies upon thread-safe zalloc and zfree functions  Default is to
        use libc's calloc/free which are thread-safe.</td></tr>
    </table>
</section>
</manualpage>
