bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

devel: Builtin wait infinite loop when SIGINT received


From: Eduardo A . Bustamante López
Subject: devel: Builtin wait infinite loop when SIGINT received
Date: Tue, 20 Jun 2017 00:06:31 -0500
User-agent: NeoMutt/20170113 (1.7.2)

There's something weird about the wait builtin + SIGINT handling in the latest
`devel' branch (i.e. 6374eecf232e70e45fe9c49cc8335e8779c07979)

If you interrupt the second `wait' with C-c, the shell will go into an infinite
loop.

  address@hidden:~/src/gnu/bash-builds/devel$ cat /tmp/s
  #!/bin/bash
  : &
  wait
  sleep inf &
  wait

  address@hidden:~/src/gnu/bash-builds/devel$ ./bash -x /tmp/s
  + wait
  + :
  + wait
  + sleep inf
  ^C^Z
  [1]+  Stopped                 ./bash -x /tmp/s
  address@hidden:~/src/gnu/bash-builds/devel$ kill -6 %%
  
  [1]+  Stopped                 ./bash -x /tmp/s
  address@hidden:~/src/gnu/bash-builds/devel$ fg
  ./bash -x /tmp/s
  Aborted (core dumped)

(I suspended the process and killed it with SIGABRT to get a nice stack trace).

  Core was generated by `./bash -x /tmp/s'.
  Program terminated with signal SIGABRT, Aborted.
  #0  wait_sigint_handler (sig=2) at ../../bash/jobs.c:2527
  2527    {
  (gdb) bt
  #0  wait_sigint_handler (sig=2) at ../../bash/jobs.c:2527
  #1  <signal handler called>
  #2  0x00007fcbc52e4fba in __GI___waitpid (pid=-1, stat_loc=0x7ffc4d9ec21c, 
options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
  #3  0x0000563ed5620317 in waitchld (wpid=8312, block=1) at 
../../bash/jobs.c:3566
  #4  0x0000563ed561e6a7 in wait_for (pid=8312) at ../../bash/jobs.c:2772
  #5  0x0000563ed561db90 in wait_for_single_pid (pid=8312, flags=1) at 
../../bash/jobs.c:2393
  #6  0x0000563ed561df8b in wait_for_background_pids () at 
../../bash/jobs.c:2461
  #7  0x0000563ed5678220 in wait_builtin (list=0x0) at 
../../../bash/builtins/../../../bash/builtins/wait.def:171
  #8  0x0000563ed5609ad2 in execute_builtin (builtin=0x563ed56780c7 
<wait_builtin>, words=0x563ed6ec7b48, flags=0, subshell=0) at 
../../bash/execute_cmd.c:4609
  #9  0x0000563ed560aa32 in execute_builtin_or_function (words=0x563ed6ec7b48, 
builtin=0x563ed56780c7 <wait_builtin>, var=0x0, redirects=0x0, 
fds_to_close=0x563ed6ec3e08, flags=0)
      at ../../bash/execute_cmd.c:5107
  #10 0x0000563ed56093b4 in execute_simple_command 
(simple_command=0x563ed6ec7a08, pipe_in=-1, pipe_out=-1, async=0, 
fds_to_close=0x563ed6ec3e08) at ../../bash/execute_cmd.c:4395
  #11 0x0000563ed5602ac8 in execute_command_internal (command=0x563ed6ec7ec8, 
asynchronous=0, pipe_in=-1, pipe_out=-1, fds_to_close=0x563ed6ec3e08) at 
../../bash/execute_cmd.c:811
  #12 0x0000563ed5601fe4 in execute_command (command=0x563ed6ec7ec8) at 
../../bash/execute_cmd.c:393
  #13 0x0000563ed55eb51c in reader_loop () at ../../bash/eval.c:172
  #14 0x0000563ed55e8fd1 in main (argc=3, argv=0x7ffc4d9ecb38, 
env=0x7ffc4d9ecb58) at ../../bash/shell.c:794

-- 
Eduardo Bustamante
https://dualbus.me/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]