This document describes various features of FreeBSD that will affect how Perl version 5 (hereafter just
Perl) is compiled and/or runs.
FreeBSDcoredumpsfromreaddir_rwithithreads
When perl is configured to use ithreads, it will use re-entrant library calls in preference to non-re-
entrant versions. There is a bug in FreeBSD's "readdir_r" function in versions 4.5 and earlier that can
cause a SEGV when reading large directories. A patch for FreeBSD libc is available (see
<https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=30631>) which has been integrated into FreeBSD 4.6.
$^Xdoesn'talwayscontainafullpathinFreeBSD
perl sets $^X where possible to a full path by asking the operating system. On FreeBSD the full path of
the perl interpreter is found by using "sysctl" with "KERN_PROC_PATHNAME" if that is supported, else by
reading the symlink /proc/curproc/file. FreeBSD 7 and earlier has a bug where either approach sometimes
returns an incorrect value (see <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=35703>). In these
cases perl will fall back to the old behaviour of using C's "argv[0]" value for $^X.