From owner-svn-src-all@FreeBSD.ORG Mon Sep 6 03:00:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F1121065698; Mon, 6 Sep 2010 03:00:54 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5E0E78FC14; Mon, 6 Sep 2010 03:00:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o8630sZd008824; Mon, 6 Sep 2010 03:00:54 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o8630sWI008822; Mon, 6 Sep 2010 03:00:54 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201009060300.o8630sWI008822@svn.freebsd.org> From: David Xu Date: Mon, 6 Sep 2010 03:00:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212245 - head/lib/libthr/thread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Sep 2010 03:00:54 -0000 Author: davidxu Date: Mon Sep 6 03:00:54 2010 New Revision: 212245 URL: http://svn.freebsd.org/changeset/base/212245 Log: Fix off-by-one error in function _thr_sigact_unload, also disable the function, it seems some gnome application tends to crash if we unregister sigaction automatically. Modified: head/lib/libthr/thread/thr_sig.c Modified: head/lib/libthr/thread/thr_sig.c ============================================================================== --- head/lib/libthr/thread/thr_sig.c Sun Sep 5 21:44:50 2010 (r212244) +++ head/lib/libthr/thread/thr_sig.c Mon Sep 6 03:00:54 2010 (r212245) @@ -418,6 +418,7 @@ _thr_signal_init(void) void _thr_sigact_unload(struct dl_phdr_info *phdr_info) { +#if 0 struct pthread *curthread = _get_curthread(); struct urwlock *rwlp; struct sigaction *actp; @@ -426,13 +427,13 @@ _thr_sigact_unload(struct dl_phdr_info * int sig; _thr_signal_block(curthread); - for (sig = 1; sig < _SIG_MAXSIG; sig++) { - actp = &_thr_sigact[sig].sigact; + for (sig = 1; sig <= _SIG_MAXSIG; sig++) { + actp = &_thr_sigact[sig-1].sigact; retry: handler = actp->sa_handler; if (handler != SIG_DFL && handler != SIG_IGN && __elf_phdr_match_addr(phdr_info, handler)) { - rwlp = &_thr_sigact[sig].lock; + rwlp = &_thr_sigact[sig-1].lock; _thr_rwl_wrlock(rwlp); if (handler != actp->sa_handler) { _thr_rwl_unlock(rwlp); @@ -449,6 +450,7 @@ retry: } } _thr_signal_unblock(curthread); +#endif } void