GNU bug report logs - #22622
24.5; ask-user-about-supersession-threat causes emacs -batch to hang

Previous Next

Package: emacs;

Reported by: Richard Sharman <richard.sharman <at> mitel.com>

Date: Wed, 10 Feb 2016 21:10:01 UTC

Severity: normal

Found in versions 24.5, 25.2

Fixed in version 26.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 22622 in the body.
You can then email your comments to 22622 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#22622; Package emacs. (Wed, 10 Feb 2016 21:10:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Richard Sharman <richard.sharman <at> mitel.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 10 Feb 2016 21:10:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Richard Sharman <richard.sharman <at> mitel.com>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Cc: Richard Sharman <richard.sharman <at> mitel.com>
Subject: 24.5; ask-user-about-supersession-threat causes emacs -batch to hang
Date: Wed, 10 Feb 2016 18:27:30 +0000
[Message part 1 (text/plain, inline)]
I'm not sure if this is a bug or not.

When running emacs -batch, if a function modifies a buffer and calls
save-buffer and there is another emacs -batch also updating the same
file, one of them can call ask-user-about-supersession-threat [in
userlock.el].

This causes the emacs process to hang because read-char-choice never
returns.  See traceback below.

This happened when running make -j 6 and I changed the scenario to not
happen, but I wondered if ask-user-about-supersession-threat should be
act upon variable noninteractive.

Perhaps one is supposed to supply a replacement for
ask-user-about-supersession-threat if running emacs in batch mode?

--- Traceback ---
This was obtained by attaching with gdb to the emacs process.

(gdb) bt
#0  0x000000379fae165e in pselect () from /lib64/libc.so.6
#1  0x00000000005bdf02 in xg_select (fds_lim=6, rfds=rfds <at> entry=0x7fff9903b8a0, wfds=0x7fff9903b920, efds=efds <at> entry=0x0, timeout=timeout <at> entry=0x7fff9903b890,
    sigmask=sigmask <at> entry=0x0) at ../../src/xgselect.c:114
#2  0x000000000058a9c3 in wait_reading_process_output (time_limit=time_limit <at> entry=0, nsecs=nsecs <at> entry=0, read_kbd=read_kbd <at> entry=-1, do_display=true,
    wait_for_cell=wait_for_cell <at> entry=12186482, wait_proc=wait_proc <at> entry=0x0, just_wait_proc=just_wait_proc <at> entry=0) at ../../src/process.c:4606
#3  0x00000000004e38f7 in kbd_buffer_get_event (end_time=0x0, used_mouse_menu=<optimized out>, kbp=<synthetic pointer>) at ../../src/keyboard.c:3907
#4  read_event_from_main_queue (used_mouse_menu=<optimized out>, local_getcjmp=<optimized out>, end_time=0x0) at ../../src/keyboard.c:2247
#5  read_decoded_event_from_main_queue (end_time=end_time <at> entry=0x0, local_getcjmp=local_getcjmp <at> entry=0x7fff9903be10, prev_event=prev_event <at> entry=12186482,
    used_mouse_menu=used_mouse_menu <at> entry=0x7fff9903c09b) at ../../src/keyboard.c:2310
#6  0x00000000004e7b3c in read_char (commandflag=0, map=map <at> entry=15139126, prev_event=12186482, used_mouse_menu=used_mouse_menu <at> entry=0x7fff9903c09b, end_time=end_time <at> entry=0x0)
    at ../../src/keyboard.c:2896
#7  0x00000000004e890f in read_key_sequence (keybuf=keybuf <at> entry=0x7fff9903c150, prompt=prompt <at> entry=14531377, dont_downcase_last=<optimized out>, can_return_switch_frame=false,
    fix_current_buffer=fix_current_buffer <at> entry=false, prevent_redisplay=prevent_redisplay <at> entry=false, bufsize=30) at ../../src/keyboard.c:9089
#8  0x00000000004ea140 in read_key_sequence_vs (prompt=14531377, continue_echo=12186482, dont_downcase_last=12186530, can_return_switch_frame=12186482, cmd_loop=<optimized out>,
    allow_string=<optimized out>) at ../../src/keyboard.c:9784
