bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#6604: 23.2; Crashes in GC on MS-Windows


From: Eli Zaretskii
Subject: bug#6604: 23.2; Crashes in GC on MS-Windows
Date: Sat, 10 Jul 2010 18:52:09 +0300

Emacs 23.2 started crashing on me a few days ago.  So far it crashed
twice in a couple of days.  Both times the crash is inside GC, at the
same place.  I attach one such backtrace below; it is not a GDB
backtrace because I wasn't running under GDB at the time.

I have no built a non-optimized binary and run it under GDB, so I
could debug it when it crashes.  But if someone sees similar crashes,
please post the data.

Here's the backtrace:

emacs.exe caused an Access Violation at location 010682ef in module emacs.exe 
Reading from location ac0003e4.

Registers:
eax=00000150 ebx=ac000150 ecx=0000002a edx=ac000000 esi=0000007c edi=00000001
eip=010682ef esp=0082cb10 ebp=0082cc48 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202

Call stack:
010682EF  emacs.exe:010682EF  Fgarbage_collect  alloc.c:5941

        ...
        int this_free = 0;
        for (i = 0; i < lim; i++)
>         if (!FLOAT_MARKED_P (&fblk->floats[i]))
            {
              this_free++;
        ...

0100C3CB  emacs.exe:0100C3CB  Ffuncall  eval.c:2958

        ...
              ||
              (!NILP (Vmemory_full) && consing_since_gc > 
memory_full_cons_threshold))
>           Fgarbage_collect ();
        
          if (++lisp_eval_depth > max_lisp_eval_depth)
        ...

0100A249  emacs.exe:0100A249  internal_condition_case_2  eval.c:1590

        ...
        
          val = (*bfun) (nargs, args);
>         catchlist = c.next;
          handlerlist = h.next;
          return val;
        ...

01013933  emacs.exe:01013933  safe_call  xdisp.c:2387

        ...
               safe_eval_handler);
              UNGCPRO;
>             val = unbind_to (count, val);
            }
        
        ...

0101396E  emacs.exe:0101396E  safe_call1  xdisp.c:2405

        ...
          args[1] = arg;
          return safe_call (2, args);
>       }
        
        static Lisp_Object Qeval;
        ...

0101398A  emacs.exe:0101398A  safe_eval  xdisp.c:2413

        ...
        {
          return safe_call1 (Qeval, sexpr);
>       }
        
        /* Call function FN with one argument ARG.
        ...

0102A5E1  emacs.exe:0102A5E1  display_mode_element  xdisp.c:17666

        ...
        Lisp_Object spec;
        spec = safe_eval (XCAR (XCDR (elt)));
>       n += display_mode_element (it, depth, field_width - n,
           precision - n, spec, props,
           risky);
        ...

0102A79B  emacs.exe:0102A79B  display_mode_element  xdisp.c:17755

        ...
           props, risky);
        elt = XCDR (elt);
>       len++;
        if ((len & 1) == 0)
          halftail = XCDR (halftail);
        ...

0102A79B  emacs.exe:0102A79B  display_mode_element  xdisp.c:17755

        ...
           props, risky);
        elt = XCDR (elt);
>       len++;
        if ((len & 1) == 0)
          halftail = XCDR (halftail);
        ...

0102B89D  emacs.exe:0102B89D  display_mode_line  xdisp.c:17258

        ...
          record_unwind_save_match_data ();
          display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
>         pop_kboard ();
        
          unbind_to (count, Qnil);
        ...

0102BA94  emacs.exe:0102BA94  display_mode_lines  xdisp.c:17201

        ...
        
              /* Select mode line face based on the real selected window.  */
>             display_mode_line (w, CURRENT_MODE_LINE_FACE_ID_3 (sel_w, sel_w, 
> w),
         current_buffer->mode_line_format);
              ++n;
        ...

0102D059  emacs.exe:0102D059  redisplay_window  xdisp.c:13832

        ...
              /* If mode line height has changed, arrange for a thorough
         immediate redisplay using the correct mode line height.  */
>             if (WINDOW_WANTS_MODELINE_P (w)
          && CURRENT_MODE_LINE_HEIGHT (w) != DESIRED_MODE_LINE_HEIGHT (w))
        {
        ...

0102E937  emacs.exe:0102E937  redisplay_window_0  xdisp.c:12239

        ...
          if (displayed_buffer->display_error_modiff < BUF_MODIFF 
(displayed_buffer))
            redisplay_window (window, 0);
>         return Qnil;
        }
        
        ...

01009ED5  emacs.exe:01009ED5  internal_condition_case_1  eval.c:1539

        ...
        
          val = (*bfun) (arg);
