|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
|[Prev in Thread]||Current Thread||[Next in Thread]|