On Fri, Jun 26, 2015 at 11:26:17PM +0200, Yann Dirson wrote:
> On Fri, Jun 26, 2015 at 10:12:58AM +0000, Mattia Rizzolo wrote:
> > As I haven't killed it i can still run stuff if you point me at something.
> 
> The "yes.c" provided by the testsuite does not handle write errors,

bad guys, bad :P

> If it's still time, could you get a look at what those admin.sh
> processes are waiting for ?

Today i feel kind and I re-ran the build just for you ;) though i'll kill it,
we got a huge machine, but wasting 12 hours in a "yes" process it's not worth
(sorry) :)

> Damned "portable" test suite :)

eheh


This was the process tree:

mattia@jenkins ~ % pstree -ap 41724
jenkins-script-,41724 /tmp/jenkins-script-fuxoLszc
  ├─sudo,34552 timeout -k 12.1h 12h /usr/bin/ionice -c 3 /usr/bin/nice 
/usr/sbin/pbuilder --build --configfile ...
  │   └─timeout,34556 -k 12.1h 12h /usr/bin/ionice -c 3 /usr/bin/nice 
/usr/sbin/pbuilder --build --configfile ...
  │       └─pbuilder,34558 /usr/sbin/pbuilder --build --configfile 
/srv/reproducible-results/tmp.7XtvRcqFJf/pbuilderrc_QueT --debbuildopts -b 
--basetgz...
  │           └─pbuilder-buildp,34571 /usr/lib/pbuilder/pbuilder-buildpackage 
--configfile /srv/reproducible-results/tmp.7XtvRcqFJf/pbuilderrc_QueT 
--debbuildopts ...
  │               └─pbuilder-buildp,48729 
/usr/lib/pbuilder/pbuilder-buildpackage --configfile 
/srv/reproducible-results/tmp.7XtvRcqFJf/pbuilderrc_QueT ...
  │                   └─sh,48731
  │                       └─dpkg-buildpacka,48795 /usr/bin/dpkg-buildpackage 
-us -uc -b -rfakeroot
  │                           └─rules,49289 -f debian/rules build
  │                               └─dh,49290 -w /usr/bin/dh build --parallel 
--with autotools_dev
  │                                   └─rules,19304 -f debian/rules 
override_dh_auto_test
  │                                       └─sh,19309 -c unset dir; dh_auto_test 
--max-parallel=1
  │                                           └─dh_auto_test,19311 -w 
/usr/bin/dh_auto_test --max-parallel=1
  │                                               └─make,19739 -j1 check
  │                                                   └─bash,19765 -c...
  │                                                       └─bash,54788 -c...
  │                                                           └─make,54790 check
  │                                                               └─bash,6857 
-ec ...
  │                                                                   
└─bash,6861 admin.sh
  │                                                                       
└─bash,6885 admin.sh
  │                                                                           
└─yes,6886 %C%
  └─tee,34553 -a /srv/reproducible-results/tmp.7XtvRcqFJf/tmp.oKpwe4UZVb


This is some strace -p, unluckly the ones over admin.sh are really useless:

root@jenkins:/# strace -p 6885
Process 6885 attached
wait4(-1, ^CProcess 6885 detached
 <detached ...>
root@jenkins:/# strace -p 6861
Process 6861 attached
wait4(-1, ^CProcess 6861 detached
 <detached ...>
root@jenkins:/# strace -p 6885
Process 6885 attached
wait4(-1, ^CProcess 6885 detached
 <detached ...>
root@jenkins:/# timeout 0.5 s strace -p 6886
timeout: failed to run command 's': No such file or directory
root@jenkins:/# timeout 0.5s strace -p 6886
Process 6886 attached
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---
write(1, "%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n%C%\n"..., 4096) = -1 EPIPE 
(Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=6886, si_uid=1111} ---

(... + too much output for just 0.5 seconds....)


Then i connected to the last admin.sh and killed (with SIGKILL) the yes process:

root@jenkins:/# strace -p 6885
Process 6885 attached
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGKILL}], 0, NULL) = 6886
rt_sigaction(SIGINT, {0x45e070, [], SA_RESTORER, 0x7f9bd75e5180}, {0x443820, 
[], SA_RESTORER, 0x7f9bd75e5180}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(3)                                = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=6887, si_uid=1111, 
si_status=0, si_utime=0, si_stime=0} ---
wait4(-1, 0x7fff9e6635d0, WNOHANG, NULL) = -1 ECHILD (No child processes)
rt_sigreturn({mask=[]})                 = 0
exit_group(0)                           = ?
+++ exited with 0 +++
root@jenkins:/#