>         catchlist = c.next;
          handlerlist = h.next;
          return val;
        ...

0101E049  emacs.exe:0101E049  redisplay_windows  xdisp.c:12217

        ...
          /* Use list_of_error, not Qerror, so that
             we catch only errors and don't run the debugger.  */
>         internal_condition_case_1 (redisplay_window_0, window,
             list_of_error,
             redisplay_window_error);
        ...

0101E006  emacs.exe:0101E006  redisplay_windows  xdisp.c:12211

        ...
        redisplay_windows (w->hchild);
              else if (!NILP (w->vchild))
>       redisplay_windows (w->vchild);
              else if (!NILP (w->buffer))
        {
        ...

01030678  emacs.exe:01030678  redisplay_internal  xdisp.c:11789

        ...
        
              if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
>       redisplay_windows (FRAME_ROOT_WINDOW (f));
        
              /* The X error handler may have deleted that frame.  */
        ...

01030E68  emacs.exe:01030E68  redisplay_preserve_echo_area  xdisp.c:12038

        ...
              display_last_displayed_message_p = 1;
              redisplay_internal (1);
>             display_last_displayed_message_p = 0;
            }
          else
        ...

0109E9B9  emacs.exe:0109E9B9  Fredisplay  dispnew.c:6684

        ...
            specbind (Qredisplay_dont_pause, Qt);
          redisplay_preserve_echo_area (2);
>         unbind_to (count, Qnil);
          return Qt;
        }
        ...

0100C617  emacs.exe:0100C617  Ffuncall  eval.c:3024

        ...
          goto done;
        case 1:
>         val = (*XSUBR (fun)->function) (internal_args[0]);
          goto done;
        case 2:
        ...

0111E156  emacs.exe:0111E156  Fbyte_code  bytecode.c:680

        ...
              }
        #endif
>           TOP = Ffuncall (op + 1, &TOP);
            AFTER_POTENTIAL_GC ();
            break;
        ...

0100C012  emacs.exe:0100C012  funcall_lambda  eval.c:3216

        ...
            }
        
>         return unbind_to (count, val);
        }
        
        ...

0100C3F6  emacs.exe:0100C3F6  Ffuncall  eval.c:3093

        ...
         done:
          CHECK_CONS_LIST ();
>         lisp_eval_depth--;
          if (backtrace.debug_on_exit)
            val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
        ...

0111E156  emacs.exe:0111E156  Fbyte_code  bytecode.c:680

        ...
              }
        #endif
>           TOP = Ffuncall (op + 1, &TOP);
            AFTER_POTENTIAL_GC ();
            break;
        ...

0100C012  emacs.exe:0100C012  funcall_lambda  eval.c:3216

        ...
            }
        
>         return unbind_to (count, val);
        }
        
        ...

0100C3F6  emacs.exe:0100C3F6  Ffuncall  eval.c:3093

        ...
         done:
          CHECK_CONS_LIST ();
>         lisp_eval_depth--;
          if (backtrace.debug_on_exit)
            val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
        ...

0100CE1D  emacs.exe:0100CE1D  Fapply  eval.c:2504

        ...
          /* By convention, the caller needs to gcpro Ffuncall's args.  */
          RETURN_UNGCPRO (Ffuncall (gcpro1.nvars, funcall_args));
>       }
        
        /* Run hook variables in various ways.  */
        ...

0100C6B4  emacs.exe:0100C6B4  Ffuncall  eval.c:3005

        ...
              if (XSUBR (fun)->max_args == MANY)
        {
>         val = (*XSUBR (fun)->function) (numargs, args + 1);
          goto done;
        }
        ...

0111E156  emacs.exe:0111E156  Fbyte_code  bytecode.c:680

        ...
              }
        #endif
>           TOP = Ffuncall (op + 1, &TOP);
            AFTER_POTENTIAL_GC ();
            break;
        ...

0100BBE5  emacs.exe:0100BBE5  Feval  eval.c:2352

        ...
          goto done;
        case 3:
>         val = (*XSUBR (fun)->function) (argvals[0], argvals[1],
          argvals[2]);
          goto done;
        ...

0100D667  emacs.exe:0100D667  internal_lisp_condition_case  eval.c:1435

        ...
          handlerlist = &h;
        
>         val = Feval (bodyform);
          catchlist = c.next;
          handlerlist = h.next;
        ...

0111E96B  emacs.exe:0111E96B  Fbyte_code  bytecode.c:870

        ...
            body = POP;
            BEFORE_POTENTIAL_GC ();