#9  0x000000000054d1b4 in Ffuncall (nargs=<optimized out>, args=<optimized out>) at ../../src/eval.c:2827
#10 0x0000000000580de5 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=0, nargs=0, args=0x4) at ../../src/bytecode.c:916
#11 0x000000000054cd47 in funcall_lambda (fun=8852921, nargs=nargs <at> entry=0, arg_vector=0x1070e60, arg_vector <at> entry=0x7fff9903c458) at ../../src/eval.c:2978
#12 0x000000000054d013 in Ffuncall (nargs=1, args=0x7fff9903c450) at ../../src/eval.c:2872
#13 0x000000000054c8de in eval_sub (form=form <at> entry=15139174) at ../../src/eval.c:2154
#14 0x000000000054b56b in internal_catch (tag=15676322, func=0x54c220 <eval_sub>, arg=15139174) at ../../src/eval.c:1112
#15 0x0000000000581be8 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=1024, nargs=140735760549240, args=0x8d)
    at ../../src/bytecode.c:1097
#16 0x000000000054cd47 in funcall_lambda (fun=8852409, nargs=nargs <at> entry=1, arg_vector=0x8713e0 <pure+120224>, arg_vector <at> entry=0x7fff9903c718) at ../../src/eval.c:2978
#17 0x000000000054d013 in Ffuncall (nargs=2, args=0x7fff9903c710) at ../../src/eval.c:2872
#18 0x0000000000580de5 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=3080, nargs=140735760549640, args=0x2)
    at ../../src/bytecode.c:916
#19 0x000000000054cd47 in funcall_lambda (fun=8854969, nargs=nargs <at> entry=2, arg_vector=0x871de0 <pure+122784>, arg_vector <at> entry=0x7fff9903c850) at ../../src/eval.c:2978
#20 0x000000000054d013 in Ffuncall (nargs=3, args=0x7fff9903c848) at ../../src/eval.c:2872
#21 0x0000000000580de5 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=12186482, nargs=140735760549952, args=0x3)
    at ../../src/bytecode.c:916
#22 0x000000000054ccaf in funcall_lambda (fun=19838589, nargs=nargs <at> entry=1, arg_vector=arg_vector <at> entry=0x7fff9903c9d8) at ../../src/eval.c:3044
#23 0x000000000054d013 in Ffuncall (nargs=nargs <at> entry=2, args=args <at> entry=0x7fff9903c9d0) at ../../src/eval.c:2872
#24 0x000000000054d34a in call1 (fn=<optimized out>, arg1=arg1 <at> entry=14349665) at ../../src/eval.c:2610
#25 0x00000000005019b5 in lock_file (fn=14349665) at ../../src/filelock.c:713
#26 0x0000000000503115 in prepare_to_modify_buffer_1 (start=start <at> entry=16700, end=end <at> entry=16700, preserve_ptr=preserve_ptr <at> entry=0x0) at ../../src/insdel.c:1812
#27 0x0000000000503621 in prepare_to_modify_buffer (start=16700, end=16700, preserve_ptr=preserve_ptr <at> entry=0x0) at ../../src/insdel.c:1847
#28 0x00000000005038d5 in insert_from_string_1 (string=14413089, pos=0, pos_byte=0, nchars=35, nbytes=35, inherit=<optimized out>, before_markers=before_markers <at> entry=false)
    at ../../src/insdel.c:893
#29 0x0000000000504130 in insert_from_string (string=<optimized out>, pos=<optimized out>, pos_byte=<optimized out>, length=<optimized out>, length_byte=<optimized out>,
    inherit=<optimized out>) at ../../src/insdel.c:842
#30 0x00000000005417a3 in general_insert_function (insert_func=0x503e40 <insert>, insert_from_string_func=0x504100 <insert_from_string>, inherit=inherit <at> entry=false, nargs=1,
    args=0x7fff9903ec40) at ../../src/editfns.c:2248
