unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
@ 2016-04-28 22:05 Ken Raeburn
  2016-05-02 16:47 ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Ken Raeburn @ 2016-04-28 22:05 UTC (permalink / raw)
  To: 23397


I'm running the emacs-25 branch as of revision a1f221b, but with commit
d82f24b reverted (attempting to debug #23013), and built with
MARKER_DEBUG enabled (as Eli pointed out, probably not relevant to
#23013) along with assertions.

I was using "git" to update a source tree while about twenty files from
it were loaded into Emacs buffers. Auto-revert was triggered; during the
process, Finsert_file_contents was loading a Perl file when it invoked
BYTE_TO_CHAR:

	  /* Don't try to reuse the same piece of text twice.  */
	  overlap = (same_at_start - BEGV_BYTE
		     - (same_at_end
			+ (! NILP (end) ? end_offset : st.st_size) - ZV_BYTE));
	  if (overlap > 0)
	    same_at_end += overlap;
	  same_at_end_charpos = BYTE_TO_CHAR (same_at_end);

...with same_at_end well out of range (Z_BYTE=12451, same_at_end=24673).
The reverting appears to have happened while the file was in the process
of being updated, as st.st_size is zero.

The "end" argument is nil, so the conditional expression will use the
st_size value (zero). So with same_at_start=12223, BEGV_BYTE=1, and
ZV_BYTE=12451, the "overlap" value will be 24673 minus the (old) value
of same_at_end. If that difference doesn't go negative, we'll set
same_at_end to 24673, which is the value seen in the next frame down.
(The "overlap" variable isn't visible from gdb at this point.)

So in buf_bytepos_to_charpos, the initial range check assertion fails,
and Emacs dies.

I haven't managed to reproduce this so far.



Core was generated by `emacs --daemon'.
Program terminated with signal 6, Aborted.
#0  0x00007f6725308b7b in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42
42	../nptl/sysdeps/unix/sysv/linux/pt-raise.c: No such file or directory.
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not from terminal]
DISPLAY = :0.0
TERM = dumb
Breakpoint 1 at 0x52d290: file ../../src/emacs.c, line 352.
Temporary breakpoint 2 at 0x54d950: file ../../src/sysdep.c, line 911.
(gdb) bt full
#0  0x00007f6725308b7b in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42
        resultvar = 0
        pid = <optimized out>
#1  0x000000000052d308 in terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at ../../src/emacs.c:380
No locals.
#2  0x00000000005995e4 in die (msg=<optimized out>, file=<optimized out>, line=<optimized out>) at ../../src/alloc.c:7218
No locals.
#3  0x0000000000562b46 in buf_bytepos_to_charpos (b=0x3940870, bytepos=24673) at ../../src/marker.c:297
        tail = <optimized out>
        best_above = <optimized out>
        best_above_byte = <optimized out>
        best_below = <optimized out>
        best_below_byte = <optimized out>
#4  0x000000000056c786 in Finsert_file_contents (filename=59999236, visit=<optimized out>, beg=0, end=0, replace=<optimized out>) at ../../src/fileio.c:3853
        temp = <optimized out>
        overlap = <optimized out>
        giveup_match_end = false
        st = {
          st_dev = 2057, 
          st_ino = 5972083, 
          st_nlink = 1, 
          st_mode = 33188, 
          st_uid = 1065, 
          st_gid = 50, 
          __pad0 = 0, 
          st_rdev = 0, 
          st_size = 0, 
          st_blksize = 4096, 
          st_blocks = 8, 
          st_atim = {
            tv_sec = 1461804924, 
            tv_nsec = 0
          }, 
          st_mtim = {
            tv_sec = 1461804924, 
            tv_nsec = 0
          }, 
          st_ctim = {
            tv_sec = 1461804924, 
            tv_nsec = 0
          }, 
          __unused = {0, 0, 0}
        }
        mtime = {
          tv_sec = 1461804924, 
          tv_nsec = 0
        }
        fd = 20
        inserted = 0
        how_much = <optimized out>
        beg_offset = 0
        end_offset = <optimized out>
        unprocessed = <optimized out>
        handler = 0
        val = <optimized out>
        insval = <optimized out>
        orig_filename = 59999236
        old_undo = <optimized out>
        p = <optimized out>
        total = 0
        not_regular = <optimized out>
        save_errno = 0
        read_buf = [text elided]...
        coding = {
          id = 1, 
          common_flags = 4096, 
          mode = 0, 
          src_multibyte = false, 
          dst_multibyte = false, 
          chars_at_source = false, 
          raw_destination = false, 
          annotated = true, 
          eol_seen = 3, 
          result = CODING_RESULT_SUCCESS, 
          max_charset_id = 0, 
          spec = {
            iso_2022 = {
              flags = 0, 
              current_invocation = {0, 59159552}, 
              current_designation = {0, 0, 0, 16}, 
              ctext_extended_segment_len = 0, 
              single_shifting = false, 
              bol = true, 
              embedded_utf_8 = false, 
              cmp_status = {
                state = COMPOSING_NO, 
                method = 59159773, 
                old_form = false, 
                length = 117, 
                nchars = 0, 
                ncomps = 0, 
                carryover = {0, 137897158, 0, 0, 0, 53, 0, 0, 0, 1, 0, 59159720, 0, 13184, 0 <repeats 11 times>, 137897156, 0, 1, 0, 0, 1, 1633000192, 821086785, 13263192, 0, 0, 0, 0, 0, 13263192, 0, 47, 0, 47, 0, 0, 0, 5836564, 0, 0, 0, 53, 0, 13263096, 0, 0, 0, 1, 0, 0, 0, 13263128, 0, 0, 0, 53, 0, 15698672}
              }
            }, 
            ccl = 0x0, 
            utf_16 = {
              bom = utf_detect_bom, 
              endian = utf_16_big_endian, 
              surrogate = 59159552
            }, 
            utf_8_bom = utf_detect_bom, 
            emacs_mule = {
              cmp_status = {
                state = COMPOSING_NO, 
                method = COMPOSITION_RELATIVE, 
                old_form = false, 
                length = 0, 
                nchars = 0, 
                ncomps = 0, 
                carryover = {16, 0, 2, 0, 59159773, 0, 117, 0, 0, 0, 137897158, 0, 0, 0, 53, 0, 0, 0, 1, 0, 59159720, 0, 13184, 0 <repeats 11 times>, 137897156, 0, 1, 0, 0, 1, 1633000192, 821086785, 13263192, 0, 0, 0, 0, 0, 13263192, 0, 47, 0, 47, 0, 0, 0, 5836564, 0, 0, 0, 53, 0, 13263096, 0, 0, 0, 1, 0}
              }
            }, 
            undecided = {
              inhibit_nbd = 0, 
              inhibit_ied = 0, 
              prefer_utf_8 = false
            }
          }, 
          safe_charsets = 0xcf1980 "", 
          head_ascii = 6017289, 
          detected_utf8_bytes = 53, 
          detected_utf8_chars = 140724539966056, 
          produced = 1, 
          produced_char = 6011538, 
          consumed = 13258416, 
          consumed_char = 6072415, 
          src_pos = 13263096, 
          src_pos_byte = 4, 
          src_chars = 22, 
          src_bytes = 140724539966056, 
          src_object = 0, 
          source = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>, 
          dst_pos = 59999236, 
          dst_pos_byte = 5840580, 
          dst_bytes = 53, 
          dst_object = 0, 
          destination = 0x35 <Address 0x35 out of bounds>, 
          charbuf = 0xffffffffffffffff, 
          charbuf_size = 59999236, 
          charbuf_used = 0, 
          carryover = "\000\000\000\000\000\000\000\000\004\204\223\003\000\000\000\000p\b\224\003\000\000\000\000\020\000\000\000\000\000\000\000\240\252", '\000' <repeats 14 times>"\372, \300[\000\000\000\000\000\240\252\000\000\000\000\000", 
          carryover_bytes = 0, 
          default_char = 0, 
          detector = 0, 
          decoder = 0x4ace70 <decode_coding_raw_text>, 
          encoder = 0x4bdac0 <encode_coding_raw_text>
        }
        replace_handled = false
        set_coding_system = true
        coding_system = 186272
        read_quit = false
        empty_undo_list_p = false
        old_Vdeactivate_mark = 44448
        we_locked_file = false
        window_markers = <optimized out>
        same_at_start = 12223
        same_at_end = 24673
        same_at_end_charpos = 12451
#5  0x00000000005bbd7c in Ffuncall (nargs=6, args=0x7ffcfc374398) at ../../src/eval.c:2709
        internal_argbuf = {13730768, 0, 1, 4440414, 53, 5928744, 292928, 292928}
        fun = <optimized out>
        original_fun = <optimized out>
        funcar = 0
        numargs = 5
        lisp_numargs = 6
        val = <optimized out>
        internal_args = 0x7ffcfc3743a0
        count = 24
#6  0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=6, maxdepth=6, args_template=0, nargs=2, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 22
        stack = {
          pc = 0xc184d9 ")\202y", 
          byte_string = 9710972, 
          byte_string_start = 0xc1846c "\306\002!\204\023", 
          next = 0x7ffcfc3745f0
        }
        result = 0
        type = 2305
#7  0x00000000005bba72 in Ffuncall (nargs=3, args=0x7ffcfc374568) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 4554608
        funcar = 0
        numargs = 2
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 21
#8  0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=3, maxdepth=6, args_template=0, nargs=2, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 19
        stack = {
          pc = 0xc1860b "\210\334\335\t!!\026$\336\330\211\321\330\016%%\210\337\340\003\"\210\211\203\263", 
          byte_string = 9710484, 
          byte_string_start = 0xc1857c "r\306p!\206\b", 
          next = 0x7ffcfc374790
        }
        result = 0
        type = 2305
#9  0x00000000005bba72 in Ffuncall (nargs=3, args=0x7ffcfc374720) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 4554512
        funcar = 0
        numargs = 2
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 18
#10 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=3, maxdepth=6, args_template=0, nargs=3, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 16
        stack = {
          pc = 0xc1866d "*\207", 
          byte_string = 9710228, 
          byte_string_start = 0xc18661 "\303\001\030\031\n\206\t", 
          next = 0x7ffcfc374960
        }
        result = 0
        type = 2305
#11 0x00000000005bba72 in Ffuncall (nargs=4, args=0x7ffcfc3748d0) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 3874224
        funcar = 0
        numargs = 3
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 15
#12 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=4, maxdepth=6, args_template=0, nargs=0, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 13
        stack = {
          pc = 0x35c8952 "\210)\t\203\274", 
          byte_string = 48010052, 
          byte_string_start = 0x35c88b8 "p\306\307\030\t\203?", 
          next = 0x7ffcfc374c30
        }
        result = 0
        type = 2305
#13 0x00000000005bba72 in Ffuncall (nargs=1, args=0x7ffcfc374bc8) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 55760293
        funcar = 0
        numargs = 0
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 12
#14 0x00000000005bce84 in Fapply (nargs=2, args=<optimized out>) at ../../src/eval.c:2274
        i = <optimized out>
        numargs = <optimized out>
        funcall_nargs = <optimized out>
        funcall_args = 0x0
        spread_arg = 0
        fun = <optimized out>
        retval = <optimized out>
        sa_avail = 16384
        sa_must_free = false
#15 0x00000000005bbf06 in Ffuncall (nargs=3, args=0x7ffcfc374bc0) at ../../src/eval.c:2673
        fun = <optimized out>
        original_fun = 9504
        funcar = 0
        numargs = 2
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 11
#16 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=3, maxdepth=6, args_template=0, nargs=0, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 11
        stack = {
          pc = 0x10b6553 "\207", 
          byte_string = 18033780, 
          byte_string_start = 0x10b6548 "\300\301\002\"\206\v", 
          next = 0x7ffcfc374df0
        }
        result = 0
        type = 2305
#17 0x00000000005bba72 in Ffuncall (nargs=1, args=0x7ffcfc374d88) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 41483120
        funcar = 0
        numargs = 0
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 10
#18 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=1, maxdepth=6, args_template=0, nargs=91483, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 9
        stack = {
          pc = 0x35c87fb "\210\r\024\332\324\323\"\210)\001A\266\202\202r", 
          byte_string = 49284980, 
          byte_string_start = 0x35c8740 "\306\061\322", 
          next = 0x7ffcfc374ff0
        }
        result = 0
        type = 2305
#19 0x00000000005bba72 in Ffuncall (nargs=2, args=0x7ffcfc374f70) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 41482928
        funcar = 0
        numargs = 1
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 8
#20 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=2, maxdepth=6, args_template=140724539969400, nargs=1, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 8
        stack = {
          pc = 0x35d4a38 "\210\004\204\262\001\211\334>\203\273\001\006\a;\203\250\001\335\006\b!\204\273\001\006\b\336\006\016!\230\203\273\001\337\332\006\r\005@\"!\210\001A\266\202\202\060", 
          byte_string = 50354644, 
          byte_string_start = 0x35d48a8 "\211@\302\001\b\"\002A@\303\004!\304\211\211\211\005:\204\032", 
          next = 0x7ffcfc375180
        }
        result = 0
        type = 2305
#21 0x00000000005bba72 in Ffuncall (nargs=2, args=0x7ffcfc375110) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 41462528
        funcar = 0
        numargs = 1
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 7
#22 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=2, maxdepth=6, args_template=0, nargs=1, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 7
        stack = {
          pc = 0x35d4655 "\207\303\304\305\003B\"\207", 
          byte_string = 50369588, 
          byte_string_start = 0x35d4640 "\211@\300=\203\026", 
          next = 0x7ffcfc375680
        }
        result = 0
        type = 2305
#23 0x00000000005bba72 in Ffuncall (nargs=2, args=0x7ffcfc375378) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 457984
        funcar = 0
        numargs = 1
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 6
#24 0x00000000005b7159 in Ffuncall_interactively (nargs=2, args=0x7ffcfc375378) at ../../src/callint.c:248
No locals.
#25 0x00000000005bbf06 in Ffuncall (nargs=3, args=0x7ffcfc375370) at ../../src/eval.c:2673
        fun = <optimized out>
        original_fun = 24000
        funcar = 0
        numargs = 2
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 4
#26 0x00000000005b87c4 in Fcall_interactively (function=140724539970416, record_flag=0, keys=140724539970464) at ../../src/callint.c:836
        val = <optimized out>
        args = 0x7ffcfc375370
        visargs = 0xfff9f86ea710
        specs = <optimized out>
        filter_specs = <optimized out>
        teml = <optimized out>
        up_event = <optimized out>
        sa_avail = <optimized out>
        sa_must_free = false
        next_event = <optimized out>
        prefix_arg = 0
        string = <optimized out>
        tem = <optimized out>
        varies = 0x17ff6f4a5fab0 <Address 0x17ff6f4a5fab0 out of bounds>
        i = <optimized out>
        nargs = 3
        mark = <optimized out>
        arg_from_tty = <optimized out>
        key_count = 1
        record_then_fail = false
        save_this_command = 0
        save_last_command = 4825984
        save_this_original_command = 0
        save_real_this_command = 0
#27 0x00000000005bbdfc in Ffuncall (nargs=4, args=0x7ffcfc3755f8) at ../../src/eval.c:2700
        internal_argbuf = {457984, 0, 0, 4440414, 140724539971312, 5928744, 0, 140724539971312}
        fun = <optimized out>
        original_fun = <optimized out>
        funcar = 0
        numargs = 3
        lisp_numargs = 6
        val = <optimized out>
        internal_args = 0x7ffcfc375600
        count = 3
#28 0x00000000005fcaad in exec_byte_code (bytestr=2305, vector=4, maxdepth=6, args_template=0, nargs=4, args=0x400448) at ../../src/bytecode.c:880
        targets = {0x5fc882, 0x5fd1e5, 0x5fd1ea, 0x5fd1ef, 0x5fd1f5, 0x5fc8e3, 0x5fcedf, 0x5fcf25, 0x5fced5, 0x5fceda, 0x5fcea6, 0x5fceab, 0x5fc924, 0x5fc928, 0x5fcc6f, 0x5fceb0, 0x5fce3a, 0x5fce3f, 0x5fcbe9, 0x5fcbee, 0x5fc9b5, 0x5fc9b8, 0x5fcc18, 0x5fcbf3, 0x5fcbba, 0x5fcbbf, 0x5fcbc4, 0x5fcbc9, 0x5fca49, 0x5fca50, 0x5fcc5b, 0x5fcb95, 0x5fcb80, 0x5fcb85, 0x5fcb8a, 0x5fdf7e, 0x5fca8f, 0x5fca90, 0x5fcbd5, 0x5fcb5b, 0x5fe45a, 0x5fe45f, 0x5fe464, 0x5fe430, 0x5fcad0, 0x5fcad0, 0x5fe3d6, 0x5fe435, 0x5fe291, 0x5fe287, 0x5fe1c7, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5ff150, 0x5ff0a2, 0x5ff0f9, 0x5fef22, 0x5fef79, 0x5fce44, 0x5fcd89, 0x5feff8, 0x5fcd18, 0x5fcdc9, 0x5ff062, 0x5feafc, 0x5ff335, 0x5ff2bb, 0x5ff2f8, 0x5ff28c, 0x5ff375, 0x5ff3b5, 0x5fe967, 0x5feef3, 0x5fee73, 0x5feeb3, 0x5fed72, 0x5fedb2, 0x5fedf9, 0x5fee36, 0x5feb2b, 0x5febb8, 0x5febf8, 0x5fec3c, 0x5fece8, 0x5feca3, 0x5fed2d, 0x5fd7b3, 0x5fd7f8, 0x5fd835, 0x5fd874, 0x5fd8b1, 0x5fd8ee, 0x5fd92b, 0x5fd9e5, 0x5fcb2d, 0x5fda46, 0x5fda75, 0x5fdaf3, 0x5fdb58, 0x5fdbb9, 0x5fdbe8, 0x5fdc19, 0x5fdc4a, 0x5fdca2, 0x5fc882, 0x5fdcf2, 0x5fdd27, 0x5fdd5c, 0x5fdd91, 0x5fddc6, 0x5fddfb, 0x5fcb2d, 0x5fc882, 0x5fde2a, 0x5fde71, 0x5fdea0, 0x5fdecf, 0x5fdf0f, 0x5fdf4f, 0x5fd423, 0x5fd470, 0x5fd691, 0x5fd6d1, 0x5fd65c, 0x5fd784, 0x5fc882, 0x5fe100, 0x5fe469, 0x5fcc83, 0x5fe52c, 0x5fe7db, 0x5fe86d, 0x5fe091, 0x5fe0df, 0x5fcc2c, 0x5fdf83, 0x5fd0a4, 0x5fe154, 0x5fe182, 0x5fe2bf, 0x5fe32c, 0x5fe373, 0x5fe760, 0x5fe3ea, 0x5fd711, 0x5fd755, 0x5fd4b0, 0x5fd4df, 0x5fd50e, 0x5fd53d, 0x5fd57d, 0x5fd5bd, 0x5fd5fd, 0x5fd63d, 0x5fd205, 0x5fd245, 0x5fd285, 0x5fd2b4, 0x5fd2f4, 0x5fd334, 0x5fd38d, 0x5fd3e6, 0x5fd968, 0x5fd9a5, 0x5fd126, 0x5fd18e, 0x5fc882, 0x5fe62a, 0x5fe6da, 0x5fe996, 0x5fea77, 0x5fdfb1, 0x5ff23c, 0x5feb68, 0x5fdaa6, 0x5fcf81, 0x5fcfc6, 0x5fc882, 0x5fc882, 0x5fd01e, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fc882, 0x5fd069 <repeats 64 times>}
        count = 3
        stack = {
          pc = 0xbf57b7 "\006\006\071\203\242", 
          byte_string = 10150908, 
          byte_string_start = 0xbf573c "\306\020\211?\205\023", 
          next = 0x0
        }
        result = 0
        type = 2305
#29 0x00000000005bba72 in Ffuncall (nargs=5, args=0x7ffcfc375790) at ../../src/eval.c:2754
        fun = <optimized out>
        original_fun = 14784
        funcar = 0
        numargs = 4
        lisp_numargs = 6
        val = <optimized out>
        internal_args = <optimized out>
        count = 2
#30 0x00000000005bc079 in call4 (fn=<optimized out>, arg1=<optimized out>, arg2=<optimized out>, arg3=<optimized out>, arg4=<optimized out>) at ../../src/eval.c:2577
No locals.
#31 0x000000000053b1b2 in read_char (commandflag=1, map=127403475, prev_event=0, used_mouse_menu=0x7ffcfc375ebf, end_time=0x0) at ../../src/keyboard.c:2835
        prev_buffer = 0x31cac30
        c = 130132563
        local_getcjmp = {{
            __jmpbuf = {0, 369207272891589228, 52210736, 4611686018477719552, 13599328, 1, -367526741044780436, 369207937242997356}, 
            __mask_was_saved = 0, 
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 369209120862741100, 117521837, 5, 0, 1, -367526741044780436, 369207937242997356}, 
            __mask_was_saved = 0, 
            __saved_mask = {
              __val = {97323811, 0, 0, 97323827, 97323824, 0, 4611686018595160064, 4611686019484352512, 6072415, 41400304, 6073252, 166272, 0, 4611686018595160064, 97323827, 1}
            }
          }}
        tem = 457984
        save = <optimized out>
        previous_echo_area_message = 0
        also_record = 0
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0xcf8260
#32 0x000000000053f96e in read_key_sequence (keybuf=0x7ffcfc375f20, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=<optimized out>, bufsize=30) at ../../src/keyboard.c:9055
        interrupted_kboard = <optimized out>
        interrupted_frame = 0xcfca00
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = <optimized out>
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 127403475
        first_event = 0
        first_unbound = 31
        mock_input = 0
        fkey = {
          parent = 13805859, 
          map = 13805859, 
          start = 0, 
          end = 0
        }
        keytran = {
          parent = 13535811, 
          map = 13535811, 
          start = 0, 
          end = 0
        }
        indec = {
          parent = 13805875, 
          map = 13805875, 
          start = 0, 
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = 0
        original_uppercase = 5930301
        original_uppercase_position = -1
        dummyflag = <optimized out>
        starting_buffer = 0x31cac30
        fake_prefixed_keys = 0
#33 0x0000000000541334 in command_loop_1 () at ../../src/keyboard.c:1357
        cmd = <optimized out>
        keybuf = {98, 14, 246, 18, 4294967296, 3526540890385783552, 0, 5925508, 0, 28416, 0, 112171987, 140724539973632, 0, 0, 45840, 13437840, 6013092, 157136, 112171987, 9257796, 0, 140724539973632, 5451033, 0, 112171987, 0, 5451319, 0, 6006135}
        i = <optimized out>
        prev_modiff = 117
        prev_buffer = 0x4bab8e0
#34 0x00000000005b9eba in internal_condition_case (bfun=0x541120 <command_loop_1>, handlers=<optimized out>, hfun=0x532d50 <cmd_error>) at ../../src/eval.c:1309
        val = <optimized out>
        c = 0x8c9
#35 0x0000000000530fac in command_loop_2 (ignore=<optimized out>) at ../../src/keyboard.c:1099
        val = 0
#36 0x00000000005b9f48 in internal_catch (tag=<optimized out>, func=0x530f90 <command_loop_2>, arg=0) at ../../src/eval.c:1074
        val = 0
        c = 0x8c9
#37 0x0000000000530ee2 in command_loop () at ../../src/keyboard.c:1078
No locals.
#38 0x0000000000532846 in recursive_edit_1 () at ../../src/keyboard.c:684
        val = <optimized out>
#39 0x0000000000532ba5 in Frecursive_edit () at ../../src/keyboard.c:755
        buffer = <optimized out>
#40 0x0000000000413a68 in main (argc=<optimized out>, argv=<optimized out>) at ../../src/emacs.c:1605
        dummy = 140081048168216
        stack_bottom_variable = 0 '\000'
        do_initial_setlocale = <optimized out>
        dumping = <optimized out>
        skip_args = 1
        rlim = {
          rlim_cur = 8720000, 
          rlim_max = 18446744073709551615
        }
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x2 <Address 0x2 out of bounds>
You can't do that without a process to debug.
(gdb) source ~/xbt.gdb 
(gdb) xbt
"insert-file-contents" (0xfc3743a0)
"revert-buffer-insert-file-contents--default-function" (0xfc374570)
"revert-buffer--default" (0xfc374728)
"revert-buffer" (0xfc3748d8)
0x352d5a0 PVEC_COMPILED
"apply" (0xfc374bc8)
"auto-revert-handler" (0xfc374d90)
"auto-revert-notify-handler" (0xfc374f78)
"file-notify-callback" (0xfc375118)
"file-notify-handle-event" (0xfc375380)
"funcall-interactively" (0xfc375378)
"call-interactively" (0xfc375600)
"command-execute" (0xfc375798)
(gdb) p current_buffer
$1 = (struct buffer *) 0x3940870
(gdb) p *current_buffer
$2 = {
  header = {
    size = 4611686018528256071
  }, 
  name_ = 60031812, 
  filename_ = 59999236, 
  directory_ = 60034580, 
  backed_up_ = 0, 
  save_length_ = 49802, 
  auto_save_file_name_ = 60034804, 
  read_only_ = 0, 
  mark_ = 60032025, 
  local_var_alist_ = 154793331, 
  major_mode_ = 4621376, 
  mode_name_ = 14815124, 
  mode_line_format_ = 17496099, 
  header_line_format_ = 48621651, 
  keymap_ = 17934947, 
  abbrev_table_ = 53010869, 
  syntax_table_ = 20669221, 
  category_table_ = 13559829, 
  case_fold_search_ = 44448, 
  tab_width_ = 34, 
  fill_column_ = 282, 
  left_margin_ = 2, 
  auto_fill_function_ = 0, 
  downcase_table_ = 13561197, 
  upcase_table_ = 13565413, 
  case_canon_table_ = 19090613, 
  case_eqv_table_ = 19753381, 
  truncate_lines_ = 0, 
  word_wrap_ = 0, 
  ctl_arrow_ = 44448, 
  bidi_display_reordering_ = 44448, 
  bidi_paragraph_direction_ = 30480, 
  selective_display_ = 0, 
  selective_display_ellipses_ = 44448, 
  minor_modes_ = 0, 
  overwrite_mode_ = 0, 
  abbrev_mode_ = 0, 
  display_table_ = 0, 
  mark_active_ = 0, 
  enable_multibyte_characters_ = 44448, 
  buffer_file_coding_system_ = 0, 
  file_format_ = 0, 
  auto_save_file_format_ = 44448, 
  cache_long_scans_ = 44448, 
  width_table_ = 0, 
  pt_marker_ = 0, 
  begv_marker_ = 0, 
  zv_marker_ = 0, 
  point_before_scroll_ = 0, 
  file_truename_ = 142613924, 
  invisibility_spec_ = 60262899, 
  last_selected_window_ = 0, 
  display_count_ = 30, 
  left_margin_cols_ = 2, 
  right_margin_cols_ = 2, 
  left_fringe_width_ = 0, 
  right_fringe_width_ = 0, 
  fringes_outside_margins_ = 0, 
  scroll_bar_width_ = 0, 
  scroll_bar_height_ = 0, 
  vertical_scroll_bar_type_ = 44448, 
  horizontal_scroll_bar_type_ = 44448, 
  indicate_empty_lines_ = 44448, 
  indicate_buffer_boundaries_ = 0, 
  fringe_indicator_alist_ = 21556691, 
  fringe_cursor_alist_ = 18337955, 
  display_time_ = 128283843, 
  scroll_up_aggressively_ = 0, 
  scroll_down_aggressively_ = 0, 
  cursor_type_ = 44448, 
  extra_line_spacing_ = 0, 
  cursor_in_non_selected_windows_ = 44448, 
  own_text = {
    beg = 0x584cd90 "##\n# Perl object that represents an optofs filesystem\n#\n# $Id$\n##\npackage Permabit::FileSystem::Optofs;\n\nuse strict;\nuse warnings FATAL => qw(all);\nuse English qw(-no_match_vars);\n\nuse Carp qw(confess"..., 
    gpt = 12223, 
    z = 12451, 
    gpt_byte = 12223, 
    z_byte = 12451, 
    gap_size = 1245, 
    modiff = 44191, 
    chars_modiff = 44187, 
    save_modiff = 44191, 
    overlay_modiff = 3961, 
    compact = 44191, 
    beg_unchanged = 229, 
    end_unchanged = 0, 
    unchanged_modified = 44168, 
    overlay_unchanged_modified = 2746, 
    intervals = 0x7dd8ab0, 
    markers = 0x67d2e58, 
    inhibit_shrinking = false, 
    redisplay = false
  }, 
  text = 0x3940ab0, 
  next = 0x391e2f0, 
  pt = 12222, 
  pt_byte = 12222, 
  begv = 1, 
  begv_byte = 1, 
  zv = 12451, 
  zv_byte = 12451, 
  base_buffer = 0x0, 
  indirections = 0, 
  window_count = 0, 
  local_flags = '\000' <repeats 14 times>, "\001\000\001\000\000\000\001", '\000' <repeats 16 times>, "\001", '\000' <repeats 11 times>, 
  modtime = {
    tv_sec = 1461804890, 
    tv_nsec = 0
  }, 
  modtime_size = 12450, 
  auto_save_modified = 44190, 
  display_error_modiff = 0, 
  auto_save_failure_time = 0, 
  last_window_start = 12052, 
  newline_cache = 0x39447b0, 
  width_run_cache = 0x0, 
  bidi_paragraph_cache = 0x0, 
  prevent_redisplay_optimizations_p = true, 
  clip_changed = true, 
  overlays_before = 0x7b71510, 
  overlays_after = 0x925da10, 
  overlay_center = 12282, 
  undo_list_ = 170189555
}
(gdb) p $2.name_
$3 = 60031812
(gdb) xtype
Lisp_String
(gdb) xstring
$4 = (struct Lisp_String *) 0x3940340
"Optofs.pm"
(gdb) fr 3
#3  0x0000000000562b46 in buf_bytepos_to_charpos (b=0x3940870, bytepos=24673) at ../../src/marker.c:297
warning: Source file is more recent than executable.
297	  eassert (BUF_BEG_BYTE (b) <= bytepos && bytepos <= BUF_Z_BYTE (b));
(gdb) list
292	{
293	  struct Lisp_Marker *tail;
294	  ptrdiff_t best_above, best_above_byte;
295	  ptrdiff_t best_below, best_below_byte;
296	
297	  eassert (BUF_BEG_BYTE (b) <= bytepos && bytepos <= BUF_Z_BYTE (b));
298	
299	  best_above = BUF_Z (b);
300	  best_above_byte = BUF_Z_BYTE (b);
301	
(gdb) up
#4  0x000000000056c786 in Finsert_file_contents (filename=59999236, visit=<optimized out>, beg=0, end=0, replace=<optimized out>) at ../../src/fileio.c:3853
warning: Source file is more recent than executable.
3853		  same_at_end_charpos = BYTE_TO_CHAR (same_at_end);
(gdb) list
3848		  overlap = (same_at_start - BEGV_BYTE
3849			     - (same_at_end
3850				+ (! NILP (end) ? end_offset : st.st_size) - ZV_BYTE));
3851		  if (overlap > 0)
3852		    same_at_end += overlap;
3853		  same_at_end_charpos = BYTE_TO_CHAR (same_at_end);
3854	
3855		  /* Arrange to read only the nonmatching middle part of the file.  */
3856		  beg_offset += same_at_start - BEGV_BYTE;
3857		  end_offset -= ZV_BYTE - same_at_end;
(gdb) up
#5  0x00000000005bbd7c in Ffuncall (nargs=6, args=0x7ffcfc374398) at ../../src/eval.c:2709
2709		      val = (XSUBR (fun)->function.a5
(gdb) list
2704		      val = (XSUBR (fun)->function.a4
2705			     (internal_args[0], internal_args[1], internal_args[2],
2706			     internal_args[3]));
2707		      break;
2708		    case 5:
2709		      val = (XSUBR (fun)->function.a5
2710			     (internal_args[0], internal_args[1], internal_args[2],
2711			      internal_args[3], internal_args[4]));
2712		      break;
2713		    case 6:
(gdb) p internal_args[0]
$5 = 59999236
(gdb) xtype
Lisp_String
(gdb) xstring
$6 = (struct Lisp_String *) 0x3938400
"/u1/ken/rh/src/perl/lib/Permabit/FileSystem/Optofs.pm"
(gdb) p internal_args[1]
$7 = 44448
(gdb) xtype
Lisp_Symbol
(gdb) xsymbol
$8 = (struct Lisp_Symbol *) 0xcdb930
"t"
(gdb) p internal_args[2]
$9 = 0
(gdb) xtype
Lisp_Symbol
(gdb) xsymbol
$10 = (struct Lisp_Symbol *) 0xcd0b90
"nil"
(gdb) p internal_args[3]
$11 = 0
(gdb) p internal_args[4]
$12 = 44448
(gdb) 

In GNU Emacs 25.0.92.1 (x86_64-unknown-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2016-04-08 built on just-testing.permabit.com
Repository revision: 5725167b6826e2b3892297367368c50468cea83e
Windowing system distributor 'The X.Org Foundation', version 11.0.11103000
System Description:	Ubuntu 12.04.5 LTS

Configured using:
 'configure
 --prefix=/permabit/user/raeburn/dev/emacs/emacs-25/lx/Inst-5725167
 --with-x-toolkit=lucid --enable-checking CPPFLAGS=-DMARKER_DEBUG
 --without-sound'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK DBUS GSETTINGS NOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS LUCID
X11

Important settings:
  locale-coding-system: nil

Major mode: Lisp Interaction

Minor modes in effect:
  shell-dirtrack-mode: t
  rcirc-track-minor-mode: t
  diff-auto-refine-mode: t
  display-time-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  icomplete-mode: t
  desktop-save-mode: t
  global-edit-server-edit-mode: t
  jabber-activity-mode: t
  which-function-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Mark saved where search started
Mark set
Mark saved where search started
Mark set
jwiele@chat.permabit.com is now Away
Mark saved where search started
Quit
Mark saved where search started
Mark set
jwiele@chat.permabit.com is now Online

Load-path shadows:
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-muc-nick-completion hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-muc-nick-completion
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-modeline hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-modeline
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-screen hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-screen
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-socks5 hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-socks5
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-muc hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-muc
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-chatbuffer hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-chatbuffer
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-events hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-events
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-chatstates hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-chatstates
/permabit/user/raeburn/.emacs.d/elpa/fsm-0.2/fsm hides /usr/share/emacs/site-lisp/emacs-jabber/fsm
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-widget hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-widget
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-si-client hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-si-client
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-sasl hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-sasl
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ratpoison hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ratpoison
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-time hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-time
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-logon hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-logon
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-browse hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-browse
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ahc-presence hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ahc-presence
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-roster hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-roster
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/srv hides /usr/share/emacs/site-lisp/emacs-jabber/srv
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ft-client hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ft-client
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-compose hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-compose
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-search hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-search
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-feature-neg hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-feature-neg
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-sawfish hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-sawfish
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-vcard hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-vcard
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ft-server hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ft-server
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-activity hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-activity
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-export hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-export
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-conn hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-conn
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-xml hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-xml
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber hides /usr/share/emacs/site-lisp/emacs-jabber/jabber
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-util hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-util
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-festival hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-festival
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-xmessage hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-xmessage
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-iq hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-iq
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-autoloads hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-autoloads
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-vcard-avatars hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-vcard-avatars
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ft-common hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ft-common
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-menu hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-menu
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-awesome hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-awesome
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-si-server hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-si-server
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-bookmarks hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-bookmarks
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-wmii hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-wmii
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-core hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-core
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-version hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-version
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ourversion hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ourversion
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-autoaway hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-autoaway
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-keymap hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-keymap
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-register hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-register
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-avatar hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-avatar
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-presence hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-presence
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-gmail hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-gmail
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-osd hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-osd
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-alert hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-alert
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-disco hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-disco
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-chat hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-chat
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-si-common hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-si-common
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-history hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-history
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-keepalive hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-keepalive
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-truncate hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-truncate
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-ahc hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-ahc
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-private hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-private
/permabit/user/raeburn/.emacs.d/elpa/jabber-20160124.552/jabber-watch hides /usr/share/emacs/site-lisp/emacs-jabber/jabber-watch
~/permabit-emacs/kr-pdoc hides /permabit/user/raeburn/elisp/kr-pdoc
/permabit/user/raeburn/.emacs.d/elpa/systemtap-mode-20151122.1140/systemtap-mode hides /permabit/user/raeburn/elisp/systemtap-mode
/permabit/user/raeburn/.emacs.d/elpa/ssh-20120904.1342/ssh hides /permabit/user/raeburn/elisp/ssh
/permabit/user/raeburn/.emacs.d/elpa/hideshowvis-20130824.500/hideshowvis hides /permabit/user/raeburn/elisp/hideshowvis
/permabit/user/raeburn/.emacs.d/elpa/lua-mode-20151025.530/lua-mode hides /permabit/user/raeburn/elisp/lua-mode
/permabit/user/raeburn/.emacs.d/elpa/edit-server-20141231.1358/edit-server hides /permabit/user/raeburn/elisp/edit-server
~/permabit-emacs/c-fns hides /permabit/user/raeburn/elisp/c-fns
/permabit/user/raeburn/elisp/objdump/loaddefs hides /permabit/user/raeburn/dev/emacs/emacs-25/lx/Inst-5725167/share/emacs/25.0.92/lisp/loaddefs

Features:
(shadow sort mail-extr gnus-msg emacsbug sendmail compare-w grep gud
add-log misearch multi-isearch pcmpl-unix jabber-rtt goto-addr
jabber-keepalive jabber-ping sasl-digest hmac-md5 hex-util server
make-mode 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 systemtap-mode cc-awk sh-script smie executable objdump python
tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell
warnings json map smerge-mode org-element org-rmail org-mhe org-irc
org-info org-gnus org-docview doc-view subr-x jka-compr image-mode
org-bibtex bibtex org-bbdb org-w3m org org-macro org-footnote
org-pcomplete pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs find-func cal-menu calendar cal-loaddefs face-remap
autorevert filenotify rcirc vc vc-dispatcher vc-git diff-mode hideshow
time hi-lock icomplete kr-stuff smart-quotes easy-mmode kr-hesiod
hideshowvis desktop frameset browse-url edit-server kr-gnus gnus-demon
nntp gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum
gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source
utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range message rfc822
mml mml-sec epg mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win gnus
gnus-ems nnheader mail-utils iso-transl kr-dbus kr-math cc-mode cc-fonts
cc-guess cc-menus cc-cmds jabber jabber-notifications notifications
jabber-libnotify dbus jabber-awesome jabber-osd jabber-wmii
jabber-xmessage jabber-festival jabber-sawfish jabber-ratpoison
jabber-tmux jabber-screen jabber-socks5 jabber-ft-server
jabber-si-server jabber-ft-client jabber-ft-common jabber-si-client
jabber-si-common jabber-feature-neg jabber-truncate jabber-time
jabber-autoaway jabber-vcard-avatars jabber-chatstates jabber-events
jabber-vcard jabber-avatar mailcap jabber-activity jabber-watch
jabber-modeline jabber-ahc-presence jabber-ahc jabber-version
jabber-ourversion jabber-muc-nick-completion hippie-exp jabber-browse
jabber-search jabber-register jabber-roster format-spec jabber-presence
jabber-muc jabber-bookmarks jabber-private jabber-muc-nick-coloring
hexrgb jabber-widget jabber-disco wid-edit jabber-chat jabber-history
jabber-chatbuffer jabber-alert jabber-iq jabber-core jabber-console
sgml-mode ewoc jabber-keymap jabber-sasl sasl sasl-anonymous sasl-login
sasl-plain fsm jabber-logon jabber-conn srv dns starttls tls gnutls
jabber-xml xml jabber-menu jabber-util auth-source cl-seq eieio
eieio-core cl-macs gnus-util time-date mm-util help-fns mail-prsvr
password-cache kr-autoloads finder-inf ssh-autoloads info package
epg-config seq byte-opt bytecomp byte-compile cl-extra help-mode cconv
idutils derived thingatpt compile comint ansi-color ring cperl-mode
easymenu which-func imenu cc-styles cc-align cc-engine cc-vars p4 dired
kr-message-timestamp advice c-eldoc cl gv cc-defs cl-loaddefs pcase
cl-lib timeclock disp-table mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify
dynamic-setting system-font-setting font-render-setting x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 927246 106539)
 (symbols 48 53126 0)
 (miscs 40 64903 4492)
 (strings 32 133729 22635)
 (string-bytes 1 4387654)
 (vectors 16 75312)
 (vector-slots 8 1314060 22701)
 (floats 8 741 848)
 (intervals 56 36488 1898)
 (buffers 976 205)
 (heap 1024 72030 2567))





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2016-04-28 22:05 bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten Ken Raeburn
@ 2016-05-02 16:47 ` Eli Zaretskii
  2016-05-02 20:43   ` Ken Raeburn
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2016-05-02 16:47 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: 23397

> From: Ken Raeburn <raeburn@permabit.com>
> Date: Thu, 28 Apr 2016 18:05:29 -0400
> 
> I'm running the emacs-25 branch as of revision a1f221b, but with commit
> d82f24b reverted (attempting to debug #23013), and built with
> MARKER_DEBUG enabled (as Eli pointed out, probably not relevant to
> #23013) along with assertions.
> 
> I was using "git" to update a source tree while about twenty files from
> it were loaded into Emacs buffers. Auto-revert was triggered; during the
> process, Finsert_file_contents was loading a Perl file when it invoked
> BYTE_TO_CHAR:
> 
> 	  /* Don't try to reuse the same piece of text twice.  */
> 	  overlap = (same_at_start - BEGV_BYTE
> 		     - (same_at_end
> 			+ (! NILP (end) ? end_offset : st.st_size) - ZV_BYTE));
> 	  if (overlap > 0)
> 	    same_at_end += overlap;
> 	  same_at_end_charpos = BYTE_TO_CHAR (same_at_end);
> 
> ...with same_at_end well out of range (Z_BYTE=12451, same_at_end=24673).
> The reverting appears to have happened while the file was in the process
> of being updated, as st.st_size is zero.

So you are saying that the file's contents was updated between the
time we called 'fstat' at the beginning of the function and the time
we used st.st_size in the above snippet?

If so, perhaps we should call 'fstat' again each time we want to use
st.st_size, and retry from the beginning if we find a mismatch?

> I haven't managed to reproduce this so far.

You could artificially modify the value of st.st_size in the debugger,
and then see what happens.

Thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2016-05-02 16:47 ` Eli Zaretskii
@ 2016-05-02 20:43   ` Ken Raeburn
  2016-05-03 15:15     ` Eli Zaretskii
  2018-06-16 21:45     ` Noam Postavsky
  0 siblings, 2 replies; 8+ messages in thread
From: Ken Raeburn @ 2016-05-02 20:43 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23397

Eli Zaretskii <eliz@gnu.org> writes:

> So you are saying that the file's contents was updated between the
> time we called 'fstat' at the beginning of the function and the time
> we used st.st_size in the above snippet?

That's my guess. Or, more specifically, between the fstat and attempting
to go ahead and read data anyway.

But I did a few experiments with truncating the file and using a
breakpoint after the fstat to stall Emacs while I restored the file (so
the size appeared to be zero but all the data was readable), and nothing
interesting happened. That part of the function seems to be trying to
figure out if some of the beginning and end of the file are unchanged
from before, so I think maybe it also requires having some part in the
middle changed, or one version of the file being shorter than the other.
I'll run a few more experiments today to see.

> If so, perhaps we should call 'fstat' again each time we want to use
> st.st_size, and retry from the beginning if we find a mismatch?

If the file is large, and being frequently updated in small increments,
that could delay us considerably, as we restart the process multiple
times. (Some of the files I use auto-revert mode on are log files in the
tens of megabytes. Last I tried, auto-revert-tail-mode didn't cope
nicely with the case where the file got truncated and rewritten, so
reverting the whole file seems to be the way to go for now.) And if we
put a limit on the number of iterations, the last time around we'll
still need to get it right.

There's code there doing lseek and read calls; we should be able to keep
track of the last file position we read from, if that's not already
derivable from existing variables visible at that point.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2016-05-02 20:43   ` Ken Raeburn
@ 2016-05-03 15:15     ` Eli Zaretskii
  2016-05-03 21:04       ` Ken Raeburn
  2018-06-16 21:45     ` Noam Postavsky
  1 sibling, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2016-05-03 15:15 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: 23397

> From: Ken Raeburn <raeburn@permabit.com>
> Cc: 23397@debbugs.gnu.org
> Date: Mon, 02 May 2016 16:43:12 -0400
> 
> > If so, perhaps we should call 'fstat' again each time we want to use
> > st.st_size, and retry from the beginning if we find a mismatch?
> 
> If the file is large, and being frequently updated in small increments,
> that could delay us considerably, as we restart the process multiple
> times.

That is still better than aborting, right?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2016-05-03 15:15     ` Eli Zaretskii
@ 2016-05-03 21:04       ` Ken Raeburn
  0 siblings, 0 replies; 8+ messages in thread
From: Ken Raeburn @ 2016-05-03 21:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 23397


Eli Zaretskii <eliz@gnu.org> writes:
> That is still better than aborting, right?

Of course. But it seems to me we should have the information we need to
keep the Emacs processing self-consistent whether we iterate or not.
Other code in the function already clearly expects that the number of
bytes we can read may be different from st_size.

(Arguably, in case we're trying to preserve point or markers in a later
part of the file than might have been rewritten so far, it might be
desirable for insert-file-contents to restart or pause briefly and retry
reading more content if it detects a change, but I think that's mostly a
separate question.)

I've finally reproduced the problem. A key issue was that the whole
block containing the failing code would be skipped by the conditional
below if the coding system were "undecided", which seems to be the norm
in my testing with "emacs -Q", but not in my working environment for
whatever reason; maybe one of the minor modes I've loaded is setting a
more specific coding system.

  if (!NILP (replace)
      && BEGV < ZV
      && (NILP (coding_system)
	  || ! CODING_REQUIRE_DECODING (&coding)))

If the coding system is "undecided-unix", we enter this block, and I can
get it to blow up.

Recipe:

Get two similar files differing in the middle; I started with emacs-25
charset.h:

    cp .../src/charset.h file.h
    sed -e 400,499s/a/b/g < file.h > file2.h

Set a breakpoint just after the fstat call in Finsert_file_contents,
run emacs -Q, and read in file.h (continuing whenever the breakpoint is
hit). Turn on auto-revert-mode in the buffer.

Set the coding system with "C-x RET f" to "undecided-unix". That marks
the buffer as modified, so clear that by saving the file.

Copy file2.h over file.h, and when the breakpoint is triggered, change
st.st_size to zero, to simulate rereading before the file overwriting
has finished, and continue. My debugging printfs show that an
out-of-range same_at_end is generated as in my original case:

    (gdb) c
    Continuing.
    Finsert_file_contents:3871: same_at_start=13993 same_at_end=17747
         st_size=0 ZV=19498
      => overlap=15743
      => new same_at_end=33490

    ../../src/marker.c:297: Emacs fatal error: assertion failed: BUF_BEG_BYTE (b) <= bytepos && bytepos <= BUF_Z_BYTE (b)





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2016-05-02 20:43   ` Ken Raeburn
  2016-05-03 15:15     ` Eli Zaretskii
@ 2018-06-16 21:45     ` Noam Postavsky
  2018-06-17  5:36       ` Eli Zaretskii
  2020-09-05 14:03       ` Lars Ingebrigtsen
  1 sibling, 2 replies; 8+ messages in thread
From: Noam Postavsky @ 2018-06-16 21:45 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: 23397

found 23397 26.1
tags 23397 + confirmed
quit

Ken Raeburn <raeburn@permabit.com> writes:

> There's code there doing lseek and read calls; we should be able to keep
> track of the last file position we read from, if that's not already
> derivable from existing variables visible at that point.

This seems to fix the scenario you gave in #17.  I don't quite
understand what the overlap expression is trying to compute though.

--- i/src/fileio.c
+++ w/src/fileio.c
@@ -3849,6 +3849,8 @@ because (1) it preserves some marker positions and (2) it puts less data
 	  goto handled;
 	}
 
+      off_t file_end_pos = st.st_size;
+
       /* Count how many chars at the end of the file
 	 match the text at the end of the buffer.  But, if we have
 	 already found that decoding is necessary, don't waste time.  */
@@ -3879,6 +3881,8 @@ because (1) it preserves some marker positions and (2) it puts less data
 	      total_read += nread;
 	    }
 
+          file_end_pos = max (curpos - trial + total_read, file_end_pos);
+
 	  /* Scan this bufferful from the end, comparing with
 	     the Emacs buffer.  */
 	  bufpos = total_read;
@@ -3931,7 +3935,7 @@ because (1) it preserves some marker positions and (2) it puts less data
 	  /* Don't try to reuse the same piece of text twice.  */
 	  overlap = (same_at_start - BEGV_BYTE
 		     - (same_at_end
-			+ (! NILP (end) ? end_offset : st.st_size) - ZV_BYTE));
+			+ (! NILP (end) ? end_offset : file_end_pos) - ZV_BYTE));
 	  if (overlap > 0)
 	    same_at_end += overlap;
 	  same_at_end_charpos = BYTE_TO_CHAR (same_at_end);







