Bug#966368: lintian gets stuck when run by sbuild within rebuildd
Package: lintian
Version: 2.85.0
Severity: important
User: devel@kali.org
Usertags: origin-kali
In Kali, our build daemons run "rebuildd" with a build script that calls
sbuild --run-lintian. Since lintian 2.85 (I believe 2.84.0 is not affected),
the build process get stuck at the point when lintian is run. I see two lintian
processes (a parent and its child) and both are stuck in epoll_pwait()
according to strace.
In normal (non-verbose mode) there's no output of lintian before it gets stuck:
Example in this build log:
http://buildd-amd64.kali.org/build-logs/golang-github-projectdiscovery-gologger_1.0.0-0kali1-kali-dev-amd64-20200724-124452.3196.log
When I add the --debug option you see this:
http://buildd-amd64.kali.org/build-logs/kali-meta_2020.3.10-kali-dev-amd64-20200727-132744.3202.log
The last lines are like this:
N: Check script control-files for binary:kali-tools-forensics/2020.3.10/amd64 done (0.015s)
N: Running check: cron on binary:kali-tools-forensics/2020.3.10/amd64 ...
N: Check script cron for binary:kali-tools-forensics/2020.3.10/amd64 done (0.009s)
N: Running check: cruft on binary:kali-tools-forensics/2020.3.10/amd64 ...
N: Check script cruft for binary:kali-tools-forensics/2020.3.10/amd64 done (0.015s)
N: Running check: deb-format on binary:kali-tools-forensics/2020.3.10/amd64 ...
The process tree is like this:
kalibui+ 32428 0.0 0.0 19640 3252 ? Ss 13:28 0:00 \_ /bin/sh /srv/build.kali.org/bin/build kali-meta 2020.3.10 amd64 kali-dev
kalibui+ 32431 0.2 0.1 89316 33428 ? S 13:28 0:00 \_ /usr/bin/perl /usr/bin/sbuild --no-source --run-lintian --lintian-opts=-I --debug --nolog --apt-update --apt-upgrade --no-apt-distupgrade --arch=amd64 -d kali-dev --arch-all /srv/build.kali.org/build/work/kali-meta_2020.3.10.dsc
kalibui+ 32436 0.1 0.0 88388 30100 ? S 13:28 0:00 \_ /usr/bin/perl /usr/bin/sbuild --no-source --run-lintian --lintian-opts=-I --debug --nolog --apt-update --apt-upgrade --no-apt-distupgrade --arch=amd64 -d kali-dev --arch-all /srv/build.kali.org/build/work/kali-meta_2020.3.10.dsc
root 4007 0.0 0.0 66528 6480 ? S 13:28 0:00 \_ schroot -d /build/kali-meta-E2qWUi -c kali-dev-amd64-sbuild-a3951a2c-b417-47f2-915c-bb7f546b39ff --run-session -q -u kalibuild -p -- lintian -I --debug kali-meta_2020.3.10_amd64.changes kali-meta_2020.3.10.dsc
kalibui+ 4008 3.3 0.2 123596 76080 ? S 13:28 0:03 \_ lintian -I --debug kali-meta_2020.3.10_amd64.changes kali-meta_2020.3.10.dsc
kalibui+ 5628 0.0 0.2 123732 69692 ? S 13:28 0:00 \_ lintian -I --debug kali-meta_2020.3.10_amd64.changes kali-meta_2020.3.10.dsc
The open files are like this:
# ls -al /proc/4008/fd /proc/5628/fd
/proc/4008/fd:
total 0
dr-x------ 2 kalibuild kalibuild 0 Jul 27 13:38 .
dr-xr-xr-x 8 kalibuild kalibuild 0 Jul 27 13:28 ..
lrwx------ 1 kalibuild kalibuild 64 Jul 27 13:38 0 -> /dev/null
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:38 1 -> pipe:[689890348]
lr-x------ 1 kalibuild kalibuild 64 Jul 27 13:38 11 -> pipe:[689938177]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:38 13 -> /srv/build.kali.org/build/logs/i3-gaps_4.18.1-0kali2-kali-dev-i386-20200724-200857.3199.log
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:38 2 -> pipe:[689890348]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:38 3 -> /srv/build.kali.org/db/rebuildd.log
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:38 4 -> /srv/build.kali.org/db/rebuildd.log
lrwx------ 1 kalibuild kalibuild 64 Jul 27 13:38 5 -> socket:[8970131]
lrwx------ 1 kalibuild kalibuild 64 Jul 27 13:38 6 -> anon_inode:[eventpoll]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:38 7 -> /run/schroot/mount/kali-dev-amd64-sbuild-a3951a2c-b417-47f2-915c-bb7f546b39ff/dev/null
lr-x------ 1 kalibuild kalibuild 64 Jul 27 13:38 8 -> pipe:[689938176]
lrwx------ 1 kalibuild kalibuild 64 Jul 27 13:38 9 -> socket:[528586941]
/proc/5628/fd:
total 0
dr-x------ 2 kalibuild kalibuild 0 Jul 27 13:28 .
dr-xr-xr-x 8 kalibuild kalibuild 0 Jul 27 13:28 ..
lrwx------ 1 kalibuild kalibuild 64 Jul 27 13:28 0 -> /dev/null
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:28 1 -> pipe:[689890348]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:28 10 -> pipe:[689938176]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:28 12 -> pipe:[689938177]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:28 2 -> pipe:[689890348]
lrwx------ 1 kalibuild kalibuild 64 Jul 27 13:28 3 -> anon_inode:[eventpoll]
lr-x------ 1 kalibuild kalibuild 64 Jul 27 13:28 6 -> pipe:[689942617]
l-wx------ 1 kalibuild kalibuild 64 Jul 27 13:28 7 -> pipe:[689942617]
lr-x------ 1 kalibuild kalibuild 64 Jul 27 13:28 8 -> pipe:[689942618]
And the strace output is like this:
# strace -p 4008 -p 5628
strace: Process 4008 attached
strace: Process 5628 attached
[pid 5628] getpid( <unfinished ...>
[pid 4008] getpid( <unfinished ...>
[pid 5628] <... getpid resumed> ) = 5628
[pid 4008] <... getpid resumed> ) = 4008
[pid 5628] epoll_pwait(3, <unfinished ...>
[pid 4008] epoll_pwait(6,
When I run "sbuild --run-lintian" manualy, outside of rebuildd, then lintian
works and it doesn't get stuck. So there might something about what rebuildd
is doing like calling "os.setsid()"...
Cheers,
-- System Information:
Debian Release: bullseye/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.19.0-6-amd64 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_UNSIGNED_MODULE
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.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 lintian depends on:
ii binutils 2.34.90.20200706-1
ii bzip2 1.0.8-4
ii diffstat 1.63-1
ii dpkg 1.20.5
ii dpkg-dev 1.20.5
ii file 1:5.38-5
ii gettext 0.19.8.1-10
ii gpg 2.2.20-1
ii intltool-debian 0.35.0+20060710.5
ii libapt-pkg-perl 0.1.36+b3
ii libarchive-zip-perl 1.68-1
ii libcapture-tiny-perl 0.48-1
ii libclass-xsaccessor-perl 1.19-3+b5
ii libclone-perl 0.45-1
ii libconfig-tiny-perl 2.24-1
ii libcpanel-json-xs-perl 4.19-1
ii libdata-dpath-perl 0.58-1
ii libdata-validate-domain-perl 0.10-1
ii libdevel-size-perl 0.83-1+b1
ii libdpkg-perl 1.20.5
ii libemail-address-xs-perl 1.04-1+b2
ii libfile-basedir-perl 0.08-1
ii libfile-find-rule-perl 0.34-1
ii libfont-ttf-perl 1.06-1
ii libhtml-parser-perl 3.72-5
ii libio-async-loop-epoll-perl 0.21-1
ii libio-async-perl 0.77-3
ii libjson-maybexs-perl 1.004002-1
ii liblist-compare-perl 0.53-1
ii liblist-moreutils-perl 0.416-1+b5
ii liblist-utilsby-perl 0.11-1
ii libmoo-perl 2.004000-1
ii libmoox-aliases-perl 0.001006-1
ii libnamespace-clean-perl 0.27-1
ii libpath-tiny-perl 0.114-1
ii libsereal-decoder-perl 4.017+ds-1
ii libsereal-encoder-perl 4.017+ds-1
ii libtext-levenshteinxs-perl 0.03-4+b7
ii libtext-xslate-perl 3.5.8-1
ii libtime-duration-perl 1.21-1
ii libtime-moment-perl 0.44-1+b2
ii libtimedate-perl 2.3300-1
ii libtry-tiny-perl 0.30-1
ii libtype-tiny-perl 1.010002-1
ii libunicode-utf8-perl 0.62-1+b1
ii liburi-perl 1.76-2
ii libxml-libxml-perl 2.0134+dfsg-2
ii libxml-writer-perl 0.625-1
ii libyaml-libyaml-perl 0.82+repack-1
ii man-db 2.9.3-2
ii patchutils 0.4.2-1
ii perl [libdigest-sha-perl] 5.30.3-4
ii t1utils 1.41-4
ii xz-utils 5.2.4-1+b1
Versions of packages lintian recommends:
ii libperlio-gzip-perl 0.19-1+b6
Versions of packages lintian suggests:
pn binutils-multiarch <none>
ii libtext-template-perl 1.59-1
-- no debconf information
Reply to: