X-Recipient: archive-cygwin@delorie.com
X-SWARE-Spam-Status: No, hits=-5.3 required=5.0	tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE
X-Spam-Check-By: sourceware.org
MIME-Version: 1.0
In-Reply-To: <20120713142626.GO3406@calimero.vinschen.de>
References: <4FF8759A.10400@gmail.com>	<4FF88907.5060100@dancol.org>	<CAHiT=DFvbMBSor+3cGQzpKE19YUHWH2uErkfGxcVOOAOt_J2sQ@mail.gmail.com>	<4FFB4C82.7050702@dancol.org>	<4FFBB6B3.2090705@dancol.org>	<20120710081318.GB3051@calimero.vinschen.de>	<4FFC4D3C.2010004@dancol.org>	<4FFF9A81.90403@dancol.org>	<20120713074009.GC26268@calimero.vinschen.de>	<CAHiT=DHCuOY0BuawAbZCgGw7qwY4hRdF4Ur_LoiZ1w02qMtBjQ@mail.gmail.com>	<20120713142626.GO3406@calimero.vinschen.de>
Date: Fri, 13 Jul 2012 11:30:23 -0500
Message-ID: <CAHiT=DFpN3RMcH7RkQckcNk0qN9e-iuuZyk9n8d9y4m4agBAgQ@mail.gmail.com>
Subject: Re: clisp crashes on startup
From: Reini Urban <rurban@x-ray.at>
To: cygwin@cygwin.com
Content-Type: text/plain; charset=ISO-8859-1
X-IsSubscribed: yes
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
Precedence: bulk
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie.com@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 Fri, Jul 13, 2012 at 9:26 AM, Corinna Vinschen wrote:
> On Jul 13 07:52, Reini Urban wrote:
>> On Fri, Jul 13, 2012 at 2:40 AM, Corinna Vinschen wrote:
>> > On Jul 12 20:48, Daniel Colascione wrote:
>> >> On 7/10/12 8:41 AM, Daniel Colascione wrote:
>> >> > On 7/10/12 1:13 AM, Corinna Vinschen wrote:
>> >> >> On Jul  9 21:59, Daniel Colascione wrote:
>> >> >>> On 7/9/12 2:26 PM, Daniel Colascione wrote:
>> >> >>>> [snip]
>> >> >>>
>> >> >>> It turns out that clisp crashes only when I've rebased DLLs into the
>> >> >>> high portion of the 4GB WOW64 address space.
>> >> >>
>> >> >> Where did you rebase them to?  You know that on WOW64 and with the
>> >> >> bigaddr flag on, the application heap is located at 0x80000000 by
>> >> >> default, right?  Perhaps some of your DLLs just collide with that?
>> >> >
>> >> > I'm using a starting base address of 0xC8000000; I haven't had
>> >> > problems with any other program.
>> >>
>> >> It turns out that clisp uses bit 31 of each pointer for its gc mark
>> >> bit. No wonder the thing blows in bigaddr-aware mode. clisp _does_
>> >
>> > Ouch.
>> >
>> >> work, however, when compiled with -DWIDE. In this mode, clisp uses two
>> >> words for each lisp value --- one for the pointer and one for the
>> >> metadata.
>>
>> Hmm, I do not really want to maintain lisp32.exe and lisp64.exe
>> variants, but maybe
>> upstream can be persuaded to make that distinction in the clisp.exe driver.
>> It's only for huge data and bad rebase addresses.
>> And for huge data a self-compiled clisp makes sense to me.
>> Serious lisp users use better lisp compilers anyway which compile
>> to native code. (sbcl, lispworks, allegro).
>> clisp's main strength is fast startup and fast IO.
>>
>> >> Also, clisp has a LINUX_NOEXEC_HEAPCODES mode that also
>> >> works, and without bloating memory use, but that requires that no real
>> >> virtual address be in the range [0xC0000000, 0xDFFFFFFF].
>> >
>> > That can't be guaranteed.  WOW64 provides the full 32 bit VM address
>> > space.
>>
>> Maybe also a documentation issue for rebaseing.
>
> That has nothing to do with rebasing.  If you build clisp with a recent
> gcc, it will have the "bigaddr" flag set in the file header since
> Cygwin's gcc sets that by default.  While DLLs should be rebased from
> 0x70000000 downwards as usual, the applications heap, as well as
> thread stacks, as well as shared memory regions created with mmap(2)
> or shmat(2) will be in the high memory area starting at 0x80000000.
>
> THe bottom line is, if the distro clisp isn't 32 bit clean, which it
> apparently isn't using default settings, it should either be rebuilt
> with -DWIDE, or it should have the bigaddr flag removed from the
> file header by default (peflags -l0).

Thanks. This deserves an update now.
-- 
Reini Urban
http://cpanel.net/   http://www.perl-compiler.org/

--
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

