From owner-freebsd-current@FreeBSD.ORG Wed Jan 28 12:12:33 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EBB4D1065E8F for ; Wed, 28 Jan 2009 12:12:33 +0000 (UTC) (envelope-from rink@rink.nu) Received: from mx1.rink.nu (gloom.rink.nu [213.34.49.2]) by mx1.freebsd.org (Postfix) with ESMTP id A694E8FC0A for ; Wed, 28 Jan 2009 12:12:33 +0000 (UTC) (envelope-from rink@rink.nu) Received: from localhost (localhost [127.0.0.1]) by mx1.rink.nu (Postfix) with ESMTP id 941DD6D43B; Wed, 28 Jan 2009 13:13:52 +0100 (CET) X-Virus-Scanned: amavisd-new at rink.nu Received: from mx1.rink.nu ([213.34.49.2]) by localhost (gloom.rink.nu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id L8A9vn6EuQXL; Wed, 28 Jan 2009 13:13:49 +0100 (CET) Received: by mx1.rink.nu (Postfix, from userid 1000) id 164116D42B; Wed, 28 Jan 2009 13:13:49 +0100 (CET) Date: Wed, 28 Jan 2009 13:13:49 +0100 From: Rink Springer To: Channa Message-ID: <20090128121349.GJ16902@rink.nu> References: <515c64960901280339m17fa9309v2e1bc3f55454ab@mail.gmail.com> <49804597.6040303@gmx.de> <515c64960901280401w1e1d08bfx29adc124bc749c4a@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <515c64960901280401w1e1d08bfx29adc124bc749c4a@mail.gmail.com> User-Agent: Mutt/1.5.18 (2008-05-17) Cc: Christoph Mallon , freebsd-current@freebsd.org Subject: Re: Jemalloc SEGV for 1MB chunk 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: Wed, 28 Jan 2009 12:12:38 -0000 Hi, On Wed, Jan 28, 2009 at 05:31:43PM +0530, Channa wrote: > size_t size = 1048576 ; > > buf = malloc(size); > for (i = 0; i <= 1048575; i++) > buf[i] = 'a'; > buf[size]='\0'; > printf("The length of buff is : %d\n",strlen(buf)); > free(buf); > return 0; > } > > I NULL terminated the string > buf[size] = '\0' <== The last character is NULL > > But still i get a SEGV at strlen. > > Could you please tell me if my changes above are correct? They are not - because size = 1048576, you will get a buffer of 1048576 bytes, that is, buf[0] ... buf[1048575] = buf[0] .. buf[size - 1]. Thus, you need to do: buf[size - 1] = '\0'; And it'll work. Regards, -- Rink P.W. Springer - http://rink.nu "Chance favours the prepared mind" - Penn