Subject: Re: bug#13939: 24.3; Emacs 24.3 release won't compile on Windows with the msvc toolchain

From: Fabrice Popineau <[email-masked]>
Date: Thu, 14 Mar 2013 08:45:38 +0100

Hi,

Eli: in what ways 24.3 differs from the current trunk ?
Well, I can browse the diffs but you may have an insight of what's going
wrong.

At first, I thought about the thing we fixed with TZ. But it does not seem
to be the problem.
Albeit this maybe a source of a potential crash. The fix is needed for
windows, given
the way environment is handled (if I remember correctly).
At this moment,  I can compile the current trunk and bootstrap it. But not
24.3 .

Fabrice

2013/3/14 李丁 <[email-masked]>

> Sorry about that.  I guess no one tried to build Emacs with MSVC
>> during the entire pretest period.  Perhaps in the future you could do
>> that, so that any such problems could be fixed in time.
>
>
> I'd like to.
>
>  Or maybe it should say
>>   !if $(USE_CRT_DLL)
>> instead?
>
>
> Yes, seems more appropriate.
>
>  Not only MinGW, but I believe Fabrice (CC'ed) also builds Emacs with
>> MSVC and uses GC_MARK_STACK.
>
>
> Maybe the the bug is introduced after Emacs 24.2, which can be built and
> dumped with GC_MARK_STACK.
>
> Regarding the GC_MARK_STACK, I want to provide a little more information:
> the error occurred after the first Fgarbage_collect while loading
> loadup.el, and some important functions are not marked and thus garbage
> collected. As in alloc.c the `car' of a cons is set to `Vdead' when freed,
> I suppose this is where the "DEAD" comes from.
>
>
> 2013/3/14 Eli Zaretskii <[email-masked]>
>
>> > Date: Wed, 13 Mar 2013 06:47:56 +0800
>> > From: 李丁 <[email-masked]>
>> >
>> > The latest 24.3 release won't compile on Windows with Visual C++ 2010
>> sp1
>> > compiler (comes with windows sdk 7.1). There are two problems:
>>
>> Sorry about that.  I guess no one tried to build Emacs with MSVC
>> during the entire pretest period.  Perhaps in the future you could do
>> that, so that any such problems could be fixed in time.
>>
>> > 1. nmake.defs has a syntax error on line 119: `!if' should be `!ifdef'
>>
>> Or maybe it should say
>>
>>   !if $(USE_CRT_DLL)
>>
>> instead?
>>
>> > 2. GC_MARK_STACK is 1 by default in config.nt, but this default is
>> broken
>> > with the msvc toolchain.  When temacs started to dump,
>> > it immediately exited with the message `Invalid function: "DEAD"'. Eli
>> had
>> > previously told me (in #12878) to see bug #13070, but it didn't solve
>> the
>> > problem. When I tried to change GC_MARK_STACK to 0, Emacs compiled
>> fine. So
>> > there must be something wrong about the GCPROS_NOOPS way of marking
>> stack
>> > under the vc compiler, maybe someone familiar with the garbage collector
>> > can fix it. (MinGW gcc is ok with the default)
>>
>> Not only MinGW, but I believe Fabrice (CC'ed) also builds Emacs with
>> MSVC and uses GC_MARK_STACK.  Fabrice, can you please comment on this?
>>
>
>