Subject: bug#18591: 24.4.50; bootstrap-emacs crashes when trying to bytecompile tibetan.el

From: Vincent Belaïche <[email-masked]>
Date: Wed, 01 Oct 2014 21:58:38 +0200

Dear Eli,

FYI, I have rebuilt with replacing c:/ pathes by /c/ pathes, and the
make went to the end --- however, like for you it crashes when launched
interactively, here is a log.

-----------------------------------------------------------------------
/c/Programme/GNU/installation/emacs-install>gdb c:/Programme/GNU/Emacs/bin/emacs.exe
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from c:\Programme\GNU\Emacs\bin\emacs.exe...done.
(gdb) run  -f batch-byte-compile emacs/trunk/lisp/language/tibetan.el
Starting program: c:\Programme\GNU\Emacs\bin\emacs.exe -f batch-byte-compile emacs/trunk/lisp/language/tibetan.el
[New Thread 89876.0x15f10]
[New Thread 89876.0x15374]
[New Thread 89876.0x148d8]
gdb: unknown target exception 0xc0000029 at 0x7c9602cc

Program received signal ?, Unknown signal.
[Switching to Thread 89876.0x148d8]
0x7c9602cc in ntdll!RtlQueryTimeZoneInformation ()
   from C:\WINDOWS\system32\ntdll.dll
(gdb) bt full
#0  0x7c9602cc in ntdll!RtlQueryTimeZoneInformation ()
   from C:\WINDOWS\system32\ntdll.dll
No symbol table info available.
#1  0x77c05464 in msvcrt!_global_unwind2 ()
   from C:\WINDOWS\system32\msvcrt.dll
No symbol table info available.
#2  0x77c06d8c in msvcrt!longjmp () from C:\WINDOWS\system32\msvcrt.dll
No symbol table info available.
#3  0x0083ffe0 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) quit
A debugging session is active.

	Inferior 1 [process 89876] will be killed.

Quit anyway? (y or n) [answered Y; input not from terminal]
/c/Programme/GNU/installation/emacs-install>exit

Process shell<2> finished
-----------------------------------------------------------------------

Just to double check I am reverting to c:/ and rebuild again. In the
unknown exception I had seen something related to TimeZone requesting
from the OS, I would like to be sure that the crash is not time
dependent by testing again.

I'll let you know next time if the patch solves it for me too.

   Vincent.

