From owner-freebsd-threads@FreeBSD.ORG Thu Sep 16 20:03:29 2004 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 80BEA16A4CE for ; Thu, 16 Sep 2004 20:03:29 +0000 (GMT) Received: from mail.ntplx.net (mail.ntplx.net [204.213.176.10]) by mx1.FreeBSD.org (Postfix) with ESMTP id 16DF443D45 for ; Thu, 16 Sep 2004 20:03:29 +0000 (GMT) (envelope-from eischen@vigrid.com) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) i8GK3SML014336; Thu, 16 Sep 2004 16:03:28 -0400 (EDT) Date: Thu, 16 Sep 2004 16:03:27 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: "Bjoern A. Zeeb" In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.ntplx.net) cc: freebsd-threads@freebsd.org Subject: Re: assert in _lock_acquire ? X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Sep 2004 20:03:29 -0000 On Thu, 16 Sep 2004, Bjoern A. Zeeb wrote: > On Thu, 16 Sep 2004, Daniel Eischen wrote: > > > On Thu, 16 Sep 2004, Bjoern A. Zeeb wrote: > > > > > I am using a global mutex to serialize a longer debugging > > > output amongst threads. As this is only used for internal > > > debugging builds where I really want to see everything > > > I do not care about performance etc. > > > > Where did you introduce the global mutex? In your application > > or in libpthread or libc sources? > > application; initialized from main before any further threads started. > > > > > ------ cut ------- > > > (gdb) bt full > > > #0 _lock_acquire (lck=0x38, lu=0x80da034, prio=56) at /u1/src/src/RELENG_5/compile-20040914-1630/lib/libpthread/sys/lock.c:168 > > > i = 135110708 > > > lval = 672675788 > > > __func__ = "_lock_acquire" > > > #1 0x08076151 in mutex_handoff (curthread=0x80ee000, mutex=0x80d8980) at /u1/src/src/RELENG_5/compile-20040914-1630/lib/libpthread/thread/thr_mutex.c:1586 > > > kmbx = (struct kse_mailbox *) 0x1 > > > > The kse_mailbox has become corrupted. If you are using %gs for anything, > > that could be the cause. %gs is reserved for the threads libraries. > > also lck=0x38 looked odd to me but this my be a result of corrupted > kmbx. > > what is %gs btw ? An i386 segment register. The older NVidia drivers used %gs and thus could not work with libpthread (or libthr). Any messages from the kernel about static LDT allocation are also hints that something is using %gs. I suspect your application is using or calling something that is changing %gs. -- Dan Eischen