From owner-freebsd-threads@FreeBSD.ORG Tue Aug 5 15:06:45 2003 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 214E437B401 for ; Tue, 5 Aug 2003 15:06:45 -0700 (PDT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7AF9A43F3F for ; Tue, 5 Aug 2003 15:06:44 -0700 (PDT) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.8/8.12.1) with ESMTP id h75M6cnj021214; Tue, 5 Aug 2003 18:06:38 -0400 (EDT) Date: Tue, 5 Aug 2003 18:06:38 -0400 (EDT) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: Marcel Moolenaar In-Reply-To: <20030805214923.GA1633@dhcp01.pn.xcllnt.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: threads@freebsd.org cc: Julian Elischer Subject: Re: Good news: KSE on ia64 is starting to work X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: deischen@freebsd.org List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Aug 2003 22:06:45 -0000 On Tue, 5 Aug 2003, Marcel Moolenaar wrote: > On Tue, Aug 05, 2003 at 02:16:55PM -0700, Julian Elischer wrote: > > > > > BTW: Feel free to commit your patch at your earliest convenience > > > (with or without the change described above). I see a slight > > > regression after applying the patch, but much rather see it > > > committed than having to work with a large patch... > > > > you mean a 'speed' regression? > > A functional regression. There's a bug in _tcb_set() The tcb > argument can be NULL and we unconditionally dereference it. > Hence, kse_sched_multi() now causes segfaults. It did not do > that before :-) Yup, you're right. I think you want something like this: static __inline void _tcb_set(struct kcb *kcb, struct tcb *tcb) { if (tcb == NULL { kcb->kcb_curtcb = &kcb->kcb_faketcb; _tp = &kcb->kcb_faketcb.tcb_tp; } else { kcb->kcb_curtcb = tcb; tcb->tcb_curkcb = kcb; _tp = &tcb->tcb_tp; } } > > Something else is still fishy though: > > itanium% ./kse > Using 5 threads (default) > bar 0 > Segmentation fault (core dumped) > > It should be something like: > > itanium% ./thr > Using 5 threads (default) > bar 1 > bar 2 > bar 3 > bar 0 > bar 4 > > The bar # lines are randomized, so the order does not have to be > the same. But, I'm almost there... Great, let me know what you find. -- Dan Eischen