>           TOP = internal_lisp_condition_case (TOP, body, handlers);
            AFTER_POTENTIAL_GC ();
            break;
        ...

0100C012  emacs.exe:0100C012  funcall_lambda  eval.c:3216

        ...
            }
        
>         return unbind_to (count, val);
        }
        
        ...

0100C3F6  emacs.exe:0100C3F6  Ffuncall  eval.c:3093

        ...
         done:
          CHECK_CONS_LIST ();
>         lisp_eval_depth--;
          if (backtrace.debug_on_exit)
            val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
        ...

0100CA19  emacs.exe:0100CA19  call1  eval.c:2811

        ...
          RETURN_UNGCPRO (Ffuncall (2, &fn));
        #endif /* not NO_ARG_ARRAY */
>       }
        
        /* Call function fn with 2 arguments arg1, arg2 */
        ...

010552BF  emacs.exe:010552BF  timer_check  keyboard.c:4713

        ...
        
              call1 (Qtimer_event_handler, chosen_timer);
>             Vdeactivate_mark = old_deactivate_mark;
              timers_run++;
              unbind_to (count, Qnil);
        ...

010553D8  emacs.exe:010553D8  readable_events  keyboard.c:3698

        ...
        
          if (flags & READABLE_EVENTS_DO_TIMERS_NOW)
>           timer_check (1);
        
          /* If the buffer contains only FOCUS_IN_EVENT events, and
        ...

0105ABDB  emacs.exe:0105ABDB  get_input_pending  keyboard.c:7038

        ...
        {
          /* First of all, have we already counted some input?  */
>         *addr = (!NILP (Vquit_flag) || readable_events (flags));
        
          /* If input is being read as it arrives, and we have none, there is 
none.  */
        ...

0105AC8B  emacs.exe:0105AC8B  detect_input_pending_run_timers  keyboard.c:10707

        ...
        
          if (!input_pending)
>           get_input_pending (&input_pending, READABLE_EVENTS_DO_TIMERS_NOW);
        
          if (old_timers_run != timers_run && do_display)
        ...

01046756  emacs.exe:01046756  wait_reading_process_output  process.c:5022

        ...
          int leave = 0;
        
>         if (detect_input_pending_run_timers (do_display))
            {
              swallow_events (do_display);
        ...

0105C35F  emacs.exe:0105C35F  read_char  keyboard.c:4137

        ...
        wait_reading_process_output (0, 0, -1, 1, Qnil, NULL, 0);
        
>             if (!interrupt_input && kbd_fetch_ptr == kbd_store_ptr)
        /* Pass 1 for EXPECT since we just waited to have input.  */
        read_avail_input (1);
        ...

0105E242  emacs.exe:0105E242  read_key_sequence  keyboard.c:9515

        ...
             (Lisp_Object *) submaps, last_nonmenu_event,
             &used_mouse_menu, NULL);
>           if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */
        /* When switching to a new tty (with a new keyboard),
           read_char returns the new buffer, rather than -2
        ...

01060287  emacs.exe:01060287  command_loop_1  keyboard.c:1643

        ...
        
              /* Read next key sequence; i gets its length.  */
>             i = read_key_sequence (keybuf, sizeof keybuf / sizeof keybuf[0],
             Qnil, 0, 1, 1);
        
        ...

0100A16A  emacs.exe:0100A16A  internal_condition_case  eval.c:1491

        ...
        
          val = (*bfun) ();
>         catchlist = c.next;
          handlerlist = h.next;
          return val;
        ...

0105381A  emacs.exe:0105381A  command_loop_2  keyboard.c:1360

        ...
        
          do
>           val = internal_condition_case (command_loop_1, Qerror, cmd_error);
          while (!NILP (val));
        
        ...

0100A09F  emacs.exe:0100A09F  internal_catch  eval.c:1226

        ...
          /* Call FUNC.  */
          if (! _setjmp (c.jmp))
>           c.val = (*func) (arg);
        
          /* Throw works by a longjmp that comes right here.  */
        ...

01053627  emacs.exe:01053627  command_loop  keyboard.c:1343

        ...
        
        /* End of file in -batch run causes exit here.  */
>       if (noninteractive)
          Fkill_emacs (Qt);
              }
        ...

010536C0  emacs.exe:010536C0  recursive_edit_1  keyboard.c:955

        ...
        
          val = command_loop ();
