Issue201

classification
Title Fatal error: QUIT called from within redisplay without being properly wrapped
Type defect Module core code 21.5
Severity crash Platform unix
Keywords Nosy List mike.kupfer
explanation
process
These controls should only be changed by committers and tracker administrators.
Status new   Reason
Superseder   Submitted 2007-12-31.21:16:48
Priority normal   Assigned To

Created on 2008-01-19.06:43:13 by Klaus.Reim, last changed 2013-03-05.01:11:37 by mike.kupfer.

Messages
msg2478 [hidden] ([hidden]) Date: 2013-03-05.01:11:36
see also issue312
msg2475 [hidden] ([hidden]) Date: 2013-03-05.01:08:13
see also issue789.
msg825 [hidden] ([hidden]) Date: 2008-09-27.05:55:58
Please use 'report-xemacs-bug' so that useful system
information is captured and can be used.
msg343 [hidden] ([hidden]) Date: 2008-01-19.06:43:13
  Message-ID: <47795C40.9020308@barco.com>
Hi Gents,

I succeeded in triggering the following assertion:

  Fatal error: assertion failed, file signal.c, line 730, QUIT called from within
  redisplay without being properly wrapped

I saw this first when trying to switch from a shell buffer
which was receiving process output to another buffer
via buffers pulldown menu selection.

Later when experimenting I found that the assertion can
be triggered by just randomly (frantically) clicking on a menubar item
(i.e. just pulling the menu-pane down and up again
and not selecting any menuitem is sufficient).
The important thing is that a process buffer must be on
display getting filled at a relatively high rate.

When experimenting I used to create a shell process: M-x shell
and ran the following shell commands:

  sh
  while true; do sleep 0.001; echo 'good                                       by!'; done

(The more bytes are echoed, the better. Just echoing 'good by!' makes reproducing
the effect impossible on my machine ?!)
Then just multi-clicking on the "Buffers" cascade-button triggers the assertion
within seconds.

This assertion is easily reproduced with optimized as well as debug versions,
with today's HEAD version, as well as with a CVS date-tagged version
"-D 2005-01-27", i.e. a version having received the above assertion-code
about one day before:

  revision 1.29
  date: 2005/01/26 10:33:42;  author: ben;  state: Exp;  lines: +22 -156
  Fix some race conditions in redisplay/signal
  (...)

Seems that adding the assertion was a good thing, since at least one
bad race still seems to go on somewhere ...

Please find more details below,
happy debugging,
and a a happy new year!

Klaus

Here is my configure command:
configure --with-package-path=/home/klr/xemacs/lib/xemacs/xemacs-packages --infodir=/home/klr/xemacs/xemacs-21.5/info --with-infopath=/home/klr/xemacs/xemacs-packages --with-athena=3d --with-xpm --with-png --with-jpeg --with-tiff --with-gif --with-gpm=yes --with-sound=native --with-pop --with-clash-detection --with-canna=yes --with-wnn=yes --with-xim=xlib --with-database=no --with-postgresql=no --with-ldap=no --with-hesiod=no --with-widgets=athena --with-menubars=lucid --with-scrollbars=lucid --with-dialogs=athena --with-msw=no

