From owner-freebsd-hackers@FreeBSD.ORG Fri Jan 16 08:44:30 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1B107106564A; Fri, 16 Jan 2009 08:44:30 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-bw0-f20.google.com (mail-bw0-f20.google.com [209.85.218.20]) by mx1.freebsd.org (Postfix) with ESMTP id 6C4418FC08; Fri, 16 Jan 2009 08:44:29 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: by bwz13 with SMTP id 13so5158414bwz.19 for ; Fri, 16 Jan 2009 00:44:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=hGrcKhFFjIh3K4rcDdNrb8YWRufMl73vZuOz4eomO/E=; b=AvVH3AAhP3tkxAXqhkBnv6OX9ZR/PG5mmDMu9ujwH06Y2BH3bCq5zVHEuMr/imDtXO vflR0kJS5Y66Duth9wbPioPEfr61+fs63WSxz7mDTmjQTNjIo7Bm515aXRs8Us0G3kjb YK8KxvtElwKKxRmQa5uWl7+GcTbNiqkAcat/I= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=fGi1XjJU4A3TUuT795vhTwr6yBFbgAIz3Ci4cjG9piqexfmCZ6DXwYosI+KC1/yerQ nSJZzoG+X4uo7pXyKDq7WdgRONfwIaG7EOM5J8w8KzGBgDU77KQGfdJlXmArXDetHlzQ 7FN8ixzt+w1B+qfttXbSJlKYk0XzsqT4GzuAk= MIME-Version: 1.0 Received: by 10.181.192.10 with SMTP id u10mr758578bkp.185.1232095467960; Fri, 16 Jan 2009 00:44:27 -0800 (PST) In-Reply-To: <7d6fde3d0901160041n55466290l55f737d274a40895@mail.gmail.com> References: <7d6fde3d0901160041n55466290l55f737d274a40895@mail.gmail.com> Date: Fri, 16 Jan 2009 00:44:27 -0800 Message-ID: <7d6fde3d0901160044x4d7735cep16f032cd99dbc835@mail.gmail.com> From: Garrett Cooper To: Hackers freeBSD Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "amd64@freebsd.org" Subject: Re: Confused by segfault with legitimate call to strerror(3) on amd64 / sysctl(3) setting `odd' errno's X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jan 2009 08:44:30 -0000 On Fri, Jan 16, 2009 at 12:41 AM, Garrett Cooper wrote: > Hi amd64 and Hackers, > Uh, I'm really confused why 1) this error (errno => ENOMEM) would > occur when I have more than enough free memory (both on x86 and amd64) > and 2) why strerror would segfault in the call to errx in the attached > sourcefile on amd64 only. Not initializing len causes the second > output sample (errno => 14, which is EFAULT). > Any ideas? > Please CC me if mailing on amd64@ as I'm not subscribed to the list. > Thanks, > -Garrett > > /* Program */ > #include > #include > #include > #include > #include > > int > main() { > > int mib[4]; > > size_t len; > > if (sysctlnametomib("kern.ipc.shmmax", mib, &len) != 0) { > printf("Errno: %d\n", errno); > errx(errno, "Error: %s", strerror(errno)); > } > > printf("%lu\n", len); > > return 0; > > } > > # output for len preset to 0: > [gcooper@optimus ~]$ ./test2 > Errno: 12 > test2: Segmentation fault: 11 (core dumped) > [gcooper@optimus ~]$ uname -a > FreeBSD optimus.gateway.2wire.net 8.0-CURRENT FreeBSD 8.0-CURRENT #4: > Sun Jan 11 12:30:31 PST 2009 > root@optimus.gateway.2wire.net:/usr/obj/usr/src/sys/OPTIMUS amd64 > > [gcooper@orangebox /usr/home/gcooper]$ ./test > Errno: 12 > test: Error: Cannot allocate memory > [gcooper@orangebox /usr/home/gcooper]$ uname -a > FreeBSD orangebox.gateway.2wire.net 8.0-CURRENT FreeBSD 8.0-CURRENT > #4: Sat Jan 3 22:54:52 PST 2009 > gcooper@orangebox.gateway.2wire.net:/usr/obj/usr/src/sys/ORANGEBOX > i386 > > # output for len not preset to 0: > [gcooper@optimus ~]$ ./test2 > Errno: 14 > test2: Segmentation fault: 11 (core dumped) Almost forgot -- here are the actual values reported by sysctl(1), just for reference: [gcooper@optimus ~]$ sysctl kern.ipc.shmall kern.ipc.shmmin kern.ipc.shmmax kern.ipc.shmall: 8192 kern.ipc.shmmin: 1 kern.ipc.shmmax: 33554432 [gcooper@orangebox /usr/src/sys]$ sysctl kern.ipc.shmall kern.ipc.shmmin kern.ipc.shmmax kern.ipc.shmall: 8192 kern.ipc.shmmin: 1 kern.ipc.shmmax: 33554432 Thanks, -Garrett