From owner-freebsd-threads@FreeBSD.ORG Fri Jan 16 18:02:16 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 5990416A4CE; Fri, 16 Jan 2004 18:02:16 -0800 (PST) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5FC7E43D48; Fri, 16 Jan 2004 18:02:15 -0800 (PST) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.10/8.12.1) with ESMTP id i0H22Eiw021281; Fri, 16 Jan 2004 21:02:14 -0500 (EST) Date: Fri, 16 Jan 2004 21:02:14 -0500 (EST) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: David Xu In-Reply-To: <40088F27.90609@freebsd.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-threads@freebsd.org Subject: Re: MINSIGSTKSZ and PTHREAD_STACK_MIN 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: Sat, 17 Jan 2004 02:02:16 -0000 On Sat, 17 Jan 2004, David Xu wrote: > There is a conflict between MINSIGSTKSZ and PTHREAD_STACK_MIN, > PTHREAD_STACK_MIN defined in pthread.h has a fixed value 1024, > MINSIGSTKSZ is variable on per-architecture, on i386, it is defined in > sys/i386/include/signal.h: > #define MINSIGSTKSZ (512 * 4) > so on i386, makecontext is failed when user specifies PTHREAD_STACK_MIN > for new thread, result is we get following message in libkse: > > Fatal error 'Thread has returned from _thread_switch' at line 1099 in file > /usr/home/davidxu/src/lib/libpthread/thread/thr_kern.c (errno = 0) > > This becauses context is not fully initialized in pthread_create. > > Either makecontext shouldn't check stacksize or we should synchoronize > MINSIGSTKSZ and PTHREAD_STACK_MIN. I think PTHREAD_STACK_MIN should also be per-architecture and be >= MINSIGSTKSZ (otherwise threads wouldn't have enough stack to handle signals). -- Dan Eischen