1<!--$Id: freebsd.so,v 11.18 2003/04/01 17:21:45 bostic Exp $--> 2<!--Copyright (c) 1997,2008 Oracle. All rights reserved.--> 3<!--See the file LICENSE for redistribution information.--> 4<html> 5<head> 6<title>Berkeley DB Reference Guide: FreeBSD</title> 7<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit."> 8<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++"> 9</head> 10<body bgcolor=white> 11<a name="2"><!--meow--></a> 12<table width="100%"><tr valign=top> 13<td><b><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for UNIX/POSIX systems</dl></b></td> 14<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> 15</td></tr></table> 16<p align=center><b>FreeBSD</b></p> 17<ol> 18<p><li><b>I can't compile and run multithreaded applications.</b> 19<p>Special compile-time flags are required when compiling threaded 20applications on FreeBSD. If you are compiling a threaded application, 21you must compile with the _THREAD_SAFE and -pthread flags:</p> 22<blockquote><pre>cc -D_THREAD_SAFE -pthread ...</pre></blockquote> 23<p>The Berkeley DB library will automatically build with the correct options.</p> 24<hr size=1 noshade> 25<p><li><b>I get occasional failures when running RPC-based programs under 26FreeBSD clients.</b> 27<p>There is a known bug in the XDR implementation in the FreeBSD C library 28from version 2.2 up to version 4.0-RELEASE, that causes certain-sized 29messages to fail and return a zero-filled reply to the client. A bug 30report (#16028) has been filed with FreeBSD. The following patch is the 31FreeBSD fix:</p> 32<blockquote><pre>*** /usr/src/lib/libc/xdr/xdr_rec.c.orig Mon Jan 10 10:20:42 2000 33--- /usr/src/lib/libc/xdr/xdr_rec.c Wed Jan 19 10:53:45 2000 34*************** 35*** 558,564 **** 36 * but we don't have any way to be certain that they aren't 37 * what the client actually intended to send us. 38 */ 39! if ((header & (~LAST_FRAG)) == 0) 40 return(FALSE); 41 rstrm->fbtbc = header & (~LAST_FRAG); 42 return (TRUE); 43--- 558,564 ---- 44 * but we don't have any way to be certain that they aren't 45 * what the client actually intended to send us. 46 */ 47! if (header == 0) 48 return(FALSE); 49 rstrm->fbtbc = header & (~LAST_FRAG); 50 return (TRUE); 51</pre></blockquote> 52<hr size=1 noshade> 53<p><li><b>I see fsync and close system call failures when accessing 54databases or log files on NFS-mounted filesystems.</b> 55<p>Some FreeBSD releases are known to return ENOLCK from fsync and close 56calls on NFS-mounted filesystems, even though the call has succeeded. 57The Berkeley DB code should be modified to ignore ENOLCK errors, or no Berkeley DB 58files should be placed on NFS-mounted filesystems on these systems.</p> 59</ol> 60<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> 61</td></tr></table> 62<p><font size=1>Copyright (c) 1996,2008 Oracle. All rights reserved.</font> 63</body> 64</html> 65