realpath() is not thread-safe
Justin Lundy <[email protected]> Sat, 15 Jan 2005 02:15:19 -0500
| Newsgroups | gmane.os.netbsd.devel.smp |
|---|---|
| Organization | Subterrain |
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --Boundary_(ID_3JhKo7h1gvvyzeBJ32P/Jg) Content-type: text/plain; charset=ISO-8859-1; format=flowed Content-transfer-encoding: 7BIT I uncovered some strange behavior on a NetBSD 2.0/i386 SMP machine and asked the guys on the mysql-general list to explain it. Here is what they said. To quote Dan Nelson: "On FreeBSD, this was due to realpath not being thread-safe. It called chdir() internally and didn't prevent other threads from calling chdir() or getcwd() at the same time. NetBSD's realpath looks almost identical to the old FreeBSD code, so it should be easy to fix by just merging the fix from FreeBSD. http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/gen/getcwd.c http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/realpath.c The FreeBSD fix is in rev 1.14." This occurs regularly on a mysql server which is handling a paltry 10 mysql connections/sec and 150 mysql queries/sec. I have not seen this behavior when I boot the machine with the non SMP kernel. Has anyone scoped out adapting FreeBSD's thread-safe realpath() into NetBSD or shall I take a stab at it? Regards, -JBL --Boundary_(ID_3JhKo7h1gvvyzeBJ32P/Jg) Content-type: text/x-vcard; charset=utf-8; name=jbl.vcf Content-transfer-encoding: 7BIT Content-disposition: attachment; filename=jbl.vcf begin:vcard fn:Justin Lundy n:Lundy;Justin email;internet:[email protected] version:2.1 end:vcard --Boundary_(ID_3JhKo7h1gvvyzeBJ32P/Jg)--