----------------------------------------
> Date: Tue, 30 Sep 2014 18:58:46 +0300
> From: [email-masked]
> Subject: Re: bug#18591: 24.4.50; bootstrap-emacs crashes when trying to bytecompile tibetan.el
> To: [email-masked]
> CC: [email-masked]
>
> > Date: Tue, 30 Sep 2014 18:52:19 +0300
> > From: Eli Zaretskii <[email-masked]>
> > Cc: [email-masked]
> >
> > > From: Vincent Belaïche <[email-masked]>
> > > Date: Tue, 30 Sep 2014 17:11:57 +0200
> > > Cc: Vincent Belaïche <[email-masked]>
> > >
> > > I am trying to build the latest (bzr update this morning) Emacs and it
> > > fails when compiling language/tibetan.el with src/bootstrap-emacs.exe,
> > > and what happens is a CRASH.
> >
> > Not reproducible here. I've just bootstrapped the latest trunk with
> > no problems at all.
>
> I take it back. Emacs did bootstrap cleanly, but when I start it
> interactively, I get the same exception 0xc0000029.
>
> But this is the same problem reported by Martin earlier today, and
> already fixed on the emacs-24 branch. Apply the patch below and
> rebuild.
>
> I'm not sure this will solve the bootstrap problem, though: that could
> well be a separate issue, because I don't think the problem solved by
> the patch below could happen in non-interactive invocations of Emacs,
> which are the only kind used during the bootstrap. So after you apply
> the patch, maybe try "make bootstrap" again, and see if it works this
> time.
>
>
> --- src/w32fns.c 2014-07-12 09:25:29 +0000
> +++ src/w32fns.c 2014-09-30 13:53:24 +0000
> @@ -1911,13 +1911,12 @@ w32_createscrollbar (struct frame *f, st
> }
>
> static void
> -w32_createwindow (struct frame *f)
> +w32_createwindow (struct frame *f, int *coords)
> {
> HWND hwnd;
> RECT rect;
> - Lisp_Object top = Qunbound;
> - Lisp_Object left = Qunbound;
> - struct w32_display_info *dpyinfo = &one_w32_display_info;
> + int top;
> + int left;
>
> rect.left = rect.top = 0;
> rect.right = FRAME_PIXEL_WIDTH (f);
> @@ -1932,25 +1931,21 @@ w32_createwindow (struct frame *f)
>
> if (f->size_hint_flags & USPosition || f->size_hint_flags & PPosition)
> {
> - XSETINT (left, f->left_pos);
> - XSETINT (top, f->top_pos);
> + left = f->left_pos;
> + top = f->top_pos;
> }
> - else if (EQ (left, Qunbound) && EQ (top, Qunbound))
> + else
> {
> - /* When called with RES_TYPE_NUMBER, w32_get_arg will return zero
> - for anything that is not a number and is not Qunbound. */
> - left = x_get_arg (dpyinfo, Qnil, Qleft, "left", "Left", RES_TYPE_NUMBER);
> - top = x_get_arg (dpyinfo, Qnil, Qtop, "top", "Top", RES_TYPE_NUMBER);
> + left = coords[0];
> + top = coords[1];
> }
>
> FRAME_W32_WINDOW (f) = hwnd
> = CreateWindow (EMACS_CLASS,
> f->namebuf,
> f->output_data.w32->dwStyle | WS_CLIPCHILDREN,
> - EQ (left, Qunbound) ? CW_USEDEFAULT : XINT (left),
> - EQ (top, Qunbound) ? CW_USEDEFAULT : XINT (top),
> - rect.right - rect.left,
> - rect.bottom - rect.top,
> + left, top,
> + rect.right - rect.left, rect.bottom - rect.top,
> NULL,
> NULL,
> hinst,
> @@ -2468,7 +2463,8 @@ w32_msg_pump (deferred_msg * msg_buf)
> the patch for XP is not publicly available until XP SP3,
> and older versions will never be patched. */
> CoInitialize (NULL);
> - w32_createwindow ((struct frame *) msg.wParam);
> + w32_createwindow ((struct frame *) msg.wParam,
> + (int *) msg.lParam);
> if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
> emacs_abort ();
> break;
> @@ -4069,8 +4065,25 @@ static void
> my_create_window (struct frame * f)
> {
> MSG msg;
> + static int coords[2];
> + Lisp_Object left, top;
> + struct w32_display_info *dpyinfo = &one_w32_display_info;
> +
> + /* When called with RES_TYPE_NUMBER, x_get_arg will return zero for
> + anything that is not a number and is not Qunbound. */
> + left = x_get_arg (dpyinfo, Qnil, Qleft, "left", "Left", RES_TYPE_NUMBER);
> + top = x_get_arg (dpyinfo, Qnil, Qtop, "top", "Top", RES_TYPE_NUMBER);
> + if (EQ (left, Qunbound))
> + coords[0] = CW_USEDEFAULT;
> + else
> + coords[0] = XINT (left);
> + if (EQ (top, Qunbound))
> + coords[1] = CW_USEDEFAULT;
> + else
> + coords[1] = XINT (top);
>
> - if (!PostThreadMessage (dwWindowsThreadId, WM_EMACS_CREATEWINDOW, (WPARAM)f, 0))
> + if (!PostThreadMessage (dwWindowsThreadId, WM_EMACS_CREATEWINDOW,
> + (WPARAM)f, (LPARAM)coords))
> emacs_abort ();
> GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
> }
>
>
>