Lisp backtrace:
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (catch #<INTERNAL OBJECT (XEmacs bug?) (opaque, size=0) 0x84a60ac> ...)
  # (unwind-protect ...)
  # bind (inhibit-quit)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # bind (inhibit-quit)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  # (unwind-protect ...)
  ("(in redisplay)" "[internal]")
  # (unwind-protect ...)
  sit-for(0)
  # (unwind-protect ...)
  # bind (window)
  #<compiled-function (window) "...(123)" [current selected scroll process comint-scroll-show-maximum-output window window-buffer window-point process-mark t all this others set-window-point pos-visible-in-window-p recenter floatp floor window-height 1 -1 sit-for 0 string] 4>(#<window on "*shell*" 0x3163e>)
  # bind (walk-windows-current walk-windows-start arg which-devices which-frames minibuf function)
  walk-windows(#<compiled-function (window) "...(123)" [current selected scroll process comint-scroll-show-maximum-output window window-buffer window-point process-mark t all this others set-window-point pos-visible-in-window-p recenter floatp floor window-height 1 -1 sit-for 0 string] 4> nil t)
  # bind (scroll process current selected string)
  comint-postoutput-scroll-to-bottom("good                                          bye\n")
  run-hook-with-args(comint-postoutput-scroll-to-bottom "good                                          bye\n")
  # bind (obuf opoint obeg oend oprocbuf string process)
  comint-output-filter(#<process "bash" pid 27009 state:run> "good                                          bye\n")
  ("execute_internal_event()" "[internal]")
  (dispatch-event "[internal]")
  # (condition-case ... . error)
  # (catch top-level ...)

  [1] Abort                         xemacs (core dumped)

Core stacktrace:
#0  0xffffe410 in ?? ()
#1  0xbfffb7dc in ?? ()
#2  0x000028d6 in ?? ()
#3  0x00000006 in ?? ()
#4  0x403415f6 in kill () from /lib/tls/libc.so.6
#5  0x080d587b in fatal_error_signal (sig=6) at emacs.c:3734
#6  <signal handler called>
#7  0xffffe410 in ?? ()
#8  0xbfffbad8 in ?? ()
#9  0x00000006 in ?? ()
#10 0x000028d6 in ?? ()
#11 0x403412c1 in raise () from /lib/tls/libc.so.6
#12 0x40342b75 in abort () from /lib/tls/libc.so.6
#13 0x080d7c22 in really_abort () at emacs.c:4596
#14 0x080d594f in assert_failed (file=0x82a9477 "signal.c", line=730,
    expr=0x82a9510 "QUIT called from within redisplay without being properly wrapped") at emacs.c:3919
#15 0x08203b6e in check_quit () at signal.c:728
#16 0x08203724 in check_what_happened () at signal.c:458
#17 0x080df714 in Ffuncall (nargs=2, args=0xbfffbd08) at eval.c:3776
#18 0x080e0ff0 in call1 (fn=146269744, arg0=146614668) at eval.c:4497
#19 0x0825adb3 in menu_item_descriptor_to_widget_value_1 (desc=146614668,
    menu_type=1, deep_p=1, filter_p=0, depth=0) at menubar-x.c:218
#20 0x0825b119 in protected_menu_item_descriptor_to_widget_value_1 (
    gack=0xbfffc0a0) at menubar-x.c:353
#21 0x080e1b41 in call_trapping_problems_2 (opaque=147103872) at eval.c:4885
#22 0x080dc6dc in call_with_condition_handler (
    handler=0x80e1a9f <flagged_a_squirmer>, handler_arg=147103872,
    fun=0x80e1b0c <call_trapping_problems_2>, arg=147103872) at eval.c:2135
#23 0x080e1b61 in call_trapping_problems_1 (opaque=147103872) at eval.c:4891
#24 0x080dba86 in internal_catch (tag=147103776,
    func=0x80e1b46 <call_trapping_problems_1>, arg=147103872,
    threw=0xbfffbf8c, thrown_tag=0xbfffbf98, backtrace_before_throw=0xbfffbf90)
    at eval.c:1530
#25 0x080e1f7b in call_trapping_problems (warning_class=146388360,
    warning_string=0x82b1f35 "Error during menu callback", flags=35,
    problem=0x0,
    fun=0x825b0e0 <protected_menu_item_descriptor_to_widget_value_1>,
    arg=0xbfffc0a0) at eval.c:5164
#26 0x080f4b96 in event_stream_protect_modal_loop (
    error_string=0x82b1f35 "Error during menu callback",
    bfun=0x825b0e0 <protected_menu_item_descriptor_to_widget_value_1>,
    barg=0xbfffc0a0, flags=32) at event-stream.c:1934
#27 0x0825b185 in protected_menu_item_descriptor_to_widget_value (
    desc=146614704, menu_type=1, deep_p=1, filter_p=0) at menubar-x.c:382
#28 0x0825b30d in pre_activate_callback (widget=0x8527170, unused_id=65537,
    client_data=0x8537200) at menubar-x.c:476