^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2018-06-16 21:45     ` Noam Postavsky
@ 2018-06-17  5:36       ` Eli Zaretskii
  2020-09-05 14:03       ` Lars Ingebrigtsen
  1 sibling, 0 replies; 8+ messages in thread
From: Eli Zaretskii @ 2018-06-17  5:36 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: raeburn, 23397

> From: Noam Postavsky <npostavs@gmail.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  23397@debbugs.gnu.org
> Date: Sat, 16 Jun 2018 17:45:36 -0400
> 
> I don't quite understand what the overlap expression is trying to
> compute though.

It prevents us from re-using the same portion of buffer text for
matching both at start and at end of the file.  This could happen,
e.g., with buffers whose contents is the same character, and a file
whose contents is mostly the same, but larger, and with a few
different characters in the middle.  Then the "same_at_end" loop could
inadvertently match a part of the buffer that was already matched by
the "same_at_start" loop.

The overlap expression computes the portion of the buffer that was
matched by both "same_at_start" and "same_at_end" loops.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten
  2018-06-16 21:45     ` Noam Postavsky
  2018-06-17  5:36       ` Eli Zaretskii
@ 2020-09-05 14:03       ` Lars Ingebrigtsen
  1 sibling, 0 replies; 8+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-05 14:03 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: Ken Raeburn, 23397

