unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: David Ponce <david@dponce.com>
Subject: NT Emacs crashes when selecting a menubar item
Date: Wed, 24 Jul 2002 20:55:45 +0200	[thread overview]
Message-ID: <3D3EF831.3040008@dponce.com> (raw)

Hi All,

Sometimes when I select an item on the menu bar Emacs crashes because
it try to access a bad memory location.  Sometimes also this even
crashes Windows NT because of a page fault!

I managed to get a backtrace (see at end) using Dr. Mingw, a
Just-In-Time debugger.  It shows that the problem occurs in the
function `free_menubar_widget_value_tree' which try to free a
corrupted `widget_value' data structure.  Would it be possible that
the GC corrupted it?  Unfortunately, I don't know enough the Emacs
internals to give more useful informations :-(

What I can say is that the problem seems to occur when I use complex
imenu indexes (generated by Semantic).  Also sometimes I noticed that
I got garbaged imenu item names.

Hope this will help.
David

In GNU Emacs 21.3.50.1 (i386-mingw-nt4.0.1381)
 of 2002-07-24 on EBAT311
configured using `configure --with-gcc (2.95)'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENU
  locale-coding-system: iso-latin-1
  default-enable-multibyte-characters: t

------------- Dr. Mingw backtrace
emacs.exe caused an Access Violation at location 01110446 in module
emacs.exe Reading from location 63746189.

Registers:
eax=6374616d ebx=6374616d ecx=0082ffe0 edx=0fe8007a esi=00000020 
edi=11555c04
eip=01110446 esp=0082f3e8 ebp=0082f400 iopl=0         nv up ei pl nz na 
pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             
efl=00000202

Call stack:
01110446  emacs.exe:01110446  free_menubar_widget_value_tree  w32menu.c:1081
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = ,
        char * value = ,
        char * key = ,
        int help = ,
        Boolean enabled = ,
        Boolean selected = ,
        enum button_type button_type = ,
        Boolean title = ,
        struct _widget_value * contents = ,
        XtPointer call_data = ,
        struct _widget_value * next =
    }
)
    ...
      wv->name = wv->value = wv->key = (char *) 0xDEADBEEF;
   
 >      if (wv->contents && (wv->contents != (widget_value*)1))
        {
          free_menubar_widget_value_tree (wv->contents);
    ...

0111046B  emacs.exe:0111046B  free_menubar_widget_value_tree  w32menu.c:1084
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 875524,
        Boolean enabled = 'H',
        Boolean selected = 'i',
        enum button_type button_type = 1751607660,
        Boolean title = 't',
        struct _widget_value * contents = 0x6374616d,
        XtPointer call_data = 0x20646568,
        struct _widget_value * next = 0x746e7953
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->contents);
 >          wv->contents = (widget_value *) 0xDEADBEEF;
        }
      if (wv->next)
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x0000049d,
        struct _widget_value * next = 0x008381f8
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x00000000,
        struct _widget_value * next = 0x0083b660
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x00000468,
        struct _widget_value * next = 0x00838020
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x00000453,
        struct _widget_value * next = 0x0083c4a0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x0000043e,
        struct _widget_value * next = 0x00839030
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x000003f1,
        struct _widget_value * next = 0x0083c1b0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

0111046B  emacs.exe:0111046B  free_menubar_widget_value_tree  w32menu.c:1084
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828210548,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00837fc0,
        XtPointer call_data = 0x000003e5,
        struct _widget_value * next = 0x00000000
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->contents);
 >          wv->contents = (widget_value *) 0xDEADBEEF;
        }
      if (wv->next)
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828210452,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x000003dd,
        struct _widget_value * next = 0x00838eb0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x00000000,
        struct _widget_value * next = 0x0083dfa0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828210308,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x00000378,
        struct _widget_value * next = 0x0083c0f0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x0000030b,
        struct _widget_value * next = 0x00838350
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x00000269,
        struct _widget_value * next = 0x0083bde0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x00000000,
        struct _widget_value * next = 0x0083c680
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828116292,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x00000259,
        struct _widget_value * next = 0x00838260
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828116084,
        Boolean enabled = 0,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x00000251,
        struct _widget_value * next = 0x0083bdb0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828102516,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x000001e4,
        struct _widget_value * next = 0x0083c050
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 824014472,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x000001dc,
        struct _widget_value * next = 0x0083b7e0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 824014552,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x000001d4,
        struct _widget_value * next = 0x00838f10
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 824014640,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x000001cc,
        struct _widget_value * next = 0x0083c1e0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 828101908,
        Boolean enabled = 0,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x00000000,
        XtPointer call_data = 0x000001c4,
        struct _widget_value * next = 0x0083c180
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

0111046B  emacs.exe:0111046B  free_menubar_widget_value_tree  w32menu.c:1084
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x0083c120,
        XtPointer call_data = 0x00000000,
        struct _widget_value * next = 0x0083b8d0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->contents);
 >          wv->contents = (widget_value *) 0xDEADBEEF;
        }
      if (wv->next)
    ...

01110485  emacs.exe:01110485  free_menubar_widget_value_tree  w32menu.c:1089
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0xdeadbeef,
        XtPointer call_data = 0x00000000,
        struct _widget_value * next = 0x00837ed0
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->next);
 >          wv->next = (widget_value *) 0xDEADBEEF;
        }
      BLOCK_INPUT;
    ...

0111046B  emacs.exe:0111046B  free_menubar_widget_value_tree  w32menu.c:1084
void free_menubar_widget_value_tree(
    widget_value * wv = &{
        char * name = 0xdeadbeef,
        char * value = 0xdeadbeef,
        char * key = 0xdeadbeef,
        int help = 290806788,
        Boolean enabled = 1,
        Boolean selected = 0,
        enum button_type button_type = BUTTON_TYPE_NONE,
        Boolean title = 0,
        struct _widget_value * contents = 0x0083c470,
        XtPointer call_data = 0x00000000,
        struct _widget_value * next = 0x00000000
    }
)
    ...
        {
          free_menubar_widget_value_tree (wv->contents);
 >          wv->contents = (widget_value *) 0xDEADBEEF;
        }
      if (wv->next)
    ...

01110E7B  emacs.exe:01110E7B  set_frame_menubar  w32menu.c:1517
void set_frame_menubar(
    FRAME_PTR f = &{
        int size = 536871998,
        struct Lisp_Vector * next = 0x01ce8300,
        int name = 843753044,
        int icon_name = 290806788,
        int title = 290806788,
        int focus_frame = 290806788,
        int root_window = 1108712448,
        int selected_window = 1108712448,
        int minibuffer_window = 1104072192,
        int param_alist = 1373797428,
        int scroll_bars = 1113417728,
        int condemned_scroll_bars = 290806788,
        int menu_bar_items = 1104009216,
        int face_alist = 1372527148,
        int menu_bar_vector = 1104330752,
        int menu_bar_items_used = 5893,
        int buffer_predicate = 290806788,
        int buffer_list = 1375180340,
        int menu_bar_window = 1104156672,
        int tool_bar_window = 1104163328,
        int tool_bar_items = 290806788,
        int desired_tool_bar_string = 290806788,
        int current_tool_bar_string = 290806788,
        struct face_cache * face_cache = 0x01cea520,
        char * namebuf = 0x01575f68,
        struct glyph_pool * current_pool = 0x00000000,
        struct glyph_pool * desired_pool = 0x00000000,
        struct glyph_matrix * desired_matrix = 0x00000000,
        struct glyph_matrix * current_matrix = 0x00000000,
        unsigned int glyphs_initialized_p,
        int tool_bar_lines = 0,
        int n_tool_bar_items = 0,
        char * decode_mode_spec_buffer = 0x01d05e00,
        int * insert_line_cost = 0x02088900,
        int * delete_line_cost = 0x01e06300,
        int * insert_n_lines_cost = 0x01e06200,
        int * delete_n_lines_cost = 0x01ff0000,
        int height = 35,
        int width = 96,
        int window_width = 100,
        int window_height = 0,
        int new_height = 0,
        int new_width = 0,
        enum output_method output_method = output_w32,
        union output_data output_data = {
            struct x_output * x = 0x01cddb00,
            struct w32_output * w32 = 0x01cddb00,
            struct mac_output * mac = 0x01cddb00,
            int nothing = 30268160
        },
        int menu_bar_lines = 0,
        int external_menu_bar = 1,
        char display_preempted = 0,
        char visible = 1,
        char iconified = 0,
        char async_visible = 1,
        char async_iconified = 0,
        char garbaged = 0,
        char has_minibuffer = 1,
        char wants_modeline = 1,
        char can_have_scroll_bars = 1,
        enum vertical_scroll_bar_type vertical_scroll_bar_type
                  = vertical_scroll_bar_right,
        char auto_raise = 0,
        char auto_lower = 0,
        char no_split = 0,
        char explicit_name = 0,
        char window_sizes_changed = 0,
        char * message_buf = 0x01d05000,
        int scroll_bottom_vpos = -1,
        int scroll_bar_pixel_width = 16,
        int scroll_bar_cols = 2,
        int cost_calculation_baud_rate = 19200,
        char mouse_moved = 1,
        double gamma = 0.000000,
        int extra_line_spacing = 0,
        unsigned int resized_p
    },
    int first_time = 0,
    int deep_p = 1
)
    ...
   
      {
 >        HMENU old_widget = f->output_data.w32->menubar_widget;
   
        f->output_data.w32->menubar_widget = menubar_widget;
    ...

011101DF  emacs.exe:011101DF  x_activate_menubar  w32menu.c:958
void x_activate_menubar(
    FRAME_PTR f = &{
        int size = 536871998,
        struct Lisp_Vector * next = 0x01ce8300,
        int name = 843753044,
        int icon_name = 290806788,
        int title = 290806788,
        int focus_frame = 290806788,
        int root_window = 1108712448,
        int selected_window = 1108712448,
        int minibuffer_window = 1104072192,
        int param_alist = 1373797428,
        int scroll_bars = 1113417728,
        int condemned_scroll_bars = 290806788,
        int menu_bar_items = 1104009216,
        int face_alist = 1372527148,
        int menu_bar_vector = 1104330752,
        int menu_bar_items_used = 5893,
        int buffer_predicate = 290806788,
        int buffer_list = 1375180340,
        int menu_bar_window = 1104156672,
        int tool_bar_window = 1104163328,
        int tool_bar_items = 290806788,
        int desired_tool_bar_string = 290806788,
        int current_tool_bar_string = 290806788,
        struct face_cache * face_cache = 0x01cea520,
        char * namebuf = 0x01575f68,
        struct glyph_pool * current_pool = 0x00000000,
        struct glyph_pool * desired_pool = 0x00000000,
        struct glyph_matrix * desired_matrix = 0x00000000,
        struct glyph_matrix * current_matrix = 0x00000000,
        unsigned int glyphs_initialized_p,
        int tool_bar_lines = 0,
        int n_tool_bar_items = 0,
        char * decode_mode_spec_buffer = 0x01d05e00,
        int * insert_line_cost = 0x02088900,
        int * delete_line_cost = 0x01e06300,
        int * insert_n_lines_cost = 0x01e06200,
        int * delete_n_lines_cost = 0x01ff0000,
        int height = 35,
        int width = 96,
        int window_width = 100,
        int window_height = 0,
        int new_height = 0,
        int new_width = 0,
        enum output_method output_method = output_w32,
        union output_data output_data = {
            struct x_output * x = 0x01cddb00,
            struct w32_output * w32 = 0x01cddb00,
            struct mac_output * mac = 0x01cddb00,
            int nothing = 30268160
        },
        int menu_bar_lines = 0,
        int external_menu_bar = 1,
        char display_preempted = 0,
        char visible = 1,
        char iconified = 0,
        char async_visible = 1,
        char async_iconified = 0,
        char garbaged = 0,
        char has_minibuffer = 1,
        char wants_modeline = 1,
        char can_have_scroll_bars = 1,
        enum vertical_scroll_bar_type vertical_scroll_bar_type
                  = vertical_scroll_bar_right,
        char auto_raise = 0,
        char auto_lower = 0,
        char no_split = 0,
        char explicit_name = 0,
        char window_sizes_changed = 0,
        char * message_buf = 0x01d05000,
        int scroll_bottom_vpos = -1,
        int scroll_bar_pixel_width = 16,
        int scroll_bar_cols = 2,
        int cost_calculation_baud_rate = 19200,
        char mouse_moved = 1,
        double gamma = 0.000000,
        int extra_line_spacing = 0,
        unsigned int resized_p
    }
)
    ...
   
      /* Signal input thread to return from WM_INITMENU.  */
 >      complete_deferred_msg (FRAME_W32_WINDOW (f), WM_INITMENU, 0);
    }
   
    ...

01009761  emacs.exe:01009761  kbd_buffer_get_event  keyboard.c:3783
static int kbd_buffer_get_event(
    KBOARD * * kbp = &0x0125d220,
    int * used_mouse_menu = &0
)
    ...
      input_pending = readable_events (0);
      if (FRAME_LIVE_P (XFRAME (event->frame_or_window)))
 >        x_activate_menubar (XFRAME (event->frame_or_window));
    }
    #endif
    ...

010081C3  emacs.exe:010081C3  read_char  keyboard.c:2638
int read_char(
    int commandflag = 1,
    int nmaps = 11,
    int * maps = &1373421628,
    int prev_event = 290806788,
    int * used_mouse_menu = &0
)
    ...
          restore_getcjmp (local_getcjmp);
          timer_start_idle ();
 >          c = kbd_buffer_get_event (&kb, used_mouse_menu);
          restore_getcjmp (save_jump);
   
    ...

0100EAC9  emacs.exe:0100EAC9  read_key_sequence  keyboard.c:8363
static int read_key_sequence(
    int * keybuf = &299433876,
    int bufsize = 30,
    int prompt = 290806788,
    int dont_downcase_last = 0,
    int can_return_switch_frame = 1,
    int fix_current_buffer = 1
)
    ...
          }
    #endif
 >        key = read_char (NILP (prompt), nmaps,
         (Lisp_Object *) submaps, last_nonmenu_event,
         &used_mouse_menu);
    ...

01006750  emacs.exe:01006750  command_loop_1  keyboard.c:1470
int command_loop_1(
   
)
    ...
   
          /* Read next key sequence; i gets its length.  */
 >          i = read_key_sequence (keybuf, sizeof keybuf / sizeof keybuf[0],
         Qnil, 0, 1, 1);
   
    ...

0101AE4C  emacs.exe:0101AE4C  internal_condition_case  eval.c:1349
int internal_condition_case(
    int ()(void) * bfun = &0x01006454,
    int handlers = 290929124,
    int ()(void) * hfun = &0x01005f64
)
    ...
      handlerlist = &h;
   
 >      val = (*bfun) ();
      catchlist = c.next;
      handlerlist = h.next;
    ...

01006210  emacs.exe:01006210  command_loop_2  keyboard.c:1271
int command_loop_2(
   
)
    ...
   
      do
 >        val = internal_condition_case (command_loop_1, Qerror, cmd_error);
      while (!NILP (val));
   
    ...

0101A9E4  emacs.exe:0101A9E4  internal_catch  eval.c:1109
int internal_catch(
    int tag = 290881452,
    int ()(void) * func = &0x010061f0,
    int arg = 290806788
)
    ...
      /* Call FUNC.  */
      if (! _setjmp (c.jmp))
 >        c.val = (*func) (arg);
   
      /* Throw works by a longjmp that comes right here.  */
    ...

010061C2  emacs.exe:010061C2  command_loop  keyboard.c:1251
int command_loop(
   
)
    ...
    internal_catch (Qtop_level, top_level_1, Qnil);
    internal_catch (Qtop_level, command_loop_2, Qnil);
 >    executing_macro = Qnil;
   
    /* End of file in -batch run causes exit here.  */
    ...

01005D33  emacs.exe:01005D33  recursive_edit_1  keyboard.c:966
int recursive_edit_1(
   
)
    ...
      redisplaying_p = 0;
   
 >      val = command_loop ();
      if (EQ (val, Qt))
        Fsignal (Qquit, Qnil);
    ...

01005E5F  emacs.exe:01005E5F  Frecursive_edit  keyboard.c:1023
int Frecursive_edit(
   
)
    ...
   
      recursive_edit_1 ();
 >      return unbind_to (count, Qnil);
    }
   
    ...

01003298  emacs.exe:01003298  main  emacs.c:1627
int main(
    int argc = 1,
    char * * argv = &0x012584c0,
    char * * envp = &0x43414d45
)
    ...
      Frecursive_edit ();
      /* NOTREACHED */
 >      return 0;
    }
   
    ...

010010EC  emacs.exe:010010EC
01001203  emacs.exe:01001203
010042CD  emacs.exe:010042CD  _start  unexw32.c:135
void _start(
   
)
    ...
      nCmdShow = SW_SHOWDEFAULT;
    #endif
 >      mainCRTStartup ();
    }
   
    ...

77F1BBB5  KERNEL32.dll:77F1BBB5  GetProcessPriorityBoost

             reply	other threads:[~2002-07-24 18:55 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-24 18:55 David Ponce [this message]
2002-07-25 18:07 ` NT Emacs crashes when selecting a menubar item Richard Stallman
2002-07-26 12:30   ` David Ponce
2002-07-27 18:52     ` Richard Stallman
2002-07-28 16:56       ` David Ponce
2002-07-29 17:30         ` Richard Stallman
2002-07-29 18:16           ` David Ponce
2002-07-30 18:46             ` Richard Stallman
  -- strict thread matches above, loose matches on Subject: below --
2002-07-30 11:28 David PONCE
     [not found] <3D2A791A00A0862A@mel-rta9.wanadoo.fr>
2002-07-31 21:57 ` Richard Stallman
2002-07-31 22:37   ` David Ponce
2002-08-01  7:54 jasonr
2002-08-01 11:39 David PONCE

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D3EF831.3040008@dponce.com \
    --to=david@dponce.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).