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

From: Stephen Berman <[email-masked]>
Date: Sun, 10 Jul 2011 22:31:38 +0200

On Sun, 10 Jul 2011 15:30:33 +0200 martin rudalics <[email-masked]> wrote:

>> Is window-point set to 1 as a side effect of making the temporary
>> buffer?
>
> No.  It happens because I used BEG instead of the buffer's point.
>
>>>                                           Rather _you_ did set the old
>>> buffer's window point to 1 and it stays put there when you set w->buffer
>>> to old_buffer upon exiting `vertical-motion'.
>>
>> Do you have a suggestion how to reset point?
>
> I attached I patch.  It compiles but is hardly trustworthy.  For
> example, old_buffer might have got killed in the meantime.

I applied the patch and rebuilt Emacs, then started with my
initializations under gdb.  Emacs came up fine, then I type C-h C-a and
it aborted in unshow_buffer; the backtrace is almost identical to the
one I posted previously.  Then I started Emacs again, started Gnus, as
with your first suggested patch with set_marker_both (w->buffer, BEG,
BEGV) the display was unstable (unselected window at first blank, then
blank fringe), then tried `h' and it worked a few times but the response
was slow, and then (after `h' not C-g) Emacs aborted in unshow_buffer;
backtrace below.  Just out of curiosity (since I don't understand the
code), I rebuilt again with the following call (old_buffer instead of
w->buffer):

       set_marker_both
 	(w->pointm, old_buffer, BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer));

This did not cause an abort with C-h C-a nor with h in Gnus, but it
showed the same problem of point in the non-selected window jumping to
point-min, despite not passing BEG and BEGV.

Steve Berman

#0  abort () at /data/steve/bzr/emacs/quickfixes/src/emacs.c:379
No locals.
#1  0x080a71a7 in unshow_buffer (w=0xa881840)
    at /data/steve/bzr/emacs/quickfixes/src/window.c:1801
        buf = 175435581
        b = 0xa74ef38
#2  0x080ae5a5 in delete_all_subwindows (window=176691269)
    at /data/steve/bzr/emacs/quickfixes/src/window.c:5750
        w = 0xa881840
#3  0x080af93f in Fdelete_other_windows_internal (window=141161989, root=
    175703581) at /data/steve/bzr/emacs/quickfixes/src/window.c:2753
        w = 0x869f600
        r = 0xa790618
        s = <value optimized out>
        f = 0x86e2b00
        sibling = <value optimized out>
        pwindow = <value optimized out>
        swindow = <value optimized out>
        delta = <value optimized out>
        startpos = 1
        top = 0
        new_top = <value optimized out>
        resize_failed = <value optimized out>
#4  0x081ab1d8 in Ffuncall (nargs=3, args=0xbfffe070)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3012
        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 = 0xbfffe1a4, 
          function = 0xbfffe070, 
          args = 0xbfffe074, 
          nargs = 2, 
          debug_on_exit = 0
---Type <return> to continue, or q <return> to quit---
        }
        internal_args = 0xbfffe074
        i = <value optimized out>
#5  0x081e2c26 in exec_byte_code (bytestr=<value optimized out>, vector=
    136775173, maxdepth=20, 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 = 0x83bd4a7 "\210\324\016\027!\210\325\016\027!\210Ї", 
          byte_string = 136775145, 
          byte_string_start = 0x83bd449 "\b\204T", 
          constants = 136775173, 
          next = 0xbfffe33c
        }
        top = 0xbfffe070
        result = <value optimized out>
#6  0x081e3888 in Fbyte_code (bytestr=136775145, vector=136775173, maxdepth=20)
    at /data/steve/bzr/emacs/quickfixes/src/bytecode.c:423
No locals.
#7  0x081aa61c in eval_sub (form=136775134)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:2363
        numargs = <value optimized out>
        args_left = 138576074
        i = 3
        maxargs = 3
        argvals = {136775145, 136775173, 20, 144317952, 17, 0, 175461590, 0}
        fun = <value optimized out>
        val = <value optimized out>
        original_fun = <value optimized out>
        original_args = 136775142
        funcar = <value optimized out>
        backtrace = {
          next = 0xbfffe41c, 
          function = 0xbfffe1bc, 
          args = 0xbfffe184, 
---Type <return> to continue, or q <return> to quit---
          nargs = 3, 
          debug_on_exit = 0
        }
#8  0x081a94e1 in internal_catch (tag=138866114, func=0x81aa180 <eval_sub>, arg=
    136775134) at /data/steve/bzr/emacs/quickfixes/src/eval.c:1247
        c = {
          tag = 138866114, 
          val = 138576074, 
          next = 0xbfffea84, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {-1073749280, 136775032, 51, -1073749304, 6093792, 
    -894025585}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {138576074, 1, 0, 139051442, 138576074, 3221217864, 
    139051466, 2, 1073741824, 3221217992, 135966707, 141161989, 139051442, 
    3221218228, 3221218356, 3221219972, 0, 2, 147359232, 2, 3221218004, 
    145845888, 136764096, 1, 3221218020, 139051464, 138992122, 3221218000, 
    3221218004, 138576074, 3221218332, 3221218016}
              }
            }}, 
          backlist = 0xbfffe41c, 
          handlerlist = 0xbfffeb4c, 
          lisp_eval_depth = 4, 
          pdlcount = 16, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0xbfffe33c
        }
#9  0x081e23e4 in exec_byte_code (bytestr=<value optimized out>, vector=
    136775037, maxdepth=16, args_template=138576074, nargs=0, 
    args=<value optimized out>)
    at /data/steve/bzr/emacs/quickfixes/src/bytecode.c:966
        v1 = <value optimized out>
        op = <value optimized out>
        vectorp = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        stack = {
          pc = 0x83bd506 "-\207", 
          byte_string = 136775017, 
          byte_string_start = 0x83bd4b5 "\b\211\030\203\063", 
          constants = 136775037, 
          next = 0xbfffe4bc
        }
        top = 0xbfffe2e0
        result = <value optimized out>
#10 0x081aabf8 in funcall_lambda (fun=136774989, nargs=0, arg_vector=0xbfffe464)
    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>
#11 0x081aaff3 in Ffuncall (nargs=1, args=0xbfffe460)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3070
        fun = <value optimized out>
        original_fun = 138968194
        funcar = <value optimized out>
        numargs = 0
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
          next = 0xbfffe59c, 
          function = 0xbfffe460, 
          args = 0xbfffe464, 
          nargs = 0, 
          debug_on_exit = 0
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#12 0x081e2c26 in exec_byte_code (bytestr=<value optimized out>, vector=
---Type <return> to continue, or q <return> to quit---
    171336941, 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 = 0x8c98721 "\210\202\202", 
          byte_string = 146497641, 
          byte_string_start = 0x8c986b0 "\306\b!\203\n", 
          constants = 171336941, 
          next = 0xbfffe63c
        }
        top = 0xbfffe460
        result = <value optimized out>
#13 0x081aabf8 in funcall_lambda (fun=143981725, nargs=2, arg_vector=0xbfffe5e4)
    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>
#14 0x081aaff3 in Ffuncall (nargs=3, args=0xbfffe5e0)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3070
        fun = <value optimized out>
        original_fun = 146011586
        funcar = <value optimized out>
        numargs = 2
        lisp_numargs = <value optimized out>
        val = <value optimized out>
        backtrace = {
          next = 0xbfffe71c, 
          function = 0xbfffe5e0, 
          args = 0xbfffe5e4, 
          nargs = 2, 
---Type <return> to continue, or q <return> to quit---
          debug_on_exit = 0
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#15 0x081e2c26 in exec_byte_code (bytestr=<value optimized out>, vector=
    172883509, 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 = 0xa483820 "\210\315\307\b!!\207", 
          byte_string = 172756425, 
          byte_string_start = 0xa4837f8 "\b\211\031\205\v", 
          constants = 172883509, 
          next = 0x0
        }
        top = 0xbfffe5e0
        result = <value optimized out>
#16 0x081aabf8 in funcall_lambda (fun=172883685, nargs=0, arg_vector=0xbfffe784)
    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>
#17 0x081aaff3 in Ffuncall (nargs=1, args=0xbfffe780)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:3070
        fun = <value optimized out>
        original_fun = 171201106
        funcar = <value optimized out>
        numargs = 0
        lisp_numargs = <value optimized out>
        val = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        backtrace = {
          next = 0xbfffe8ec, 
          function = 0xbfffe780, 
          args = 0xbfffe784, 
          nargs = 0, 
          debug_on_exit = 0
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#18 0x081ab5d3 in apply1 (fn=171201106, arg=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:2745
        ret_ungc_val = 195149784
#19 0x081a706d in Fcall_interactively (function=171201106, 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
---Type <return> to continue, or q <return> to quit---
        key_count = 1
        record_then_fail = 0
        save_this_command = 171201106
        save_last_command = 139533058
        save_this_original_command = 171201106
        save_real_this_command = 171201106
#20 0x081ab1c1 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>
#21 0x081ab471 in call3 (fn=138698938, arg1=171201106, arg2=138576074, arg3=
    138576074) at /data/steve/bzr/emacs/quickfixes/src/eval.c:2809
        ret_ungc_val = 195149784
        args = {138698938, 171201106, 138576074, 138576074}
#22 0x0813c00f in Fcommand_execute (cmd=171201106, 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
#23 0x08149980 in command_loop_1 ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1572
        scount = 2
        cmd = <value optimized out>
---Type <return> to continue, or q <return> to quit---
        keybuf = {416, 135527171, 176532358, 138576098, -1073747426, 139533058, 
    138689802, 138576074, -1073747416, -1073747426, 138576074, 138576074, 
    -1073747352, 135527446, 176532358, -1073747426, 138576074, 138689800, 0, 0, 
    -1232775064, 2, 139002824, 139002840, -1073747384, 135973625, 2, 138828926, 
    23, 0}
        i = <value optimized out>
        prev_modiff = 122
        prev_buffer = 0xa7e2828
#24 0x081a95b1 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, 4971488, 
    -894052209}, 
              __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
        }
---Type <return> to continue, or q <return> to quit---
        h = {
          handler = 138607114, 
          var = 138576074, 
          chosen_clause = 138576098, 
          tag = 0xbfffea84, 
          next = 0x0
        }
#25 0x0813eae5 in command_loop_2 (ignore=138576074)
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1156
        val = 195149784
#26 0x081a94e1 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, 4725728, 
    -894025585}, 
              __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, 135893371, 138253360, 64, 14, 
    138741954, 138741952, 138576074, 3221220472, 135973238, 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
        }
---Type <return> to continue, or q <return> to quit---
#27 0x0813f686 in command_loop ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1135
No locals.
#28 recursive_edit_1 () at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:756
        count = 1
        val = 0
#29 0x0813f982 in Frecursive_edit ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:820
        count = <value optimized out>
        buffer = 138576074
#30 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:
"delete-other-windows-internal" (0xbfffe074)
"byte-code" (0xbfffe184)
"delete-other-windows" (0xbfffe464)
"gnus-configure-windows" (0xbfffe5e4)
"gnus-summary-select-article-buffer" (0xbfffe784)
"call-interactively" (0xbfffe934)