Date: Thu, 2 Nov 2006 14:10:20 -0500 (EST) From: Wesley Morgan <morganw@chemikals.org> To: Dan Nelson <dnelson@allantgroup.com> Cc: Daniel Eischen <deischen@freebsd.org>, current@freebsd.org Subject: Re: libpthread shared library version number Message-ID: <20061102140344.K90169@volatile.chemikals.org> In-Reply-To: <20061102184733.GJ3839@dan.emsphone.com> References: <454936CA.6060308@FreeBSD.org> <Pine.GSO.4.64.0611011935540.9245@sea.ntplx.net> <20061101200949.2d21ace0@kan.dnsalias.net> <20061102080524.R80586@volatile.chemikals.org> <20061102081122.2c99552f@kan.dnsalias.net> <Pine.GSO.4.64.0611020828130.12236@sea.ntplx.net> <20061102130420.B90169@volatile.chemikals.org> <20061102184733.GJ3839@dan.emsphone.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2 Nov 2006, Dan Nelson wrote:
> In the last episode (Nov 02), Wesley Morgan said:
>> I swapped a few e-mails with Maxime Henrion, but the gist of things
>> was that after enabling symbol versioning, I immediately rebuilt
>> everything -- world, ports, kernel. The random crashes I experienced
>> were most apparent with two applications, csup and games/uqm from
>> ports. Xorg would also crash every now and then... An example of what
>> gdb showed me is:
>>
>> Updating collection ports-all/cvs
>> Checkout ports/devel/ccrtp/Makefile
>> Error set: No such file or directory
>> Updater failed: Cannot create directories leading to
>> "/usr/ports/devel/ccrtp/Makefile": Unknown error: 0
>>
>> Breakpoint 1, mkdirhier (path=0x8c40180 "/usr/ports/devel/ccrtp",
>> mask=18) at misc.c:293
>> 293 errno = 0;
>> (gdb) n
>> 294 if (access(path, F_OK) == 0) {
>> (gdb)
>> 298 perror("Error set");
>> (gdb)
>> Error set: No such file or directory
>> 299 if (errno != ENOENT) {
>> (gdb)
>> 300 path[i] = '/';
>> (gdb) print errno
>> $1 = 0
>> (gdb)
>>
>> It seems that errno is being changed somewhere else?? I'm getting all
>> kinds of wild results checking errno during execution in gdb.
>> Sometimes it claims to be 2 or 22, sometimes 0. I'll have to build a
>> UP kernel and see if that fixes the problem. Trying to use libthr
>> instead of libpthread dies strangely in thr_getscheduler(). Ugh.
>
> That sort of looks like the perror() call zeroed out errno, which it
> may do, since it calls a bunch of stdio functions. Try saving errno in
> another variable before calling perror.
I tried several things in misc.c:mkdirhier() at the time, such as
resetting the value of errno just prior to the call to
access(), artificially setting it, and I'm somewhat sure I
tried that saving it at the time, without success. I can't be completely
sure because I simply switched back to cvsup after a few hours of
fiddling, before ultimately reverting back to non-versioned libraries.
--
This .signature sanitized for your protection
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061102140344.K90169>
