I can reliably get a crash without changing coding systems: (progn (buffer-swap-text (generate-new-buffer "test")) (insert (make-string 128 ?a))) (progn (buffer-swap-text (generate-new-buffer "test")) (garbage-collect)) All the crashes I've seen with tar-mode or buffer-swap-text end up hitting the same call to abort in r_re_alloc(). Backtraces for the above lisp fragments (same order): (gdb) bt #0 w32_abort () at w32fns.c:7279 #1 0x01137df8 in r_re_alloc (ptr=0x2a27008, size=2129) at ralloc.c:1028 #2 0x0106ed4e in enlarge_buffer_text (b=0x2a27000, delta=2108) at buffer.c:5065 #3 0x010fe25e in make_gap_larger (nbytes_added=2108) at insdel.c:526 #4 0x010ff949 in insert_from_string_1 (string=47277539, pos=0, pos_byte=0, nchars=128, nbytes=128, inherit=0, before_markers=44199944) at insdel.c:1107 #5 0x01100da6 in insert_from_string (string=47277539, pos=0, pos_byte=0, length=128, length_byte=0, inherit=44199944) at insdel.c:1048 #6 0x0108d79c in general_insert_function (insert_func=0x1100fac , insert_from_string_func=0x1100d3b , inherit=0, nargs=1, args=0x82f3e0) at editfns.c:2184 #7 0x0108d86c in Finsert (nargs=0, args=0x0) at editfns.c:2228 #8 0x0100b364 in Feval (form=19643352) at eval.c:2378 #9 0x0100b632 in Fprogn (args=0) at eval.c:449 #10 0x0100b42b in Feval (form=18325836) at eval.c:2322 #11 0x0100be38 in Ffuncall (nargs=2, args=0x1179ef0) at eval.c:3044 #12 0x01111e63 in Fbyte_code (bytestr=0, vector=8582708, maxdepth=1) at bytecode.c:678 #13 0x0100b722 in funcall_lambda (fun=18972820, nargs=1, arg_vector=0x82f774) at eval.c:3231 #14 0x0100bc17 in Ffuncall (nargs=2, args=0x1218094) at eval.c:3101 #15 0x01111e63 in Fbyte_code (bytestr=0, vector=8583024, maxdepth=1) at bytecode.c:678 #16 0x0100b722 in funcall_lambda (fun=18973068, nargs=1, arg_vector=0x82f8b4) at eval.c:3231 #17 0x0100bc17 in Ffuncall (nargs=2, args=0x121818c) at eval.c:3101 #18 0x01111e63 in Fbyte_code (bytestr=0, vector=8583344, maxdepth=1) at bytecode.c:678 #19 0x0100b722 in funcall_lambda (fun=18971276, nargs=0, arg_vector=0x82fa24) at eval.c:3231 #20 0x0100bc17 in Ffuncall (nargs=1, args=0x1217a8c) at eval.c:3101 #21 0x0100d37f in apply1 (fn=53934297, arg=0) at eval.c:2785 #22 0x0110fdc5 in Fcall_interactively (function=53934297, record_flag=44161025, keys=44194564) at callint.c:389 #23 0x0100be11 in Ffuncall (nargs=4, args=0x12bf728) at eval.c:3050 #24 0x0100bfe9 in call3 (fn=0, arg1=0, arg2=0, arg3=0) at eval.c:2870 #25 0x01056cb9 in Fcommand_execute (cmd=53934297, record_flag=44161025, keys=0, special=44161025) at keyboard.c:10333 #26 0x0105e4e5 in command_loop_1 () at keyboard.c:1880 #27 0x01009f9e in internal_condition_case (bfun=0x105e180 , handlers=44224777, hfun=0x105772c ) at eval.c:1511 #28 0x01051cba in command_loop_2 () at keyboard.c:1338 #29 0x01009ed3 in internal_catch (tag=0, func=0x1051c97 , arg=44161025) at eval.c:1247 #30 0x01051ac7 in command_loop () at keyboard.c:1317 #31 0x01051b60 in recursive_edit_1 () at keyboard.c:942 #32 0x01051c81 in Frecursive_edit () at keyboard.c:1004 #33 0x01002e36 in main (argc=1, argv=0xa427b8) at emacs.c:1777 Lisp Backtrace: "insert" (0x82f3e0) "progn" (0x82f518) "eval" (0x82f638) "eval-last-sexp-1" (0x82f774) "eval-last-sexp" (0x82f8b4) "eval-print-last-sexp" (0x82fa24) "call-interactively" (0x82fc04) (gdb) (gdb) bt #0 w32_abort () at w32fns.c:7279 #1 0x01137df8 in r_re_alloc (ptr=0x2d56008, size=100) at ralloc.c:1028 #2 0x0106ed4e in enlarge_buffer_text (b=0x2d56000, delta=-1979) at buffer.c:5065 #3 0x010fe38a in make_gap_smaller (nbytes_removed=-1979) at insdel.c:600 #4 0x01065cab in Fgarbage_collect () at alloc.c:5022 #5 0x0100b383 in Feval (form=18331376) at eval.c:2372 #6 0x0100b632 in Fprogn (args=0) at eval.c:449 #7 0x0100b42b in Feval (form=18325836) at eval.c:2322 #8 0x0100be38 in Ffuncall (nargs=2, args=0x1179ef0) at eval.c:3044 #9 0x01111e63 in Fbyte_code (bytestr=0, vector=8582708, maxdepth=1) at bytecode.c:678 #10 0x0100b722 in funcall_lambda (fun=18972820, nargs=1, arg_vector=0x82f774) at eval.c:3231 #11 0x0100bc17 in Ffuncall (nargs=2, args=0x1218094) at eval.c:3101 #12 0x01111e63 in Fbyte_code (bytestr=0, vector=8583024, maxdepth=1) at bytecode.c:678 #13 0x0100b722 in funcall_lambda (fun=18973068, nargs=1, arg_vector=0x82f8b4) at eval.c:3231 #14 0x0100bc17 in Ffuncall (nargs=2, args=0x121818c) at eval.c:3101 #15 0x01111e63 in Fbyte_code (bytestr=0, vector=8583344, maxdepth=1) at bytecode.c:678 #16 0x0100b722 in funcall_lambda (fun=18971276, nargs=0, arg_vector=0x82fa24) at eval.c:3231 #17 0x0100bc17 in Ffuncall (nargs=1, args=0x1217a8c) at eval.c:3101 #18 0x0100d37f in apply1 (fn=53934297, arg=0) at eval.c:2785 #19 0x0110fdc5 in Fcall_interactively (function=53934297, record_flag=44161025, keys=44194564) at callint.c:389 #20 0x0100be11 in Ffuncall (nargs=4, args=0x12bf728) at eval.c:3050 #21 0x0100bfe9 in call3 (fn=0, arg1=0, arg2=0, arg3=0) at eval.c:2870 #22 0x01056cb9 in Fcommand_execute (cmd=53934297, record_flag=44161025, keys=0, special=44161025) at keyboard.c:10333 #23 0x0105e4e5 in command_loop_1 () at keyboard.c:1880 #24 0x01009f9e in internal_condition_case (bfun=0x105e180 , handlers=44224777, hfun=0x105772c ) at eval.c:1511 #25 0x01051cba in command_loop_2 () at keyboard.c:1338 #26 0x01009ed3 in internal_catch (tag=0, func=0x1051c97 , arg=44161025) at eval.c:1247 #27 0x01051ac7 in command_loop () at keyboard.c:1317 #28 0x01051b60 in recursive_edit_1 () at keyboard.c:942 #29 0x01051c81 in Frecursive_edit () at keyboard.c:1004 #30 0x01002e36 in main (argc=1, argv=0xa427b8) at emacs.c:1777 Lisp Backtrace: "garbage-collect" (0x82f420) "progn" (0x82f518) "eval" (0x82f638) "eval-last-sexp-1" (0x82f774) "eval-last-sexp" (0x82f8b4) "eval-print-last-sexp" (0x82fa24) "call-interactively" (0x82fc04) (gdb)