From owner-freebsd-current@FreeBSD.ORG Mon Jun 5 17:01:12 2006 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C5CE216B30D for ; Mon, 5 Jun 2006 17:01:12 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.ntplx.net (mail.ntplx.net [204.213.176.10]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3051B43D6D for ; Mon, 5 Jun 2006 17:01:12 +0000 (GMT) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.ntplx.net (8.13.6/8.13.6/NETPLEX) with ESMTP id k55H1BlN007681; Mon, 5 Jun 2006 13:01:11 -0400 (EDT) Date: Mon, 5 Jun 2006 13:01:11 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: John Hay In-Reply-To: <20060605164711.GA8065@zibbi.meraka.csir.co.za> Message-ID: References: <20060604075414.GA47483@zibbi.meraka.csir.co.za> <20060604082335.GB76919@over-yonder.net> <20060604153210.GA60476@zibbi.meraka.csir.co.za> <20060604174315.GA64158@zibbi.meraka.csir.co.za> <20060604191000.GA67836@zibbi.meraka.csir.co.za> <20060605164711.GA8065@zibbi.meraka.csir.co.za> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.ntplx.net) Cc: current@freebsd.org Subject: Re: libpthread.so.2 compatibility X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2006 17:01:24 -0000 On Mon, 5 Jun 2006, John Hay wrote: >> >> How old was your system when you upgraded to -current? There >> were changes to malloc() in libc.so.6 which have been in -current >> for a while, and libpthread is dependent on some internal locks >> in libc. If you are using a libc.so.6 before jasone's malloc() >> changes and a newer libpthread, then that won't work. When you >> recompile, your binaries will be linked to libc.so.7, and >> libpthread.so.2 will find the correct locks. If you don't >> find the following: >> >> $ readelf -s /lib/libc.so.6 | grep _malloc >> 275: 0005f65c 139 FUNC GLOBAL DEFAULT 8 _malloc_postfork >> 299: 000e96d0 4 OBJECT GLOBAL DEFAULT 19 _malloc_options >> 870: 0005f5d0 139 FUNC GLOBAL DEFAULT 8 _malloc_prefork >> 2486: 000d1fd8 4 OBJECT GLOBAL DEFAULT 11 _malloc_message >> >> _malloc_postfork and _malloc_prefork in libc.so.6, then that is >> probably why libpthread is failing. > > The libc.so.6 I copied from the -stable box does not have it: > > # readelf -s /lib/libc.so.6 | grep _malloc > 281: 000d78b4 4 OBJECT GLOBAL DEFAULT 18 _malloc_options > 1705: 000c0e30 4 OBJECT GLOBAL DEFAULT 11 __malloc_lock > 2351: 000c0e2c 4 OBJECT GLOBAL DEFAULT 11 _malloc_message > > But the one from the -current box has it: > > # readelf -s /lib/libc.so.6.old | grep _malloc > 274: 0005fcd4 113 FUNC GLOBAL DEFAULT 8 _malloc_postfork > 297: 000e25d4 4 OBJECT GLOBAL DEFAULT 19 _malloc_options > 852: 0005fc60 113 FUNC GLOBAL DEFAULT 8 _malloc_prefork > 2424: 000cae38 4 OBJECT GLOBAL DEFAULT 11 _malloc_message > > Does it work for you? Can you take a 6-stable libpthread app and run > it on current? No, you can't make a 6-stable libpthread and have it work on -current. Both libc and libpthread have to match. There were also other changes in libc that libpthread relies on (__thr_jtable changed in size). When you upgraded to -current, you got a different libpthread that is reliant on -current's libc. But since libc's version was bumped, you never got a -current libc.so.6 that was compatible with libpthread. The only way to get around this is to go back a couple of weeks to before the resolver changes and libc bump were committed -- rebuild libc.so.6 from those older sources. -- DE