#31 0x00000000005418ab in Finsert (nargs=<optimized out>, args=<optimized out>) at ../../src/editfns.c:2289
#32 0x000000000054c8de in eval_sub (form=<optimized out>) at ../../src/eval.c:2154
#33 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#34 0x000000000054f5f5 in Flet (args=19476358) at ../../src/eval.c:970
#35 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#36 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#37 0x000000000054cdac in funcall_lambda (fun=fun <at> entry=19476262, nargs=nargs <at> entry=4, arg_vector=arg_vector <at> entry=0x7fff9903eee0) at ../../src/eval.c:3037
#38 0x000000000054c178 in apply_lambda (fun=19476262, args=<optimized out>, count=count <at> entry=42) at ../../src/eval.c:2919
#39 0x000000000054c4e9 in eval_sub (form=<optimized out>) at ../../src/eval.c:2256
#40 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#41 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#42 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#43 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#44 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#45 0x000000000054ca15 in Fprogn (body=6, body <at> entry=19494038) at ../../src/eval.c:462
#46 0x000000000054f688 in Fwhile (args=<optimized out>) at ../../src/eval.c:992
#47 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#48 0x000000000054ca15 in Fprogn (body=6, body <at> entry=19518774) at ../../src/eval.c:462
#49 0x0000000000548745 in Fsave_restriction (body=19518774) at ../../src/editfns.c:3415
#50 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#51 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#52 0x000000000054f5f5 in Flet (args=19518230) at ../../src/eval.c:970
#53 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#54 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#55 0x000000000054cdac in funcall_lambda (fun=fun <at> entry=19518182, nargs=nargs <at> entry=2, arg_vector=arg_vector <at> entry=0x7fff9903f690) at ../../src/eval.c:3037
#56 0x000000000054c178 in apply_lambda (fun=19518182, args=<optimized out>, count=count <at> entry=22) at ../../src/eval.c:2919
#57 0x000000000054c4e9 in eval_sub (form=<optimized out>) at ../../src/eval.c:2256
#58 0x000000000054ca15 in Fprogn (body=6, body <at> entry=19515958) at ../../src/eval.c:462
#59 0x000000000054f688 in Fwhile (args=<optimized out>) at ../../src/eval.c:992
#60 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#61 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#62 0x000000000054f5f5 in Flet (args=19516310) at ../../src/eval.c:970
#63 0x000000000054c7e3 in eval_sub (form=<optimized out>) at ../../src/eval.c:2131
#64 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#65 0x000000000054cdac in funcall_lambda (fun=fun <at> entry=19513158, nargs=nargs <at> entry=1, arg_vector=arg_vector <at> entry=0x7fff9903fab0) at ../../src/eval.c:3037
#66 0x000000000054c178 in apply_lambda (fun=19513158, args=<optimized out>, count=count <at> entry=14) at ../../src/eval.c:2919
#67 0x000000000054c4e9 in eval_sub (form=<optimized out>) at ../../src/eval.c:2256
#68 0x000000000054ca15 in Fprogn (body=6) at ../../src/eval.c:462
#69 0x000000000054cdac in funcall_lambda (fun=fun <at> entry=19509782, nargs=nargs <at> entry=2, arg_vector=arg_vector <at> entry=0x7fff9903fc80) at ../../src/eval.c:3037
#70 0x000000000054c178 in apply_lambda (fun=19509782, args=<optimized out>, count=count <at> entry=11) at ../../src/eval.c:2919
#71 0x000000000054c4e9 in eval_sub (form=form <at> entry=19527974) at ../../src/eval.c:2256
#72 0x000000000054fae1 in Feval (form=19527974, lexical=<optimized out>) at ../../src/eval.c:1996
#73 0x000000000054d1f0 in Ffuncall (nargs=<optimized out>, args=<optimized out>) at ../../src/eval.c:2814
#74 0x0000000000580de5 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=1028, nargs=77, args=0x2) at ../../src/bytecode.c:916
#75 0x000000000054cd47 in funcall_lambda (fun=9325745, nargs=nargs <at> entry=1, arg_vector=0x8e4cd8 <pure+593560>, arg_vector <at> entry=0x7fff99040030) at ../../src/eval.c:2978
#76 0x000000000054d013 in Ffuncall (nargs=2, args=0x7fff99040028) at ../../src/eval.c:2872
#77 0x0000000000580de5 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=0, nargs=140735760564264, args=0x2)
    at ../../src/bytecode.c:916
#78 0x000000000054cd47 in funcall_lambda (fun=9300361, nargs=nargs <at> entry=0, arg_vector=0x8de9b0 <pure+568176>, arg_vector <at> entry=0x7fff990401b8) at ../../src/eval.c:2978
#79 0x000000000054d013 in Ffuncall (nargs=1, args=0x7fff990401b0) at ../../src/eval.c:2872
#80 0x0000000000580de5 in exec_byte_code (bytestr=-514, vector=140735760544464, maxdepth=140735760544592, args_template=0, nargs=140735760564648, args=0x1)
    at ../../src/bytecode.c:916
#81 0x000000000054cd47 in funcall_lambda (fun=9296881, fun <at> entry=9296837, nargs=nargs <at> entry=0, arg_vector=0x8ddc18 <pure+564696>, arg_vector <at> entry=0x7fff990402a0)
    at ../../src/eval.c:2978