#29 0x0827ef9e in pre_hook (w=0x8527170, client_data=0x8526ff0,
    call_data=0x8537200) at lwlib-Xlw.c:82
#30 0x4016b806 in XtCallCallbackList () from /usr/X11R6/lib/libXt.so.6
#31 0x0827a566 in remap_menubar (mw=0x8527170) at xlwmenu.c:2524
#32 0x0827bd87 in handle_single_motion_event (mw=0x8527170, ev=0xbfffc6f0,
    select_p=1 '\001') at xlwmenu.c:3269
#33 0x0827be70 in handle_motion_event (mw=0x8527170, ev=0xbfffc6f0,
    select_p=1 '\001') at xlwmenu.c:3301
#34 0x0827bf78 in Start (w=0x8527170, ev=0xbfffc6f0, unused_params=0x0,
    unused_num_params=0x401b1c64) at xlwmenu.c:3339
#35 0x401a47e7 in XtInstallAllAccelerators () from /usr/X11R6/lib/libXt.so.6
#36 0x401a4bc4 in XtInstallAllAccelerators () from /usr/X11R6/lib/libXt.so.6
#37 0x401a5288 in _XtTranslateEvent () from /usr/X11R6/lib/libXt.so.6
#38 0x4017a7f3 in XtDispatchEventToWidget () from /usr/X11R6/lib/libXt.so.6
#39 0x4017b02a in XtDispatchEventToWidget () from /usr/X11R6/lib/libXt.so.6
#40 0x40179e5f in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
#41 0x40187a18 in XtAppProcessEvent () from /usr/X11R6/lib/libXt.so.6
#42 0x0823d4f3 in emacs_Xt_drain_queue () at event-Xt.c:2834
#43 0x0823d56c in check_if_pending_expose_event (dev=0x8c25d20)
    at event-Xt.c:2855
#44 0x0824f97a in x_window_output_end (w=0x8ceb440) at redisplay-x.c:307
#45 0x081eb027 in redisplay_output_window (w=0x8ceb440)
    at redisplay-output.c:2494
#46 0x081d9587 in redisplay_window (window=147764288, skip_selected=0)
    at redisplay.c:6534
#47 0x081d9fd6 in redisplay_frame (f=0x8cea954, preemption_check=1)
    at redisplay.c:6940
#48 0x081da472 in redisplay_device (d=0x8c25d20, automatic=1)
    at redisplay.c:7021
#49 0x081dabcd in redisplay_without_hooks () at redisplay.c:7096
#50 0x081dae93 in redisplay_no_pre_idle_hook () at redisplay.c:7167
#51 0x081dae4e in redisplay () at redisplay.c:7149
#52 0x080f639b in Fsit_for (seconds=1, nodisplay=146404744)
    at event-stream.c:2873
#53 0x080df9b3 in Ffuncall (nargs=2, args=0xbfffcab4) at eval.c:3847
#54 0x0809ac14 in execute_optimized_program (
    program=0x862988c "Æ\r!\ba­tÇ\r!È\v!W«3\nÉa¬'\nÊa¬\"\nËa«\006\t\ra¬\030\nÌa«\006\t\ra«\016Ç\r!È\v!\016\027GZY«\bÍ\rÈ\v!\"\210\f­6Ç\r!È\v!Y­-Îd\r\"?­&\212Í\rd\"\210Ï\f¨«\004\fª\021Ð\f!«\vÑÒ\r!\f_Ó\"ª\002Ô\r\"\210ÕÖ!)\207",
    stack_depth=4, constants_data=0x860c1a8) at bytecode.c:823
#55 0x080e7225 in funcall_compiled_function (fun=141853772, nargs=1,
    args=0xbfffcd08) at eval.c:3457
#56 0x080dfc6f in Ffuncall (nargs=2, args=0xbfffcd04) at eval.c:3886
#57 0x0809ac14 in execute_optimized_program (
    program=0x85a7bc8 "Æ\f!«\004\fª\aÇ\v!­\002\v\032ÈÉ\n!!«\003Ê\021É\n!\211\030\035Ë\r\t\f\v$\025\016\f\r!\210\r\ba?­\003ªí+\207\025`®+1", stack_depth=6,
    constants_data=0x8c40620) at bytecode.c:823