>         if (EQ (val, Qt))
            Fsignal (Qquit, Qnil);
          /* Handle throw from read_minibuf when using minibuffer
        ...

010537E1  emacs.exe:010537E1  Frecursive_edit  keyboard.c:1017

        ...
        
          recursive_edit_1 ();
>         return unbind_to (count, Qnil);
        }
        
        ...

01002E2F  emacs.exe:01002E2F  main  emacs.c:1836

        ...
          /* NOTREACHED */
          return 0;
>       }
        
        /* Sort the args so we can find the most important ones
        ...

0100124B  emacs.exe:0100124B
01001298  emacs.exe:01001298
7C816D4F  kernel32.dll:7C816D4F  RegisterWaitForInputIdle



In GNU Emacs 23.2.1 (i386-mingw-nt5.1.2600)
 of 2010-07-10 on HOME-C4E4A596F7
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt'

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
  value of $XMODIFIERS: nil
  locale-coding-system: cp1255
  default enable-multibyte-characters: t

Major mode: Mail

Minor modes in effect:
  flyspell-mode: t
  desktop-save-mode: t
  show-paren-mode: t
  display-time-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  temp-buffer-resize-mode: t
  line-number-mode: t
  abbrev-mode: t

Recent input:
y y C-x b I N <tab> <return> <C-next> <C-next> <C-next> 
<C-next> <C-next> <C-next> <C-next> <C-next> <C-next> 
<C-next> <C-next> <C-next> <C-prior> <C-prior> <M-end> 
C-x b * M e s <tab> <return> <prior> C-x k <return> 
C-x 5 b * i <tab> 1 > <return> <switch-frame> C-x 5 
b x d <tab> <return> C-x C-f C-g <switch-frame> <help-echo> 
M-1 g <M-backspace> d a t <tab> m a i l . n e w <return> 
d d SPC d d d d d d d C-x C-s r <switch-frame> <switch-frame> 
<help-echo> M-~ <help-echo> <help-echo> <help-echo> 
<switch-frame> <switch-frame> <switch-frame> C-x C-f 
d : / u s <tab> <M-backspace> g n <tab> e m a <tab> 
- 2 3 <tab> <tab> x <tab> e m <tab> 2 / s r <tab> <M-backspace> 
e m <tab> <M-backspace> <M-backspace> <M-backspace> 
<backspace> _ c <tab> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <M-backspace> <M-backspace> b z <tab> e 
m <tab> e m <tab> e m <tab> . t <tab> <return> C-x 
4 f <up> <left> <left> <left> <left> 2 <return> <M-home> 
<down> <down> <down> <up> <up> <down> <down> <down> 
<down> <down> <down> <down> <M-home> <down> <down> 
<down> <down> <down> <down> <down> <down> M-x c o m 
p a <tab> <return> C-x b I N B <tab> - <tab> <return> 
<C-next> <C-next> <C-next> <C-next> <C-next> <C-next> 
<C-next> <C-next> <C-next> <M-end> C-x b I N <tab> 
<return> m e m a c s - d e v e l SPC <backspace> <down> 
E m a c s SPC 2 3 . 2 SPC c r a s h e s SPC i n SPC 
G C <down> <down> <down> <down> <down> <down> M-x r 
e p o r t - e m <tab> <return>

Recent messages:
Wrote d:/usr/eli/rmail/INBOX
Computing summary lines...done
9 new messages read
No following nondeleted message
Saving file d:/usr/eli/rmail/INBOX...
Wrote d:/usr/eli/rmail/INBOX
Parsing d:/usr/eli/.mailrc... done
Modification-flag cleared
Making completion list...
Mark set

Load-path shadows:
None found.

Features:
(shadow emacsbug compare-w help-mode view mailalias mailabbrev
sendmail conf-mode newcomment ld-script sh-script executable dired-x
dired-aux dired tcl generic parse-time nxml-uchnm rng-xsd xsd-regexp
rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse
rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln
nxml-rap nxml-util nxml-glyph nxml-enc xmltok sgml-mode arc-mode
archive-mode python-21 python gud comint ring vc-cvs make-mode org-wl
org-w3m org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs
org-html org-exp org-exp-blocks org-agenda org-info org-gnus
org-bibtex org-bbdb org byte-opt bytecomp byte-compile advice help-fns
advice-preload org-footnote org-src org-list org-faces org-compat
org-macs time-date noutline outline easy-mmode jka-compr cc-mode
cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
regexp-opt info easymenu vc-bzr sha1 hex-util flyspell ispell add-log
rmailsum rmail mail-utils desktop server filecache saveplace generic-x
paren battery time tooltip ediff-hook vc-hooks lisp-float-type mwheel
dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image
fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev loaddefs button minibuffer faces
cus-face files text-properties overlay md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process multi-tty emacs)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]