#82 0x000000000054c178 in apply_lambda (fun=9296837, args=<optimized out>, count=count <at> entry=3) at ../../src/eval.c:2919
#83 0x000000000054c4e9 in eval_sub (form=form <at> entry=15729862) at ../../src/eval.c:2256
#84 0x000000000054fae1 in Feval (form=15729862, lexical=<optimized out>) at ../../src/eval.c:1996
#85 0x000000000054b65e in internal_condition_case (bfun=bfun <at> entry=0x4dcb80 <top_level_2>, handlers=<optimized out>, hfun=hfun <at> entry=0x4e13c0 <cmd_error>) at ../../src/eval.c:1348
#86 0x00000000004dcb66 in top_level_1 (ignore=ignore <at> entry=12186482) at ../../src/keyboard.c:1195
#87 0x000000000054b56b in internal_catch (tag=12233698, func=func <at> entry=0x4dcb00 <top_level_1>, arg=12186482) at ../../src/eval.c:1112
#88 0x00000000004e0fcf in command_loop () at ../../src/keyboard.c:1156
#89 recursive_edit_1 () at ../../src/keyboard.c:778
#90 0x00000000004e12fd in Frecursive_edit () at ../../src/keyboard.c:849
#91 0x0000000000413755 in main (argc=<optimized out>, argv=0x7fff99040628) at ../../src/emacs.c:1642
(gdb)



In GNU Emacs 24.5.1 (x86_64-unknown-linux-gnu, X toolkit, Xaw scroll bars)
 of 2015-04-27 on sharmanbox.mitel.com
Windowing system distributor `CentOS', version 11.0.11300000
System Description: Red Hat Enterprise Linux Server release 6

Configured using:
 `configure --with-x-toolkit=athena --without-gsettings'

Important settings:
  value of $LANG: C
  value of $XMODIFIERS: @im=none
  locale-coding-system: nil

(Since this is not the emacs session that produced the problem the rest
of the generated input from rerprt-emacs-bug has been removed.)


I apologize for anything that occurs after this line; it's out of my control!



________________________________
NOTE: This e-mail (including any attachments) is for the sole use of the intended recipient(s) and may contain information that is confidential and/or protected by legal privilege. Any unauthorized review, use, copy, disclosure or distribution of this e-mail is strictly prohibited. If you are not the intended recipient, please notify Mitel immediately and destroy all copies of this e-mail. Mitel does not accept any liability for breach of security, error or virus that may result from the transmission of this message.
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22622; Package emacs. (Sat, 13 Feb 2016 13:44:02 GMT) Full text and rfc822 format available.

Message #8 received at 22622 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Richard Sharman <richard.sharman <at> mitel.com>
Cc: 22622 <at> debbugs.gnu.org
Subject: Re: bug#22622: 24.5;
 ask-user-about-supersession-threat causes emacs -batch to hang
Date: Sat, 13 Feb 2016 15:42:55 +0200
> From: Richard Sharman <richard.sharman <at> mitel.com>
> Date: Wed, 10 Feb 2016 18:27:30 +0000
> Cc: Richard Sharman <richard.sharman <at> mitel.com>
> 
> I'm not sure if this is a bug or not. 
> 
> When running emacs -batch, if a function modifies a buffer and calls
> save-buffer and there is another emacs -batch also updating the same
> file, one of them can call ask-user-about-supersession-threat [in
> userlock.el].
> 
> This causes the emacs process to hang because read-char-choice never
> returns. See traceback below.
> 
> This happened when running make -j 6 and I changed the scenario to not
> happen, but I wondered if ask-user-about-supersession-threat should be
> act upon variable noninteractive.
> 
> Perhaps one is supposed to supply a replacement for
> ask-user-about-supersession-threat if running emacs in batch mode? 

Does anyone see a problem with automatically answering NO to that
question in batch mode?




Merged 22622 29955. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Wed, 03 Jan 2018 01:55:01 GMT) Full text and rfc822 format available.

Disconnected #22622 from all other report(s). Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Wed, 24 Jan 2018 01:57:01 GMT) Full text and rfc822 format available.

Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Wed, 24 Jan 2018 01:58:02 GMT) Full text and rfc822 format available.

Notification sent to Richard Sharman <richard.sharman <at> mitel.com>:
bug acknowledged by developer. (Wed, 24 Jan 2018 01:58:02 GMT) Full text and rfc822 format available.

Message #17 received at 22622-done <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 22622-done <at> debbugs.gnu.org
Subject: Re: bug#22622: 24.5;
 ask-user-about-supersession-threat causes emacs -batch to hang
Date: Tue, 23 Jan 2018 20:57:09 -0500
Version: 26.1

This should be fixed since 28718c4.
See https://debbugs.gnu.org/29955 for related discussion.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 21 Feb 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 67 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.