Subject: bug#9006: 24.0.50; Abort in unshow_buffer/kill-buffer

From: Stephen Berman <[email-masked]>
Date: Sat, 09 Jul 2011 18:27:16 +0200

On Sat, 09 Jul 2011 15:01:03 +0200 martin rudalics <[email-masked]> wrote:

>> Sure; but since I haven't found a way to induce the abort at will,
>> failing to get a crash wouldn't be conclusive evidence that this fixes
>> the problem.  But I'll rebuild with it and report anything noteworthy.
>
> As I said earlier this fixes only one part of the problem.  But it's the
> part responsible for the crash, I presume.

That appears to be the case, but...

>> With `buffer' the build fails; did you mean `w->buffer'?  (At least the
>> build succeeds with that.)
>
> Arrgh, yes.  Or current_buffer.

...with w->buffer the display is unstable, and calling `about-emacs' made
Emacs abort in unshow_buffer again, but with a different backtrace
(included below).  I then replaced w->buffer with current_buffer and
rebuilt, and that was even worse: Emacs aborted before the startup was
complete; this time the backtrace was the same as in the earlier
aborts.  Then I tried with old_buffer, and so far, this is working:
display is normal, about-emacs works, navigating and editing in Gnus
works (so far); I'm even running a CPU-intensive program simultaneously
as a stress test.  No abort yet; I'll keep you posted.

Steve Berman

#0  abort () at /data/steve/bzr/emacs/quickfixes/src/emacs.c:379
No locals.
#1  0x080a71a7 in unshow_buffer (w=0xba68200)
    at /data/steve/bzr/emacs/quickfixes/src/window.c:1801
        buf = 139999749
        b = 0x8583a00
#2  0x080ac9f4 in Fset_window_buffer (window=195461637, buffer_or_name=
    195470965, keep_margins=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/window.c:3129
        tem = <value optimized out>
        buffer = 195470965
        w = 0xba68200
#3  0x081ab181 in Ffuncall (nargs=3, args=0xbfffe2c0)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3016
        fun = <value optimized out>
        original_fun = <value optimized out>
        funcar = <value optimized out>
        numargs = 2
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
          next = 0xbfffe3fc, 
          function = 0xbfffe2c0, 
          args = 0xbfffe2c4, 
          nargs = 2, 
          debug_on_exit = 0
        }
        internal_args = 0xbfffe230
        i = <value optimized out>
#4  0x081e2be6 in exec_byte_code (bytestr=<value optimized out>, vector=
    136802613, maxdepth=16, args_template=138576074, nargs=0, 
    args=<value optimized out>)
    at /data/steve/bzr/emacs/quickfixes/src/bytecode.c:785
        op = <value optimized out>
        vectorp = <value optimized out>
        stack = {
          pc = 0x83b8f30 "\210\n\204\063", 
---Type <return> to continue, or q <return> to quit---
          byte_string = 136802593, 
          byte_string_start = 0x83b8f07 "\303\b!\211\031\304 =\204*", 
          constants = 136802613, 
          next = 0xbfffe4bc
        }
        top = 0xbfffe2c0
        result = <value optimized out>
#5  0x081aabb8 in funcall_lambda (fun=136802549, nargs=1, arg_vector=0xbfffe450)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3240
        val = <value optimized out>
        syms_left = 138576074
        next = <value optimized out>
        lexenv = 138576074
        count = <value optimized out>
        i = <value optimized out>
        optional = <value optimized out>
        rest = <value optimized out>
#6  0x081aafb3 in Ffuncall (nargs=2, args=0xbfffe44c)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3070
        fun = <value optimized out>
        original_fun = 138777882
        funcar = <value optimized out>
        numargs = 1
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
          next = 0xbfffe59c, 
          function = 0xbfffe44c, 
          args = 0xbfffe450, 
          nargs = 1, 
          debug_on_exit = 0
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#7  0x081e2be6 in exec_byte_code (bytestr=<value optimized out>, vector=
    136913197, maxdepth=48, args_template=0, nargs=0, args=<value optimized out>)
    at /data/steve/bzr/emacs/quickfixes/src/bytecode.c:785
---Type <return> to continue, or q <return> to quit---
        op = <value optimized out>
        vectorp = <value optimized out>
        stack = {
          pc = 0x83a84c7 "\210\327\211\020\031\330 \210\n\203\063", 
          byte_string = 136913177, 
          byte_string_start = 
    0x83a84a3 "\306 \307 \310\311\312 \"r\313\314\315\316\317\320\006\a\006\a\"\321\"\322\323%DC\216\324\003!\210\325\326!\210\327\211\020\031\330 \210\n\203\063", 
          constants = 136913197, 
          next = 0xbfffe63c
        }
        top = 0xbfffe44c
        result = <value optimized out>
#8  0x081aac11 in funcall_lambda (fun=136913149, nargs=0, arg_vector=0xbfffe5e4)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3174
        val = <value optimized out>
        syms_left = 0
        next = <value optimized out>
        lexenv = <value optimized out>
        count = <value optimized out>
        i = <value optimized out>
        optional = <value optimized out>
        rest = <value optimized out>
#9  0x081aafb3 in Ffuncall (nargs=1, args=0xbfffe5e0)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3070
        fun = <value optimized out>
        original_fun = 139160770
        funcar = <value optimized out>
        numargs = 0
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
          next = 0xbfffe71c, 
          function = 0xbfffe5e0, 
          args = 0xbfffe5e4, 
          nargs = 0, 
---Type <return> to continue, or q <return> to quit---
          debug_on_exit = 0
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#10 0x081e2be6 in exec_byte_code (bytestr=<value optimized out>, vector=
    136917461, maxdepth=8, args_template=0, nargs=0, args=<value optimized out>)
    at /data/steve/bzr/emacs/quickfixes/src/bytecode.c:785
        op = <value optimized out>
        vectorp = <value optimized out>
        stack = {
          pc = 0x83a7636 "\207\302\303!\207", 
          byte_string = 136917441, 
          byte_string_start = 0x83a762f "\300 \203\b", 
          constants = 136917461, 
          next = 0x0
        }
        top = 0xbfffe5e0
        result = <value optimized out>
#11 0x081aac11 in funcall_lambda (fun=136917413, nargs=0, arg_vector=0xbfffe784)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3174
        val = <value optimized out>
        syms_left = 0
        next = <value optimized out>
        lexenv = <value optimized out>
        count = <value optimized out>
        i = <value optimized out>
        optional = <value optimized out>
        rest = <value optimized out>
#12 0x081aafb3 in Ffuncall (nargs=1, args=0xbfffe780)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3070
        fun = <value optimized out>
        original_fun = 139161034
        funcar = <value optimized out>
        numargs = 0
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
---Type <return> to continue, or q <return> to quit---
          next = 0xbfffe8ec, 
          function = 0xbfffe780, 
          args = 0xbfffe784, 
          nargs = 0, 
          debug_on_exit = 0
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#13 0x081ab593 in apply1 (fn=139161034, arg=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:2745
        ret_ungc_val = 195605896
#14 0x081a702d in Fcall_interactively (function=139161034, record_flag=
    138576074, keys=138604237)
    at /data/steve/bzr/emacs/quickfixes/src/callint.c:379
        input = <value optimized out>
        funval = <value optimized out>
        events = <value optimized out>
        args = <value optimized out>
        visargs = <value optimized out>
        specs = 138576074
        filter_specs = <value optimized out>
        teml = <value optimized out>
        up_event = 138576074
        enable = 138576074
        speccount = <value optimized out>
        next_event = <value optimized out>
        prefix_arg = 138576074
        string = 0x0
        tem = <value optimized out>
        varies = <value optimized out>
        i = <value optimized out>
        nargs = <value optimized out>
        foo = <value optimized out>
        prompt1 = "\000\000\000\000\000 ", '\000' <repeats 93 times>
        tem1 = <value optimized out>
        arg_from_tty = 0
        key_count = 2
---Type <return> to continue, or q <return> to quit---
        record_then_fail = 0
        save_this_command = 139161034
        save_last_command = 138968194
        save_this_original_command = 139161034
        save_real_this_command = 139161034
#15 0x081ab181 in Ffuncall (nargs=4, args=0xbfffe930)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3016
        fun = <value optimized out>
        original_fun = <value optimized out>
        funcar = <value optimized out>
        numargs = 3
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
          next = 0x0, 
          function = 0xbfffe930, 
          args = 0xbfffe934, 
          nargs = 3, 
          debug_on_exit = 0
        }
        internal_args = 0xbfffe934
        i = <value optimized out>
#16 0x081ab431 in call3 (fn=138698938, arg1=139161034, arg2=138576074, arg3=
    138576074) at /data/steve/bzr/emacs/quickfixes/src/eval.c:2809
        ret_ungc_val = 195605896
        args = {138698938, 139161034, 138576074, 138576074}
#17 0x0813c00f in Fcommand_execute (cmd=139161034, record_flag=138576074, keys=
    138576074, special=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:10274
        final = <value optimized out>
        tem = <value optimized out>
        prefixarg = 138576074
#18 0x08149980 in command_loop_1 ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1572
        scount = 2
        cmd = <value optimized out>
        keybuf = {32, 4, 176324046, 138576098, -1073747426, 139533058, 
---Type <return> to continue, or q <return> to quit---
    138689802, 138576074, -1073747416, -1073747426, 138576074, 138576074, 
    -1073747352, 135527446, 176324046, -1073747426, 138576074, 138689800, 0, 0, 
    -1232775064, 2, 139002824, 139002840, -1073747384, 135973561, 2, 138828926, 
    23, 0}
        i = <value optimized out>
        prev_modiff = 1210
        prev_buffer = 0x8583a00
#19 0x081a9571 in internal_condition_case (bfun=0x8149660 <command_loop_1>, 
    handlers=138607114, hfun=0x813fb60 <cmd_error>)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:1493
        val = <value optimized out>
        c = {
          tag = 138576074, 
          val = 138576074, 
          next = 0xbfffeba8, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 139002824, 139002840, -1073747096, -1254590365, 
    2143746828}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {1, 3087005952, 7, 142299368, 45, 142299368, 3086910040, 
    3065788385, 134551036, 7, 0, 3221220192, 3221220136, 0, 3087005952, 
    134550029, 3067970904, 3067183092, 3066786931, 7, 3221220432, 3221220128, 
    3221220432, 135614420, 2, 3221220292, 3221220128, 3065744920, 3067970904, 0, 
    4294967295, 3087003636}
              }
            }}, 
          backlist = 0x0, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
        h = {
---Type <return> to continue, or q <return> to quit---
          handler = 138607114, 
          var = 138576074, 
          chosen_clause = 138576098, 
          tag = 0xbfffea84, 
          next = 0x0
        }
#20 0x0813eae5 in command_loop_2 (ignore=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1156
        val = 195605896
#21 0x081a94a1 in internal_catch (tag=138605090, func=
    0x813eac0 <command_loop_2>, arg=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:1247
        c = {
          tag = 138605090, 
          val = 138576074, 
          next = 0x0, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 139002824, 139002840, -1073746824, -1254377373, 
    2143576844}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {0, 0, 0, 0, 0, 0, 0, 0, 3066169116, 0, 0, 0, 
    3066169116, 0, 0, 0, 64, 3221220408, 135893307, 138253360, 64, 14, 
    138741954, 138741952, 138576074, 3221220472, 135973174, 138741954, 
    138576074, 138576074, 1, 3221220520}
              }
            }}, 
          backlist = 0x0, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
#22 0x0813f686 in command_loop ()
---Type <return> to continue, or q <return> to quit---
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1135
No locals.
#23 recursive_edit_1 () at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:756
        count = 1
        val = 0
#24 0x0813f982 in Frecursive_edit ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:820
        count = <value optimized out>
        buffer = 138576074
#25 0x0813aa1c in main (argc=2, argv=0xbffff084)
    at /data/steve/bzr/emacs/quickfixes/src/emacs.c:1702
        dummy = 1
        stack_bottom_variable = 8 '\b'
        do_initial_setlocale = <value optimized out>
        skip_args = 0
        rlim = {
          rlim_cur = 8388608, 
          rlim_max = 18446744073709551615
        }
        no_loadup = 0
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0

Lisp Backtrace:

"set-window-buffer" (0xbfffe2c4)
"switch-to-buffer" (0xbfffe450)
"fancy-about-screen" (0xbfffe5e4)
"about-emacs" (0xbfffe784)
"call-interactively" (0xbfffe934)