<!--$Id: freebsd.so,v 11.18 2003/04/01 17:21:45 bostic Exp $--> <!--Copyright (c) 1997,2007 Oracle. All rights reserved.--> <!--See the file LICENSE for redistribution information.--> <html> <head> <title>Berkeley DB Reference Guide: FreeBSD</title> <meta name="description" content="Berkeley DB: An embedded database programmatic toolkit."> <meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++"> </head> <body bgcolor=white> <a name="2"><!--meow--></a> <table width="100%"><tr valign=top> <td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for UNIX/POSIX systems</dl></h3></td> <td align=right><a href="../build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/hpux.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> <p> <h3 align=center>FreeBSD</h3> <ol> <p><li><b>I can't compile and run multithreaded applications.</b> <p>Special compile-time flags are required when compiling threaded applications on FreeBSD. If you are compiling a threaded application, you must compile with the _THREAD_SAFE and -pthread flags:</p> <blockquote><pre>cc -D_THREAD_SAFE -pthread ...</pre></blockquote> <p>The Berkeley DB library will automatically build with the correct options.</p> <hr size=1 noshade> <p><li><b>I get occasional failures when running RPC-based programs under FreeBSD clients.</b> <p>There is a known bug in the XDR implementation in the FreeBSD C library from version 2.2 up to version 4.0-RELEASE, that causes certain-sized messages to fail and return a zero-filled reply to the client. A bug report (#16028) has been filed with FreeBSD. The following patch is the FreeBSD fix:</p> <blockquote><pre>*** /usr/src/lib/libc/xdr/xdr_rec.c.orig Mon Jan 10 10:20:42 2000 --- /usr/src/lib/libc/xdr/xdr_rec.c Wed Jan 19 10:53:45 2000 *************** *** 558,564 **** * but we don't have any way to be certain that they aren't * what the client actually intended to send us. */ ! if ((header & (~LAST_FRAG)) == 0) return(FALSE); rstrm->fbtbc = header & (~LAST_FRAG); return (TRUE); --- 558,564 ---- * but we don't have any way to be certain that they aren't * what the client actually intended to send us. */ ! if (header == 0) return(FALSE); rstrm->fbtbc = header & (~LAST_FRAG); return (TRUE); </pre></blockquote> <hr size=1 noshade> <p><li><b>I see fsync and close system call failures when accessing databases or log files on NFS-mounted filesystems.</b> <p>Some FreeBSD releases are known to return ENOLCK from fsync and close calls on NFS-mounted filesystems, even though the call has succeeded. The Berkeley DB code should be modified to ignore ENOLCK errors, or no Berkeley DB files should be placed on NFS-mounted filesystems on these systems.</p> </ol> <table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/hpux.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> <p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font> </body> </html>