X-Recipient: archive-cygwin@delorie.com
X-SWARE-Spam-Status: No, hits=-1.7 required=5.0	tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_NEUTRAL
X-Spam-Check-By: sourceware.org
Message-ID: <4E44461F.50201@cornell.edu>
Date: Thu, 11 Aug 2011 17:14:07 -0400
From: Ken Brown <kbrown@cornell.edu>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20110624 Thunderbird/5.0
MIME-Version: 1.0
To: cygwin@cygwin.com
Subject: Re: emacs and large-address awareness under recent snapshots
References: <4E40093D.10107@cornell.edu> <20110808162556.GM11601@calimero.vinschen.de> <87sjpbhij7.fsf@Rainer.invalid> <4E404424.9000600@cornell.edu> <4E40526C.9080605@cornell.edu> <4E406C21.7010007@cs.umass.edu> <20110809082652.GA9492@calimero.vinschen.de> <4E4117AF.3030305@cornell.edu> <4E414054.6040206@cornell.edu> <4E4142F7.8020708@cornell.edu> <20110809152155.GB17030@calimero.vinschen.de> <4E417AB6.5070306@cornell.edu> <4E41EDE9.4040004@cornell.edu> <4E41EF48.1030503@cs.utoronto.ca> <4E429C32.601@cornell.edu>
In-Reply-To: <4E429C32.601@cornell.edu>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-IsSubscribed: yes
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

On 8/10/2011 10:56 AM, Ken Brown wrote:
> On 8/9/2011 10:39 PM, Ryan Johnson wrote:
>> Given that the static heap is only 12MB, with most of that arguably
>> occupied by stuff that isn't going away, what if we did "just ignore the
>> static heap" (mostly)? Anything freed from that regionjust gets dropped
>> on the floor and all new requests are served from the cygwin heap? I
>> assume temacs stays away from the dynamic heap, since otherwise the dump
>> would be corrupted.
>
> I tried forcing malloc to reinitialize itself in emacs.c, and emacs
> crashed almost immediately.  A gdb backtrace showed that the memory got
> corrupted as soon as realloc got called on objects that were originally
> stored in the static heap.  After reinitialization, malloc had no
> knowledge of memory allocation in the static heap.

I think there's an obvious solution to this.  At the time of 
reinitialization, we save the previous malloc state.  Then if realloc is 
called on a pointer to something in the static heap, we temporarily 
restore the old state and let realloc proceed as it did in temacs prior 
to dumping.

Unless I've (again) missed something obvious, it shouldn't be too hard 
to do this.  I'm about to go on vacation, but I should have a new emacs 
release within a couple weeks.

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

