On Thu, 2 Nov 2006, Daniel Eischen wrote: > On Thu, 2 Nov 2006, Alexander Kabaev wrote: > >> On Thu, 2 Nov 2006 08:07:03 -0500 (EST) >> Wesley Morgan <morganw_at_chemikals.org> wrote: >> >> >>> I encountered (and reported) weird problems with threaded apps when >>> symbol versioning was enabled. The new csup would fail in areas it >>> shouldn't have failed and gdb made it look like some weird stuff was >>> happening concurrently. Turning off symbol versioning solved the >>> problem. >>> >>> >> Could you please report it again? Searching for your name in my inbox >> returns nothing. Your mail either never reached it or you sent the >> report elsewhere and it escaped my attention. > > If you are using libthr or libc_r with symbol versioning, then > I don't think it will work correctly without rebuilding world > and all ports. As an interim solution for testing symbol versioning > without require rebuilding everything under the sun, I added > compatability hacks for symbols in libc that also exist in > libpthread. See lines 62-95 in src/lib/libpthread/thr/thr_private.h. > This hack should be disabled and removed after bumping shared > libraries and enabling symbol versioning. My original report was here: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=353076+0+archive/2006/freebsd-current/20060806.freebsd-current 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. Switching to a UP kernel did not resolve the issue, but going back to non-versioned libraries did. That was a real PITA to do without rebooting, too! -- This .signature sanitized for your protectionReceived on Thu Nov 02 2006 - 17:19:31 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:02 UTC