From owner-freebsd-python@FreeBSD.ORG Tue Dec 9 20:05:50 2008 Return-Path: Delivered-To: freebsd-python@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59D371065670 for ; Tue, 9 Dec 2008 20:05:50 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from mail.tcbug.org (mail.tcbug.org [216.243.150.78]) by mx1.freebsd.org (Postfix) with ESMTP id 3C6C88FC18 for ; Tue, 9 Dec 2008 20:05:50 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from roadrash.tcbug.org (c-24-131-140-175.hsd1.ma.comcast.net [24.131.140.175]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.tcbug.org (Postfix) with ESMTPSA id 6F0DA169E4D7 for ; Tue, 9 Dec 2008 13:45:58 -0600 (CST) Message-ID: <493ECB1E.2050709@FreeBSD.org> Date: Tue, 09 Dec 2008 13:46:38 -0600 From: Josh Paetzel User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: freebsd-python@freebsd.org X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: A FreeBSD specific patch to python 2.5.2 X-BeenThere: freebsd-python@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD-specific Python issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Dec 2008 20:05:50 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I work in a fairly python-centric environment, we use FreeBSD for all of our production machines. Recently we have started using the following patch to python 2.5.2 in production, and it's solved some issues we've had with regards to python, FreeBSD, threads, and signals. I've been contemplating whether it should be included in the FreeBSD port tree or not, and if it's included whether it should be optional, so on and so forth. Here's the patch - --- Python/thread_pthread.h.orig 2006-06-13 15:04:24.000000000 +0000 +++ Python/thread_pthread.h 2008-11-11 07:20:33.000000000 +0000 @@ -149,6 +149,7 @@ { pthread_t th; int status; + sigset_t set, oset; #if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) pthread_attr_t attrs; #endif @@ -178,6 +179,8 @@ pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM); #endif + sigfillset(&set); + SET_THREAD_SIGMASK(SIG_BLOCK, &set, &oset); status = pthread_create(&th, #if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) &attrs, @@ -187,7 +190,7 @@ (void* (*)(void *))func, (void *)arg ); - - + SET_THREAD_SIGMASK(SIG_SETMASK, &oset, NULL); #if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) pthread_attr_destroy(&attrs); #endif Comments welcome. - -- Thanks, Josh Paetzel PGP: 8A48 EF36 5E9F 4EDA 5ABC 11B4 26F9 01F1 27AF AECB -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (Darwin) iEYEARECAAYFAkk+yx4ACgkQJvkB8SevrssKOwCePaopeUdg6HJCnAZ5u67EfLAN 7XwAnjew2HxCvCmHHjrKrdXGTLSx2GmH =OLJc -----END PGP SIGNATURE-----