Interesting enough this did not fail the build, though (i think the
"exit_group(0)" above has something to do with this).

Given the whole job didn't die I tried a SIGTERM in the same way of above over
the second build:

mattia@jenkins ~ % pstree -ap 41724
jenkins-script-,41724 /tmp/jenkins-script-fuxoLszc
  ├─sudo,28197 timeout -k 12.1h 12h /usr/bin/ionice -c 3 /usr/bin/nice 
/usr/bin/linux64 --uname-2.6 /usr/bin/unshare --uts -- /usr/sbin/pbuilder 
--build ...
  │   └─timeout,28205 -k 12.1h 12h /usr/bin/ionice -c 3 /usr/bin/nice 
/usr/bin/linux64 --uname-2.6 /usr/bin/unshare --uts -- /usr/sbin/pbuilder 
--build ...
  │       └─pbuilder,28207 /usr/sbin/pbuilder --build --configfile 
/srv/reproducible-results/tmp.7XtvRcqFJf/pbuilderrc_EoKt --hookdir 
/etc/pbuilder/rebuild-hooks ...
  │           └─pbuilder-buildp,28217 /usr/lib/pbuilder/pbuilder-buildpackage 
--configfile /srv/reproducible-results/tmp.7XtvRcqFJf/pbuilderrc_EoKt --hookdir 
...
  │               └─pbuilder-buildp,39005 
/usr/lib/pbuilder/pbuilder-buildpackage --configfile 
/srv/reproducible-results/tmp.7XtvRcqFJf/pbuilderrc_EoKt --hookdir ...
  │                   └─sh,39008
  │                       └─dpkg-buildpacka,39171 /usr/bin/dpkg-buildpackage 
-us -uc -b -rfakeroot
  │                           └─rules,39591 -f debian/rules build
  │                               └─dh,39592 -w /usr/bin/dh build --parallel 
--with autotools_dev
  │                                   └─rules,1972 -f debian/rules 
override_dh_auto_test
  │                                       └─sh,1973 -c unset dir; dh_auto_test 
--max-parallel=1
  │                                           └─dh_auto_test,1974 -w 
/usr/bin/dh_auto_test --max-parallel=1
  │                                               └─make,2103 -j1 check
  │                                                   └─bash,2114 -c...
  │                                                       └─bash,18755 -c...
  │                                                           └─make,18756 check
  │                                                               └─bash,42944 
-ec ...
  │                                                                   
└─bash,42949 admin.sh
  │                                                                       
└─bash,42983 admin.sh
  │                                                                           
└─yes,42984 %C%
  └─tee,28198 -a /srv/reproducible-results/tmp.7XtvRcqFJf/tmp.oKpwe4UZVb
mattia@jenkins ~ %

root@jenkins:/# strace -p 42983
Process 42983 attached
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGTERM}], 0, NULL) = 42984
rt_sigaction(SIGINT, {0x45e070, [], SA_RESTORER, 0x7fa1575dd180}, {0x443820, 
[], SA_RESTORER, 0x7fa1575dd180}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(3)                                = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=42987, si_uid=2222, 
si_status=0, si_utime=0, si_stime=0} ---
wait4(-1, 0x7ffe226b3a10, WNOHANG, NULL) = -1 ECHILD (No child processes)
rt_sigreturn({mask=[]})                 = 0
exit_group(0)                           = ?
+++ exited with 0 +++
root@jenkins:/#


Well, i just guess it doesn care about returns code, haven't even opened the
sources.
Though I also think SIGKILLing child should fail parents, as that's not a
normal end for a process. Anyway, I personally don't care in this case.
Also because the build is reproducible! :D



all this stuff looks quite useless to me, but maybe it helps you!


-- 
regards,
                        Mattia Rizzolo

GPG Key: 66AE 2B4A FCCF 3F52 DA18  4D18 4B04 3FCD B944 4540         .''`.
more about me:  http://mapreri.org                                 : :'  :
Launchpad user: https://launchpad.net/~mapreri                     `. `'`
Debian QA page: https://qa.debian.org/developer.php?login=mattia     `-

Attachment: signature.asc
Description: Digital signature

Reply via email to