Noam Postavsky <npostavs@gmail.com> writes:

> This seems to fix the scenario you gave in #17.  I don't quite
> understand what the overlap expression is trying to compute though.

[...]

> +      off_t file_end_pos = st.st_size;

[etc]

Eli Zaretskii <eliz@gnu.org> writes:

>> I don't quite understand what the overlap expression is trying to
>> compute though.
>
> It prevents us from re-using the same portion of buffer text for
> matching both at start and at end of the file.  This could happen,
> e.g., with buffers whose contents is the same character, and a file
> whose contents is mostly the same, but larger, and with a few
> different characters in the middle.  Then the "same_at_end" loop could
> inadvertently match a part of the buffer that was already matched by
> the "same_at_start" loop.
>
> The overlap expression computes the portion of the buffer that was
> matched by both "same_at_start" and "same_at_end" loops.

This was two years ago, but the patch doesn't seem to be applied?  It
was a rather obscure timing-related (but serious) bug.

Noam, did Eli's explanation help?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-09-05 14:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-28 22:05 bug#23397: 25.0.92; assertion failure auto-reverting a file being overwritten Ken Raeburn
2016-05-02 16:47 ` Eli Zaretskii
2016-05-02 20:43   ` Ken Raeburn
2016-05-03 15:15     ` Eli Zaretskii
2016-05-03 21:04       ` Ken Raeburn
2018-06-16 21:45     ` Noam Postavsky
2018-06-17  5:36       ` Eli Zaretskii
2020-09-05 14:03       ` Lars Ingebrigtsen

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).