Re: libpthread shared library version number

From: Dan Nelson <dnelson_at_allantgroup.com>
Date: Thu, 2 Nov 2006 12:47:33 -0600
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.

-- 
	Dan Nelson
	dnelson_at_allantgroup.com
Received on Thu Nov 02 2006 - 17:47:37 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:02 UTC