#58 0x080e7225 in funcall_compiled_function (fun=147616096, nargs=3,
    args=0xbfffcf58) at eval.c:3457
#59 0x080dfc6f in Ffuncall (nargs=4, args=0xbfffcf54) at eval.c:3886
#60 0x0809ac14 in execute_optimized_program (
    program=0x85e5588 "Å \032p\034Æ\f!\033\t\030\v­\006ÇÈÉÊ#,\207",
    stack_depth=4, constants_data=0x85f503c) at bytecode.c:823
#61 0x080e7225 in funcall_compiled_function (fun=141853816, nargs=1,
    args=0xbfffd2fc) at eval.c:3457
#62 0x080dfc6f in Ffuncall (nargs=2, args=0xbfffd2f8) at eval.c:3886
#63 0x080e0be2 in run_hook_with_args_in_buffer (buf=0x842a114, nargs=2,
    args=0xbfffd2f8, cond=RUN_HOOKS_TO_COMPLETION) at eval.c:4360
#64 0x080e0c92 in run_hook_with_args (nargs=2, args=0xbfffd2f8,
    cond=RUN_HOOKS_TO_COMPLETION) at eval.c:4380
#65 0x080e08c6 in Frun_hook_with_args (nargs=2, args=0xbfffd2f8) at eval.c:4255
#66 0x080dfbe2 in Ffuncall (nargs=3, args=0xbfffd2f4) at eval.c:3870
#67 0x0809ac14 in execute_optimized_program (
    program=0x85a1b64 "Æ\016\022!\211\036\023\205\227", stack_depth=5,
    constants_data=0x860c140) at bytecode.c:823
#68 0x080e7225 in funcall_compiled_function (fun=141853640, nargs=2,
    args=0xbfffd554) at eval.c:3457
#69 0x080dfc6f in Ffuncall (nargs=3, args=0xbfffd550) at eval.c:3886
#70 0x080e104d in call2 (fn=141835920, arg0=140559064, arg1=140257088)
    at eval.c:4513
#71 0x081c0d16 in read_process_output (process=140559064, read_stderr=0)
    at process.c:1095
#72 0x080f67b1 in execute_internal_event (event=140287344)
    at event-stream.c:3014
#73 0x080f97a5 in Fdispatch_event (event=140287344) at event-stream.c:4642
#74 0x080a8a8f in Fcommand_loop_1 () at cmdloop.c:600
#75 0x080a884b in command_loop_1 (unused_dummy=146404744) at cmdloop.c:505
#76 0x080dbfcd in condition_case_1 (handlers=146401592,
    bfun=0x80a881b <command_loop_1>, barg=146404744,
    hfun=0x80a846b <cmd_error>, harg=146404744) at eval.c:1924
#77 0x080a857b in command_loop_3 () at cmdloop.c:262
#78 0x080a859e in command_loop_2 (unused_dummy=146404744) at cmdloop.c:275
#79 0x080dba86 in internal_catch (tag=146168912,
    func=0x80a8593 <command_loop_2>, arg=146404744, threw=0x0, thrown_tag=0x0,
    backtrace_before_throw=0x0) at eval.c:1530
#80 0x080a868b in initial_command_loop (load_me=146404744) at cmdloop.c:313
#81 0x080d4718 in xemacs_21_5_b24_i686_pc_linux (argc=1, argv=0xbfffdf84,
    unused_envp=0x0, restart=0) at emacs.c:2624
#82 0x080d50cc in main (argc=1, argv=0xbfffdf84, unused_envp=0xbfffdf8c)
    at emacs.c:3064

_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta@xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta
History
Date User Action Args
2013-03-05 01:11:37mike.kupfersetmessages: + msg2478
2013-03-05 01:08:14mike.kupfersetnosy: + mike.kupfer
messages: + msg2475
2008-09-27 05:55:58vladimirsetmessages: + msg825
severity: inconvenience -> crash
2008-09-27 05:54:08vladimirsetpriority: normal
platform: + unix
type: defect
severity: inconvenience
module: + core code 21.5
2008-01-19 06:43:13Klaus.Reimcreate