I tried importing this change in editfns.c but it doesn't change anything.

If I run only temacs.exe without any arguments, I get a very quick backtrace:

C:\>"C:\Source\XEmTeX\emacs\emacs-24.3\src/obj-spd/AMD64/temacs.exe"
Loading loadup.el (source)...
Invalid function: "DEAD"

> temacs.exe!eval_sub(__int64 form) Line 2195 C
  temacs.exe!readevalloop(__int64 readcharfun, _iobuf * stream, __int64 sourcename, char printflag, __int64 unibyte, __int64 readfun, __int64 start, __int64 end) Line 1845 C
  temacs.exe!Fload(__int64 file, __int64 noerror, __int64 nomessage, __int64 nosuffix, __int64 must_suffix) Line 1326 C
  temacs.exe!eval_sub(__int64 form) Line 2161 C
  temacs.exe!Feval(__int64 form, __int64 lexical) Line 2006 C
  temacs.exe!internal_condition_case(__int64 (void) * bfun, __int64 handlers, __int64 (__int64) * hfun) Line 1290 C
  temacs.exe!top_level_1(__int64 ignore) Line 1190 C
  temacs.exe!internal_catch(__int64 tag, __int64 (__int64) * func, __int64 arg) Line 1060 C
  temacs.exe!command_loop() Line 1147 C
  temacs.exe!recursive_edit_1() Line 780 C
  temacs.exe!Frecursive_edit() Line 844 C
  temacs.exe!main(int argc, char * * argv) Line 1528 C

I put a breakpoint in xsignal1() to get this backtrace. So it seems that eval() is unable to process any kind of function.

Fabrice




2013/3/14 Eli Zaretskii <eliz@gnu.org>
> From: Fabrice Popineau <fabrice.popineau@gmail.com>
> Date: Thu, 14 Mar 2013 16:13:09 +0100
> Cc: 李丁 <iamliding@gmail.com>, 13939 <13939@debbugs.gnu.org>
>
> I can confirm that with GC_MARK_STACK=0, 24.3 does compile with the MS
> compiler.
> With GC_MARK_STACK=1, 24.3 doesn't compile, but the current trunk (well, my
> copy, but which is quite close) does compile, 32bits and 64bits.

Can you copy to 24.3 the changes made on trunk (in
editfns.c:set_time_zone_rule) to use putenv and unsetenv instead of
reallocating entries in 'environ', and see if that solves the problem
in 24.3?  In addition to the changes in editfns.c, you will also need
sys_putenv and unsetenv on w32.c.

TIA