zsh-users
 help / color / mirror / code / Atom feed
* Frozen command substitution
@ 2023-02-11  9:41 Dominik Vogt
  2023-02-11 17:02 ` Dominik Vogt
  0 siblings, 1 reply; 4+ messages in thread
From: Dominik Vogt @ 2023-02-11  9:41 UTC (permalink / raw)
  To: Zsh Users

I have two long running scripts that do complex interaction with
the web browser, say "foo" which calls the subordinate script
"bar".  The browser crashes once in a while and is restarted
automatically by some other script.  Sometimes when this happens,
foo freezes in a call of bar and won't wake up anymore when bar
terminates:

-- foo --
while true; do
	some-func
	test some-condition && break
done

some-func () {
	while true; do
		R="$(bar ssome arguments)"  <------- hangs in this line
		test some condition && return 0
	done
}
-- foo --

-- bar --
# some long-running loop
# ...

return 0
-- bar --

Ciao

Dominik ^_^  ^_^

--

So, foo calls bar in a loop.  While bar is running, the browser is
restarted.  bar detects this, finishes and exits with the "return
0".  However, foo does not continue with the line after the
command substitution.  A "ctrl-z" foollowed by "fg" does not help.
Sending it SIGUSR1 (which has a trap installed) wakes it up again.
In the process list:

  $ pstree -a
  ...
  <terminal>-+-zsh-+-foo
                   |-tee
                   +-zsh

(The whole stuff is calles with
"while true; do foo 2>&1 | tee foo.out; done".)  /proc/<pid>/status says:

  $ cat /proc/<pid>/status
  ...
  State:  S (sleeping)
  Tgid:   13030
  Ngid:   0
  Pid:    13030
  PPid:   24927
  ...

foo has a trap for "HUP" installed, and that's being called when
when I type "killall -HUP foo", so the shell is not dead.  "ps"
lists the processes' status as "S+".

Dominik Vogt


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-02-11 20:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-11  9:41 Frozen command substitution Dominik Vogt
2023-02-11 17:02 ` Dominik Vogt
2023-02-11 17:36   ` Bart Schaefer
2023-02-11 20:28     ` Dominik Vogt

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).