|
From: | Fabrice Popineau |
Subject: | Re: Windows 9X crash (was: [PATCH] Override Windows default Win-* key combinations when using Emacs) |
Date: | Fri, 15 Jan 2016 10:47:51 +0100 |
(Adding Fabrice, who wrote the new allocator code, to the discussion.)
> Cc: address@hidden
> From: Jussi Lahdenniemi <address@hidden>
> Date: Fri, 15 Jan 2016 09:52:38 +0200
>
> On 15.1.2016 8.56, Jussi Lahdenniemi wrote:
> >> The first thing I'd like to know is what buffer is
> >> that (I'm guessing *scratch* or *Messages*), and what is the value of
> >> 'a' in this call frame:
> >
> > the value of the name variable in the Fget_buffer_create function is "
> > *load*", and a in frame #4 is 0x02a22101.
>
> Ah, of course; when allocating 'b' in Fget_buffer_create, Emacs got the
> pointer 0x...fc, which is NOT aligned at an 8-byte boundary as required
> by USE_LSB_TAG. This messes up the tags and causes the crash.
>
> So, apparently, on Windows 98 HeapAlloc does not guarantee 8-byte
> alignment of memory. Not that this would be documented anywhere...
Right, this can explain everything. It probably means that a build
configured --with-wide-int should also be tested there, as it has
different alignment needs.
> How should we fix this? I can write and test the fix, but I'd like to
> hear your opinion on the preferred mechanism.
What fix did you have in mind? Over-allocating and recording the
offset in the initial part of the block that we don't pass to the
application?
[Prev in Thread] | Current Thread | [Next in Thread] |