On 2/20/19 8:10 AM, Michael Albinus wrote: > Bash Version: 5.0 > Patch Level: 0 > Release Status: release > > Description: > This is an error report from an Emacs/Tramp user. With bash 5.0, bash > 5.0 dies when HISTSIZE is set to 0. Setting it to 1 seems to work. Using > bash 4.4 works as well. <See https://debbugs.gnu.org/34192> for details. > > Repeat-By: > The following is an extract from what Tramp does inside Emacs. I could > reproduce it in a a shell: > > > # env TERM='dumb' INSIDE_EMACS='27.0.50,tramp:2.4.2-pre' ENV='' HISTFILE='' > HISTFILESIZE=0 HISTSIZE=0 PROMPT_COMMAND='' PS1=\#\$\ PS2='' PS3='' > /home/albinus/src/bash-5.0/bash -norc -noprofile > #$ tramp_perl_file_name_all_completions () { > \perl -e ' > opendir(d, $ARGV[0]) || die("$ARGV[0]: $!\nfail\n");
Thanks for the report. Try the attached patch and see if that fixes the crash. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/
*** ../bash-5.0-patched/bashhist.c 2018-07-05 22:41:14.000000000 -0400 --- bashhist.c 2019-02-20 16:20:04.000000000 -0500 *************** *** 561,573 **** if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) { /* If we are expanding the second or later line of a multi-line command, decrease history_length so references to history expansions in these lines refer to the previous history entry and not the current command. */ if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) history_length--; expanded = history_expand (line, &history_value); if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) ! history_length++; if (expanded) --- 561,576 ---- if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) { + int old_len; + /* If we are expanding the second or later line of a multi-line command, decrease history_length so references to history expansions in these lines refer to the previous history entry and not the current command. */ + old_len = history_length; if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) history_length--; expanded = history_expand (line, &history_value); if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) ! history_length = old_len; if (expanded)