Package: pinfo
Version: 0.6.9-5.1
Severity: normal
Dear Maintainer,
I've been testing a local Bourne shell script that uses 'iselect' in a
'while' loop that calls 'pinfo'. When the script opens a file as a
command line argument, 'pinfo' works correctly. When the script inputs
from STDIN, 'pinfo' consistently hangs. (i.e. the first screen of data
is shown, but no pager keys work. 'Ctrl-C' to exit works.) The one line
of code that calls 'pinfo' remains the same, hang or no hang.
This code simulates the hang:
# close STDIN, run pinfo
% pinfo dash <&-
Maybe 'pinfo' requires an empty and open STDIN.
I used 'strace' and 'diff' to compare good and bad 'pinfo' runs. The
good run succeeds with this call:
select(1, [0], NULL, NULL, {0, 0}) = 0 (Timeout)
...while the bad run fails with it, just before some sort of infinite
loop:
select(1, [0], NULL, NULL, {0, 0}) = 1 (in [0], left {0, 0})
'man select' describes a potential 'select' hang, or race condition, and
a related 'pselect' fix:
% man select | grep -A 7 "reason that pselect"
The reason that pselect() is needed is that if one wants to wait for either
a
signal or for a file descriptor to become ready, then an atomic test is
needed
to prevent race conditions. (Suppose the signal handler sets a global
flag
and returns. Then a test of this global flag followed by a call of
select()
could hang indefinitely if the signal arrived just after the test but
just
before the call. By contrast, pselect() allows one to first block
signals,
handle the signals that have come in, then call pselect() with the
desired
sigmask, avoiding the race.)
Other pagers don't fail this way: 'man dash <&-' works fine.
HTH...
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 3.2.0-2-686-pae (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C)
Shell: /bin/sh linked to /bin/dash
Versions of packages pinfo depends on:
ii install-info 4.13a.dfsg.1-10
ii libc6 2.13-31
ii libncursesw5 5.9-7
ii libreadline6 6.2-8
ii libtinfo5 5.9-7
pinfo recommends no packages.
Versions of packages pinfo suggests:
ii balsa [mail-reader] 2.4.11-1
ii bsd-mailx [mail-reader] 8.1.2-0.20111106cvs-1
ii claws-mail [mail-reader] 3.8.0-1
ii cups-bsd [lpr] 1.5.2-10
ii dillo [www-browser] 3.0.2-2
ii elinks [www-browser] 0.12~pre5-7
ii galeon [www-browser] 2.0.7-2.1+b1
ii iceape [www-browser] 2.7.4-1
ii iceweasel [www-browser] 10.0.4esr-2
ii konqueror [www-browser] 4:4.7.4-2
ii links [www-browser] 2.6-1
ii lynx-cur [www-browser] 2.8.8dev.12-2
ii nmh [mail-reader] 1.3-1+b1
ii opera-static [www-browser] 7.23-20031119.1
ii sylpheed [mail-reader] 3.2.0~beta7-1
-- no debconf information
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]