From owner-freebsd-questions@FreeBSD.ORG Sun Oct 5 20:32:02 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 761CD16A4B3 for ; Sun, 5 Oct 2003 20:32:02 -0700 (PDT) Received: from dan.emsphone.com (dan.emsphone.com [199.67.51.101]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3B10C43F85 for ; Sun, 5 Oct 2003 20:32:01 -0700 (PDT) (envelope-from dan@dan.emsphone.com) Received: (from dan@localhost) by dan.emsphone.com (8.12.9/8.12.9) id h963W0iE037060; Sun, 5 Oct 2003 22:32:00 -0500 (CDT) (envelope-from dan) Date: Sun, 5 Oct 2003 22:32:00 -0500 From: Dan Nelson To: Robert Huff Message-ID: <20031006033200.GL5283@dan.emsphone.com> References: <27DDB356-F790-11D7-9174-003065838A88@mulle-kybernetik.com> <20031006030656.GK5283@dan.emsphone.com> <16256.57227.924291.290786@jerusalem.litteratus.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <16256.57227.924291.290786@jerusalem.litteratus.org> X-OS: FreeBSD 5.1-CURRENT X-message-flag: Outlook Error User-Agent: Mutt/1.5.4i cc: questions@freebsd.org Subject: Re: malloc() behavior (was: Pointer please) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Oct 2003 03:32:02 -0000 In the last episode (Oct 05), Robert Huff said: > Dan Nelson writes: > > Could be one of two problems. The program either malloced memory > > and tried to use it without zeroing it, or it freed some memory > > and tried to keep using it. In -current, the malloc has the J > > debugging flag set, which fills malloced and freed memory with > > 0xd0 (see the malloc manpage). > > On that page (on my 5.1 system), it says malloc() does not zero > allocated pages. Is this a change (possibly just for CURRENT), and > if so since when? Bexause unless I'm delusional (possible) I thought > pages /were/ supposed to be zeroed, and doing so was one of the > system's "as time permits" chores. Pages handed to processes by the kernel are always zeroed, but pages free()d then malloc()ed again are not zeroed by default on -RELEASEs, because they usually aren't returned back to the kernel inbetween (unless H is set, and even then it's not guaranteed). -CURRENT always has the J flag set, which means that any memory returned by malloc or passed to free will get overwritten with 0xD0, to aid debugging. That's not mentioned in the manpage, although I think it is mentioned someplace else (either FAQ or handbook). -- Dan Nelson dnelson@allantgroup.com