Looks like wrapping the hook in block_input fixes this error :) On 2016-07-03 10:23, Clément Pit--Claudel wrote: > On 2016-07-03 03:45, Eli Zaretskii wrote: >> As a temporary measure, try calling your code from the function >> update_end (you will have to modify the C sources for that). > > Thanks! Is there a trick to prevent code running in that section to cause a new redisplay cycle? > Calling #'format from there causes a segfault: > > Program received signal SIGSEGV, Segmentation fault. > 0x0000000000577874 in print_object (obj=, printcharfun=printcharfun@entry=0, > escapeflag=escapeflag@entry=true) at print.c:1519 > 1519 if (p != end && (*p == '-' || *p == '+')) p++; > (gdb) bt > #0 0x0000000000577874 in print_object (obj=, printcharfun=printcharfun@entry=0, > escapeflag=escapeflag@entry=true) at print.c:1519 > #1 0x0000000000577a82 in print_object (obj=, obj@entry=60247395, printcharfun=printcharfun@entry=0, > escapeflag=) at print.c:1662 > #2 0x0000000000578e06 in print (obj=obj@entry=60247395, printcharfun=printcharfun@entry=0, > escapeflag=) at print.c:1143 > #3 0x0000000000579749 in Fprin1_to_string (object=60247395, noescape=0) at print.c:672 > #4 0x0000000000555725 in styled_format (nargs=2, args=0x7fffffffc0c0, message=) at editfns.c:4088 > #5 0x000000000055d1a5 in eval_sub (form=) at eval.c:2145 > #6 0x000000000055d33d in Fprogn (body=44976) at eval.c:427 > #7 0x000000000055d6b5 in funcall_lambda (fun=53999395, nargs=nargs@entry=1, > arg_vector=arg_vector@entry=0x7fffffffc318) at eval.c:2922 > #8 0x000000000055d8e3 in Ffuncall (nargs=2, args=0x7fffffffc310) at eval.c:2762 > #9 0x000000000055db39 in funcall_nil (nargs=, args=) at eval.c:2340 > #10 0x000000000055bd6c in run_hook_with_args (nargs=2, args=0x7fffffffc310, funcall=0x55db30 ) > at eval.c:2517 > #11 0x000000000055bf6a in run_hook_with_args (funcall=, args=, nargs=) > at eval.c:2383 > #12 Frun_hook_with_args (nargs=, args=) at eval.c:2382 > #13 0x00000000004bd421 in x_update_end (f=) at xterm.c:1234 > #14 0x0000000000421c9a in update_frame (f=f@entry=0x12bed60, force_p=, force_p@entry=false, > inhibit_hairy_id_p=inhibit_hairy_id_p@entry=false) at dispnew.c:3109 > #15 0x0000000000453b64 in redisplay_internal () at xdisp.c:14058 > #16 0x00000000004557e5 in redisplay () at xdisp.c:13252 > #17 0x00000000004f5e3b in read_char (commandflag=commandflag@entry=1, map=map@entry=60215251, prev_event=0, > used_mouse_menu=used_mouse_menu@entry=0x7fffffffdc9b, end_time=end_time@entry=0x0) at keyboard.c:2477 > #18 0x00000000004f86d3 in read_key_sequence (keybuf=keybuf@entry=0x7fffffffdd70, prompt=prompt@entry=0, > dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, > fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, bufsize=30) > at keyboard.c:9084 > #19 0x00000000004fa1d6 in command_loop_1 () at keyboard.c:1365 > #20 0x000000000055c2dd in internal_condition_case (bfun=bfun@entry=0x4f9fe0 , > handlers=handlers@entry=19488, hfun=hfun@entry=0x4f0f90 ) at eval.c:1310 > #21 0x00000000004ec6ac in command_loop_2 (ignore=ignore@entry=0) at keyboard.c:1107 > #22 0x000000000055c28b in internal_catch (tag=tag@entry=46368, func=func@entry=0x4ec690 , > arg=arg@entry=0) at eval.c:1075 > #23 0x00000000004ec667 in command_loop () at keyboard.c:1086 > #24 0x00000000004f0bc4 in recursive_edit_1 () at keyboard.c:692 > #25 0x00000000004f0ee5 in Frecursive_edit () at keyboard.c:763 > #26 0x00000000004198c8 in main (argc=1, argv=0x7fffffffe0e8) at emacs.c:1656 > > Lisp Backtrace: > "format" (0xffffc0c0) > "~/redisplay" (0xffffc318) > "redisplay_internal (C function)" (0x0) >