Bug#990244: tests/streams: Failing test on pipe stdout file descriptor
Package: clisp
Version: 1:2.49.20180218+really2.49.92-3+b4
Severity: serious
Tags: upstream ftbfs
Justification: fails to build from source (but built successfully in the
past)
Dear Maintainer,
Building clisp package in an OBS instance FTBFS because of the following
test failure:
https://salsa.debian.org/common-lisp-team/clisp/-/blob/0a8137b7caa777e1c08e06fa7161784f947fa5af/tests/streams.tst#L1290
(let ((*reopen-open-file* nil)) ; stdout can be a file, it will be
detected!
(with-open-file (copy s :direction :output) (streamp copy))) T
Build error log shows the following output for that test:
$ cat usr/src/packages/BUILD/debian/build/tests/*.erg
Form: (LET ((*REOPEN-OPEN-FILE* NIL)) (WITH-OPEN-FILE (COPY S
:DIRECTION :OUTPUT) (STREAMP COPY)))
CORRECT: T
CLISP : ERROR
OS-FILE-ERROR(13): Permission denied
OUT:
"[OS-FILE-ERROR]: OS-FILE-ERROR(13): Permission denied
"
That Lisp form tries to open the stdout file descriptor, but in this
case it's failing with EACCES (Permission denied).
AFAICS, running `strace` on the test shows that on the OBS instance,
`stdout` is piped, causing the access issue:
[ 148s] lstat("/proc/2867342/fd/2", {st_mode=S_IFLNK|0300,
st_size=64, ...}) = 0
[ 148s] readlink("/proc/2867342/fd/2", "pipe:[4065697]", 64) = 14
[ 148s] stat("/proc/2867342/fd/2", {st_mode=S_IFIFO|0600, st_size=0,
...}) = 0
[ 148s] openat(AT_FDCWD, "/proc/2867342/fd/2",
O_WRONLY|O_CREAT|O_TRUNC, 0644) = -1 EACCES (Permission denied)
However, on a "local" build, `stdout` going directly to the pseudo
terminal doesn't raise any issue:
lstat("/proc/2901662/fd/2", {st_mode=S_IFLNK|0700, st_size=64, ...}) = 0
readlink("/proc/2901662/fd/2", "/dev/pts/1", 64) = 10
readlink("/dev", 0x7fff7e9fbd30, 4095) = -1 EINVAL (Invalid argument)
readlink("/dev/pts", 0x7fff7e9fbd30, 4095) = -1 EINVAL (Invalid argument)
lstat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x1),
...}) = 0
stat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x1),
...}) = 0
openat(AT_FDCWD, "/dev/pts/1", O_WRONLY|O_CREAT|O_TRUNC, 0644) = 10
This seems to be related to how output fds are handled. AFAICS there's a
difference between these two cases, see:
https://salsa.debian.org/common-lisp-team/clisp/-/blob/0a8137b7caa777e1c08e06fa7161784f947fa5af/src/pathname.d#L5426
Is this an issue and should be checked? What's the expected behaviour on
these cases?
Thanks in advance.
Regards,
Ariel D'Alessandro
-- System Information:
Debian Release: 11.0
APT prefers testing-security
APT policy: (500, 'testing-security'), (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 5.10.0-7-amd64 (SMP w/8 CPU threads)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE
not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages clisp depends on:
ii libc6 2.31-12
ii libcrypt1 1:4.4.18-4
ii libffcall1b 2.2-1
ii libreadline8 8.1-1
ii libsigsegv2 2.13-1
ii libtinfo6 6.2+20201114-2
ii libunistring2 0.9.10-4
clisp recommends no packages.
Versions of packages clisp suggests:
pn clisp-doc <none>
pn clisp-module-berkeley-db <none>
pn clisp-module-clx <none>
pn clisp-module-dbus <none>
pn clisp-module-gdbm <none>
pn clisp-module-pcre <none>
pn clisp-module-postgresql <none>
pn clisp-module-zlib <none>
ii gdb 10.1-1.7
pn slime <none>
-- no debconf information
Reply to: