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

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: