From owner-freebsd-current@FreeBSD.ORG Tue Jul 11 19:02:47 2006 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3629216A4E2 for ; Tue, 11 Jul 2006 19:02:47 +0000 (UTC) (envelope-from michiel@boland.org) Received: from neerbosch.nijmegen.internl.net (neerbosch.nijmegen.internl.net [217.149.193.38]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9E0D843D76 for ; Tue, 11 Jul 2006 19:02:45 +0000 (GMT) (envelope-from michiel@boland.org) Received: from brakkenstein.nijmegen.internl.net by neerbosch.nijmegen.internl.net via brakkenstein.nijmegen.internl.net [217.149.193.41] with ESMTP for id k6BJ2jPA017351 (8.13.4/1.4); Tue, 11 Jul 2006 21:02:45 +0200 (MEST) Received: from localhost by brakkenstein.nijmegen.internl.net via mboland@localhost with ESMTP for id k6BJ2jox016084 (8.13.2/2.02); Tue, 11 Jul 2006 21:02:45 +0200 (MEST) X-Authentication-Warning: brakkenstein.nijmegen.internl.net: mboland owned process doing -bs Date: Tue, 11 Jul 2006 21:02:45 +0200 (MEST) From: Michiel Boland To: freebsd-current@freebsd.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Subject: kdump crashes on illegal signal argument to sigaction X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Jul 2006 19:02:47 -0000 Hi. Consider the following #include int main(void) { sigaction(33, 0, 0); return 0; } If you compile the above, and then do ktrace -tnc ./a.out kdump kdump crashes in signame() because signames[33] points to garbage. A fix would be something like this:- --- mksubr.orig Sat May 20 16:27:22 2006 +++ mksubr Tue Jul 11 20:57:29 2006 @@ -151,7 +151,10 @@ void signame (int sig) { - (void)printf("SIG%s",signames[sig]); + if (sig >= 0 && sig < NSIG) + (void)printf("SIG%s",signames[sig]); + else + (void)printf("SIG %d", sig); } /* MANUAL */ Cheers Michiel