Hi, I have the following file: File ~/.emacs.d/trans-regions-bug.el: (with-temp-buffer (insert (propertize "a" 'face 'font-lock-variable-name-face)) (insert ":\n") (insert (propertize "b" 'face 'font-lock-variable-name-face)) (insert ": \x2113\x2080\n") (insert (propertize "v" 'face 'font-lock-variable-name-face)) (insert ": scaling\n") ;; Move last line to the beginning (transpose-regions 1 1 10 21)) End of file ~/.emacs.d/trans-regions-bug.el: After building Emacs as described in the INSTALL file, the following command crashes Emacs: src/emacs -Q --batch -l ~/.emacs.d/trans-regions-bug.el The following appears: Fatal error 11: Segmentation fault See below for debugging information. Please find attached a patch to transpose-regions with added tests. (The patch intends to fix typos: makes sure lengths in bytes and characters are not confused. One case (likely for optimization only) has been removed, seemed too much trouble to get it right.) gdb session with non-session specific material (help, copyright...) removed: Current directory is /home/gabor/src/build/emacs-29.3/src/ GNU gdb (Debian 13.1-3) 13.1 Reading symbols from /home/gabor/src/build/emacs-29.3/src/emacs... 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 TERM = dumb Breakpoint 2 at 0x13a480: file ../../../emacs/src/xterm.c, line 26136. .gdbinit:1: Error in sourced command file: /home/gabor/src/build/emacs-29.3/../../emacs/src/.gdbinit:1375: Error in sourced command file: Scripting in the "Python" language is not supported in this copy of GDB. Downloading source file /home/gabor/src/build/emacs-29.3/src/... (gdb) run Starting program: /home/gabor/src/build/emacs-29.3/src/emacs -Q --batch -l \~/.emacs.d/trans-regions-bug.el Downloading separate debug info for /lib64/ld-linux-x86-64.so.2... Downloading separate debug info for system-supplied DSO at 0x7ffff7fc9000... Downloading separate debug info for /lib/x86_64-linux-gnu/libdbus-1.so.3... Downloading separate debug info for /lib/x86_64-linux-gnu/libc.so.6... [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Downloading separate debug info for /usr/lib/x86_64-linux-gnu/libfribidi.so.0... Program received signal SIGSEGV, Segmentation fault. 0x00005555557c47b3 in graft_intervals_into_buffer (source=source@entry=0x555555e2b568, position=position@entry=12, length=length@entry=13, buffer=0x555555ed1170, inherit=inherit@entry=false) at ../../../emacs/src/intervals.c:1669 1669 if (LENGTH (over) - over_used < LENGTH (under)) (gdb) bt full #0 0x00005555557c47b3 in graft_intervals_into_buffer (source=source@entry=0x555555e2b568, position=position@entry=12, length=length@entry=13, buffer=0x555555ed1170, inherit=inherit@entry=false) at ../../../emacs/src/intervals.c:1669 tree = under = 0x0 over = 0x555555e2b5a0 this = over_used = 0 #1 0x000055555575194b in Ftranspose_regions (startr1=, endr1=, startr2=, endr2=, leave_markers=0x0) at ../../../emacs/src/editfns.c:4751 sa_avail = sa_count = start1 = 1 end1 = 1 start2 = 10 end2 = 21 start1_byte = start2_byte = 14 len1_byte = 0 len2_byte = 11 end2_byte = 25 gap = len1 = 0 len_mid = 13 len2 = 11 start1_addr = start2_addr = temp = 0x7fffffffd830 "v: scaling\nUUU" cur_intv = tmp_interval1 = 0x0 tmp_interval_mid = 0x555555e2b568 tmp_interval2 = 0x555555e2b648 tmp_interval3 = buf = #2 0x0000555555760147 in eval_sub (form=) at ../../../emacs/src/eval.c:2516 i = maxargs = 5 args_left = 0x0 numargs = 4 original_fun = original_args = 0x555555eb48f3 count = fun = val = funcar = argvals = {0x6, 0x6, 0x2a, 0x56, 0x0, 0x1000000010, 0x1000000003, 0xe00000010} retry = #3 0x000055555576043d in Fprogn (body=0x0) at ../../../emacs/src/eval.c:436 form = val = 0x0 #4 0x000055555575fef7 in eval_sub (form=) at ../../../emacs/src/eval.c:2453 args_left = 0x555555eb49b3 numargs = 7 original_fun = 0xd650 original_args = 0x555555eb49b3 count = fun = val = funcar = argvals = {0x555555eae440, 0x7ffff1a7e708, 0x7ffff1a7e708, 0x555555d7e780 , 0x1, 0x555555748739 , 0x2aaa9bdc2b50, 0x555555748779 } retry = #5 0x0000555555762167 in Funwind_protect (args=0x555555eb4a73) at ../../../emacs/src/lisp.h:1523 val = count = #6 0x000055555575fef7 in eval_sub (form=) at ../../../emacs/src/eval.c:2453 args_left = 0x555555eb4a73 numargs = 2 original_fun = 0x2aaa9bd25680 original_args = 0x555555eb4a73 count = fun = val = funcar = argvals = {0x555555ed1175, 0x0, 0x7fffffffdbc0, 0x30, 0x2, 0x7fffffffdb50, 0x460, 0x55555576164c } retry = #7 0x000055555576043d in Fprogn (body=0x0, body@entry=0x555555eb4bd3) at ../../../emacs/src/eval.c:436 form = val = 0x555555ed1175 #8 0x000055555574cae7 in Fsave_current_buffer (args=0x555555eb4bd3) at ../../../emacs/src/editfns.c:875 count = #9 0x000055555575fef7 in eval_sub (form=) at ../../../emacs/src/eval.c:2453 args_left = 0x555555eb4bd3 numargs = 2 original_fun = 0x2aaa9bd255c0 original_args = 0x555555eb4bd3 count = fun = val = funcar = argvals = {0x7ffff1a7e70d, 0x55555575c1f2 , 0x555555eb4000, 0x55555576a3a4 , 0xb, 0xd500, 0x0, 0x7ffff1a7e70d} retry = #10 0x0000555555761be5 in Fprogn (body=0x0) at ../../../emacs/src/eval.c:436 form = val = 0x0 val = form = #11 Flet (args=0x555555eb40a3) at ../../../emacs/src/eval.c:1026 temps = 0x7fffffffdc80 tem = lexenv = 0x0 elt = count = { bytes = 1120 } argnum = sa_avail = sa_count = { bytes = 1120 } varlist = varlist_len = nvars = #12 0x000055555575fef7 in eval_sub (form=) at ../../../emacs/src/eval.c:2453 args_left = 0x555555eb40a3 numargs = 2 original_fun = 0xa560 original_args = 0x555555eb40a3 count = fun = val = funcar = argvals = {0x0, 0x555555786954 , 0x29, 0x1, 0x2aaa9c0d7690, 0x555555eb4ae3, 0x30, 0x7fffffffde00} retry = #13 0x000055555578e869 in readevalloop (readcharfun=readcharfun@entry=0x555555ec6f8d, infile0=infile0@entry=0x0, sourcename=sourcename@entry=0x555555ecfd14, printflag=printflag@entry=false, unibyte=unibyte@entry=0x0, readfun=readfun@entry=0x0, start=0x0, end=) at ../../../emacs/src/lread.c:2348 count1 = c = val = 0x555555eb4e13 count = b = continue_reading_p = true lex_bound = whole_buffer = true first_sexp = macroexpand = 0x2aaa9c0d7690 #14 0x000055555578f967 in Feval_buffer (buffer=, printflag=0x0, filename=0x555555ecfd14, unibyte=0x0, do_allow_print=) at ../../../emacs/src/lread.c:2421 count = tem = buf = 0x555555ec6f8d #15 0x00005555557a4e92 in exec_byte_code (fun=, args_template=, nargs=, args=) at ../../../emacs/src/bytecode.c:809 call_nargs = 5 call_fun = count1 = template = val = call_args = 0x7ffff11ff290 original_fun = 0x2aaa9bfe9d40 bytecode = op = 5 type = targets = {0x5555555a4e6a , 0x5555557a527d , 0x5555557a5278 , 0x5555557a5273 , 0x5555557a4c8e , 0x5555557a4c8e , 0x5555557a523f , 0x5555557a520b , 0x5555557a59e1 , 0x5555557a59dc , 0x5555557a59d7 , 0x5555557a59d2 , 0x5555557a4cbd , 0x5555557a4cc0 , 0x5555557a59c4 , 0x5555557a59e6 , 0x5555557a5a71 , 0x5555557a5a6c , 0x5555557a5a67 , 0x5555557a5a62 , 0x5555557a4c1a , 0x5555557a4c20 , 0x5555557a5a46 , 0x5555557a5a54 , 0x5555557a59f9 , 0x5555557a59f4 , 0x5555557a5fb5 , 0x5555557a5fb0 , 0x5555557a4f1a , 0x5555557a4f20 , 0x5555557a5a0c , 0x5555557a59fe , 0x5555557a5f8f , 0x5555557a5f8a , 0x5555557a5f85 , 0x5555557a5f80 , 0x5555557a4d2b , 0x5555557a4d30 , 0x5555557a5fa2 , 0x5555557a5f94 , 0x5555557a5f5f , 0x5555557a5f5a , 0x5555557a5f55 , 0x5555557a5f50 , 0x5555557a4f63 , 0x5555557a4f68 , 0x5555557a5f72 , 0x5555557a5f64 , 0x5555557a5bc9 , 0x5555557a5bf6 , 0x5555557a5c60 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a6ddf , 0x5555557a6d73 , 0x5555557a6d37 , 0x5555557a6cfb , 0x5555557a6cbd , 0x5555557a5ae3 , 0x5555557a5aaa , 0x5555557a6c92 , 0x5555557a5b95 , 0x5555557a5a76 , 0x5555557a6c59 , 0x5555557a6c30 , 0x5555557a6bf7 , 0x5555557a6bc1 , 0x5555557a6b87 , 0x5555557a6b22 , 0x5555557a6ab4 , 0x5555557a6a3f , 0x5555557a6a16 , 0x5555557a69ed , 0x5555557a69b4 , 0x5555557a697b , 0x5555557a6942 , 0x5555557a6905 , 0x5555557a68d2 , 0x5555557a689f , 0x5555557a686c , 0x5555557a67db , 0x5555557a6786 , 0x5555557a673c , 0x5555557a66ef , 0x5555557a66a2 , 0x5555557a6655 , 0x5555557a6608 , 0x5555557a65b7 , 0x5555557a6561 , 0x5555557a6510 , 0x5555557a64bf , 0x5555557a646e , 0x5555557a641c , 0x5555557a6340 , 0x5555557a4fa9 , 0x5555557a6317 , 0x5555557a62e9 , 0x5555557a626a , 0x5555557a6227 , 0x5555557a61fe , 0x5555557a61d3 , 0x5555557a61a8 , 0x5555557a6175 , 0x5555557a614a , 0x5555555a4e6a , 0x5555557a611f , 0x5555557a60f4 , 0x5555557a60c9 , 0x5555557a609e , 0x5555557a6073 , 0x5555557a604a , 0x5555557a4fa9 , 0x5555555a4e6a , 0x5555557a600c , 0x5555557a5fe3 , 0x5555557a5fba , 0x5555557a58cb , 0x5555557a5892 , 0x5555557a5869 , 0x5555557a5840 , 0x5555557a5807 , 0x5555557a57ce , 0x5555557a5795 , 0x5555557a576a , 0x5555557a5741 , 0x5555555a4e6a , 0x5555557a5d50 , 0x5555557a5ee1 , 0x5555557a598a , 0x5555557a5ea7 , 0x5555557a5e70 , 0x5555557a5e39 , 0x5555557a5da2 , 0x5555557a5d84 , 0x5555557a5a1a , 0x5555557a5d32 , 0x5555557a5cd6 , 0x5555557a5ca8 , 0x5555557a5c68 , 0x5555557a6efb , 0x5555557a6ebe , 0x5555557a6e7b , 0x5555557a6e25 , 0x5555555a4e6a , 0x5555557a5704 , 0x5555557a56db , 0x5555557a56b2 , 0x5555557a5689 , 0x5555557a5660 , 0x5555557a5627 , 0x5555557a55ee , 0x5555557a55b5 , 0x5555557a557c , 0x5555557a552f , 0x5555557a54f6 , 0x5555557a54bd , 0x5555557a5497 , 0x5555557a543c , 0x5555557a53e1 , 0x5555557a53ae , 0x5555557a537b , 0x5555557a534b , 0x5555557a63cb , 0x5555557a6383 , 0x5555557a52e5 , 0x5555557a5282 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a6b4b , 0x5555557a6830 , 0x5555557a62ad , 0x5555557a51cf , 0x5555557a5193 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a5164 , 0x5555557a5934 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a5904 } quitcounter = 1 '\001' bc = 0x555555cf3e70 top = pc = bytestr = vector = maxdepth = const_length = bytestr_length = vectorp = 0x7ffff1d685c8 max_stack = frame_base = fp = bytestr_data = rest = mandatory = nonrest = pushedargs = result = #16 0x000055555575c626 in Ffuncall (nargs=nargs@entry=5, args=args@entry=0x7fffffffe040) at ../../../emacs/src/eval.c:2999 count = val = #17 0x000055555578f5ed in call4 (arg4=0x30, arg3=, arg2=0x555555ecfd14, arg1=, fn=) at ../../../emacs/src/lisp.h:3270 No locals. #18 Fload (file=0x555555ecfa34, noerror=, nomessage=, nosuffix=, must_suffix=) at ../../../emacs/src/lread.c:1484 val = stream = 0x0 fd = 4 fd_index = count = found = 0x555555ecfd14 efound = hist_file_name = 0x555555ecfd14 newer = false compiled = false handler = fmode = 0x555555834a9b "r" version = no_native = is_module = false is_native_elisp = false found_eff = is_elc = false input = { stream = 0x555555ecfa34, lookahead = 96 '`', buf = "\001\000\000" } #19 0x00005555557a4e92 in exec_byte_code (fun=, args_template=, nargs=, args=) at ../../../emacs/src/bytecode.c:809 call_nargs = 3 call_fun = count1 = template = val = call_args = 0x7ffff11ff1b0 original_fun = 0xa9b0 bytecode = op = 3 type = targets = {0x5555555a4e6a , 0x5555557a527d , 0x5555557a5278 , 0x5555557a5273 , 0x5555557a4c8e , 0x5555557a4c8e , 0x5555557a523f , 0x5555557a520b , 0x5555557a59e1 , 0x5555557a59dc , 0x5555557a59d7 , 0x5555557a59d2 , 0x5555557a4cbd , 0x5555557a4cc0 , 0x5555557a59c4 , 0x5555557a59e6 , 0x5555557a5a71 , 0x5555557a5a6c , 0x5555557a5a67 , 0x5555557a5a62 , 0x5555557a4c1a , 0x5555557a4c20 , 0x5555557a5a46 , 0x5555557a5a54 , 0x5555557a59f9 , 0x5555557a59f4 , 0x5555557a5fb5 , 0x5555557a5fb0 , 0x5555557a4f1a , 0x5555557a4f20 , 0x5555557a5a0c , 0x5555557a59fe , 0x5555557a5f8f , 0x5555557a5f8a , 0x5555557a5f85 , 0x5555557a5f80 , 0x5555557a4d2b , 0x5555557a4d30 , 0x5555557a5fa2 , 0x5555557a5f94 , 0x5555557a5f5f , 0x5555557a5f5a , 0x5555557a5f55 , 0x5555557a5f50 , 0x5555557a4f63 , 0x5555557a4f68 , 0x5555557a5f72 , 0x5555557a5f64 , 0x5555557a5bc9 , 0x5555557a5bf6 , 0x5555557a5c60 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a6ddf , 0x5555557a6d73 , 0x5555557a6d37 , 0x5555557a6cfb , 0x5555557a6cbd , 0x5555557a5ae3 , 0x5555557a5aaa , 0x5555557a6c92 , 0x5555557a5b95 , 0x5555557a5a76 , 0x5555557a6c59 , 0x5555557a6c30 , 0x5555557a6bf7 , 0x5555557a6bc1 , 0x5555557a6b87 , 0x5555557a6b22 , 0x5555557a6ab4 , 0x5555557a6a3f , 0x5555557a6a16 , 0x5555557a69ed , 0x5555557a69b4 , 0x5555557a697b , 0x5555557a6942 , 0x5555557a6905 , 0x5555557a68d2 , 0x5555557a689f , 0x5555557a686c , 0x5555557a67db , 0x5555557a6786 , 0x5555557a673c , 0x5555557a66ef , 0x5555557a66a2 , 0x5555557a6655 , 0x5555557a6608 , 0x5555557a65b7 , 0x5555557a6561 , 0x5555557a6510 , 0x5555557a64bf , 0x5555557a646e , 0x5555557a641c , 0x5555557a6340 , 0x5555557a4fa9 , 0x5555557a6317 , 0x5555557a62e9 , 0x5555557a626a , 0x5555557a6227 , 0x5555557a61fe , 0x5555557a61d3 , 0x5555557a61a8 , 0x5555557a6175 , 0x5555557a614a , 0x5555555a4e6a , 0x5555557a611f , 0x5555557a60f4 , 0x5555557a60c9 , 0x5555557a609e , 0x5555557a6073 , 0x5555557a604a , 0x5555557a4fa9 , 0x5555555a4e6a , 0x5555557a600c , 0x5555557a5fe3 , 0x5555557a5fba , 0x5555557a58cb , 0x5555557a5892 , 0x5555557a5869 , 0x5555557a5840 , 0x5555557a5807 , 0x5555557a57ce , 0x5555557a5795 , 0x5555557a576a , 0x5555557a5741 , 0x5555555a4e6a , 0x5555557a5d50 , 0x5555557a5ee1 , 0x5555557a598a , 0x5555557a5ea7 , 0x5555557a5e70 , 0x5555557a5e39 , 0x5555557a5da2 , 0x5555557a5d84 , 0x5555557a5a1a , 0x5555557a5d32 , 0x5555557a5cd6 , 0x5555557a5ca8 , 0x5555557a5c68 , 0x5555557a6efb , 0x5555557a6ebe , 0x5555557a6e7b , 0x5555557a6e25 , 0x5555555a4e6a , 0x5555557a5704 , 0x5555557a56db , 0x5555557a56b2 , 0x5555557a5689 , 0x5555557a5660 , 0x5555557a5627 , 0x5555557a55ee , 0x5555557a55b5 , 0x5555557a557c , 0x5555557a552f , 0x5555557a54f6 , 0x5555557a54bd , 0x5555557a5497 , 0x5555557a543c , 0x5555557a53e1 , 0x5555557a53ae , 0x5555557a537b , 0x5555557a534b , 0x5555557a63cb , 0x5555557a6383 , 0x5555557a52e5 , 0x5555557a5282 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a6b4b , 0x5555557a6830 , 0x5555557a62ad , 0x5555557a51cf , 0x5555557a5193 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a5164 , 0x5555557a5934 , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555555a4e6a , 0x5555557a5904 } quitcounter = 38 '&' bc = 0x555555cf3e70 top = pc = bytestr = vector = maxdepth = const_length = bytestr_length = vectorp = 0x7ffff1d5bac0 max_stack = frame_base = fp = bytestr_data = rest = mandatory = nonrest = pushedargs = result = #20 0x000055555576164c in apply_lambda (fun=fun@entry=0x7ffff1d4384d, args=, count=count@entry=...) at ../../../emacs/src/eval.c:3107 arg_vector = 0x7fffffffe1a0 tem = sa_avail = sa_count = { bytes = 160 } numargs = 0 args_left = 0x0 #21 0x000055555575fc03 in eval_sub (form=form@entry=0x7ffff2206efb) at ../../../emacs/src/eval.c:2592 original_fun = 0x2aaa9bfc5098 original_args = 0x0 count = fun = val = funcar = argvals = {0x12, 0xfffffffffffffb90, 0x90, 0x5, 0x7fffffffe960, 0x7ffff57589fa , 0x60, 0x555555e8e623} retry = #22 0x0000555555762706 in Feval (form=0x7ffff2206efb, lexical=) at ../../../emacs/src/eval.c:2365 count = #23 0x000055555575ad37 in internal_condition_case (bfun=bfun@entry=0x5555556ced40 , handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556d5f90 ) at ../../../emacs/src/eval.c:1474 val = c = 0x555555e931d0 #24 0x00005555556cf686 in top_level_1 (ignore=ignore@entry=0x0) at ../../../emacs/src/keyboard.c:1150 No locals. #25 0x000055555575ac91 in internal_catch (tag=tag@entry=0x10080, func=func@entry=0x5555556cf660 , arg=arg@entry=0x0) at ../../../emacs/src/eval.c:1197 val = c = 0x555555e74440 #26 0x00005555556cecbf in command_loop () at ../../../emacs/src/keyboard.c:1110 No locals. #27 0x00005555556d5b41 in recursive_edit_1 () at ../../../emacs/src/keyboard.c:720 count = val = #28 0x00005555556d5ec0 in Frecursive_edit () at ../../../emacs/src/keyboard.c:803 count = buffer = #29 0x00005555555a8977 in main (argc=5, argv=0x7fffffffe628) at ../../../emacs/src/emacs.c:2521 stack_bottom_variable = 0x0 no_loadup = false junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 original_pwd = dump_mode = skip_args = 1 temacs = 0x0 attempt_load_pdump = only_version = false rlim = { rlim_cur = 10022912, rlim_max = 18446744073709551615 } lc_all = sockfd = -1 module_assertions = Lisp Backtrace: "transpose-regions" (0xffffd970) "progn" (0xffffda30) "unwind-protect" (0xffffdb00) "save-current-buffer" (0xffffdbf0) "let" (0xffffdd20) "eval-buffer" (0xf11ff290) "load-with-code-conversion" (0xffffe048) "load" (0xf11ff1b0) "command-line-1" (0xf11ff0b8) "command-line" (0xf11ff040) "normal-top-level" (0xffffe1a0) (gdb) quit Debugger finished End of gdb session. In GNU Emacs 29.3.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.16.0) of 2024-04-01 built on gabor Repository revision: 946d4aad1dfb244352dfd0845a8bc3078fe9bca4 Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12101007 System Description: Devuan GNU/Linux 5 (daedalus) Configured using: 'configure --without-libsystemd --without-pop --without-sound --without-gconf --without-mailutils --without-native-compilation --with-cairo --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: hu_HU.UTF-8 locale-coding-system: utf-8-unix Best wishes, Gábor