Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 07 Jul 2014 22:12:43 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 191019] pgrep/pkill -j testcases fail on 11-CURRENT
Message-ID:  <bug-191019-8-RtL2XZston@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-191019-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-191019-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191019

--- Comment #3 from yaneurabeya@gmail.com ---
The pgrep issues are test bugs. The assumption that the test script makes is
that the forked background process is the same as the value returned by pgrep.
pgrep is returning the PID of the process from within the jail:

Script started on Mon Jul  7 15:02:12 2014
command: sh -x ./pgrep-j_test
+ basename ./pgrep-j_test
+ base=pgrep-j_test
+ id -u
+ [ 0 -ne 0 ]
+ echo 1..3
1..3
+ mktemp -d /usr/tests/bin/pkill/pgrep-j_test.XXXXXXX
+ tmpdir=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M
+ cd /usr/tests/bin/pkill/pgrep-j_test.bihmF9M
+ trap 'cd /; jls jid name | grep pgrep-j_test | xargs -n 1 jail -R ; rm -Rf
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M' EXIT
+ pwd
+ sleep=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ ln -f /bin/sleep /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ name='pgrep -j <jid>'
+ chpid=63235
+ _jail pgrep-j_test_1-1 /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ local name=pgrep-j_test_1-1
+ shift
+ jail -c path=/ host.hostname=pgrep-j_test_1-1 name=pgrep-j_test_1-1
ip4.addr=127.0.0.1 command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
5
+ chpid2=63236
+ chpid3=63237
+ sleep 0.5
+ _jail pgrep-j_test_1-2 /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ local name=pgrep-j_test_1-2
+ shift
+ jail -c path=/ host.hostname=pgrep-j_test_1-2 name=pgrep-j_test_1-2
ip4.addr=127.0.0.1 command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
5
+ /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ ps auxww
+ grep /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
root  63235   0.0  0.0  18476 1676  0  S+    3:02PM     0:00.00 jail -c path=/
host.hostname=pgrep-j_test_1-1 name=pgrep-j_test_1-1 ip4.addr=127.0.0.1
command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63236   0.0  0.0  18476 1676  0  S+    3:02PM     0:00.00 jail -c path=/
host.hostname=pgrep-j_test_1-2 name=pgrep-j_test_1-2 ip4.addr=127.0.0.1
command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63237   0.0  0.0   8036 1360  0  S+    3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63239   0.0  0.0   8036 1360  0  S+J   3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63240   0.0  0.0   8036 1360  0  S+J   3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63242   0.0  0.0  18608 1992  0  R+    3:02PM     0:00.00 grep
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ jls jid name
+ awk '$2 == "pgrep-j_test_1-1" {print $1}'
+ jid=136
+ pgrep -f -j 136 /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ pid=63239
+ [ 63239 = 63235 ]
+ echo 'not ok 1 - pgrep -j <jid>'
not ok 1 - pgrep -j <jid>
+ sleep 7
+ name='pgrep -j any'
+ chpid=63248
+ _jail pgrep-j_test_2-1 /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ local name=pgrep-j_test_2-1
+ shift
+ jail -c path=/ host.hostname=pgrep-j_test_2-1 name=pgrep-j_test_2-1
ip4.addr=127.0.0.1 command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
5
+ chpid2=63249
+ _jail pgrep-j_test_2-2 /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ local name=pgrep-j_test_2-2
+ shift
+ chpid3=63250
+ jail -c path=/ host.hostname=pgrep-j_test_2-2 name=pgrep-j_test_2-2
ip4.addr=127.0.0.1 command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
5
+ sleep 0.5
+ /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ ps auxww
+ grep /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
root  63248   0.0  0.0  18476 1676  0  S+    3:02PM     0:00.01 jail -c path=/
host.hostname=pgrep-j_test_2-1 name=pgrep-j_test_2-1 ip4.addr=127.0.0.1
command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63249   0.0  0.0  18476 1676  0  S+    3:02PM     0:00.00 jail -c path=/
host.hostname=pgrep-j_test_2-2 name=pgrep-j_test_2-2 ip4.addr=127.0.0.1
command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63250   0.0  0.0   8036 1360  0  S+    3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63252   0.0  0.0   8036 1360  0  S+J   3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63253   0.0  0.0   8036 1360  0  S+J   3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63255   0.0  0.0  18608 1992  0  R+    3:02PM     0:00.00 grep
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ pgrep -f -j any /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ sort
+ pids='63252
63253'
+ echo 63248
+ echo 63249
+ sort
+ refpids='63248
63249'
+ [ '63252
63253' = '63248
63249' ]
+ echo 'not ok 2 - pgrep -j any'
not ok 2 - pgrep -j any
+ sleep 7
+ name='pgrep -j none'
+ chpid=63263
+ /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ chpid2=63264
+ _jail pgrep-j_test_3 /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
+ local name=pgrep-j_test_3
+ shift
+ jail -c path=/ host.hostname=pgrep-j_test_3 name=pgrep-j_test_3
ip4.addr=127.0.0.1 command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
5
+ sleep 0.5
+ ps auxww
+ grep /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
root  63263   0.0  0.0   8036 1360  0  S+    3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63264   0.0  0.0  18476 1676  0  S+    3:02PM     0:00.00 jail -c path=/
host.hostname=pgrep-j_test_3 name=pgrep-j_test_3 ip4.addr=127.0.0.1
command=/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63266   0.0  0.0   8036 1360  0  S+J   3:02PM     0:00.00
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5
root  63268   0.0  0.0  18608 1992  0  R+    3:02PM     0:00.00 grep
/usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ pgrep -f -j none /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt
+ pid='63264
63263'
+ [ '63264
63263' = 63263 ]
+ echo 'not ok 3 - pgrep -j none'
not ok 3 - pgrep -j none
+ cd /
+ jls jid name
+ grep pgrep-j_test
+ xargs -n 1 jail -R
jail: /usr/tests/bin/pkill/pgrep-j_test.bihmF9M/sleep.txt 5: exited on signal
15
jail: "pgrep-j_test_3" not found
+ rm -Rf /usr/tests/bin/pkill/pgrep-j_test.bihmF9M

Script done on Mon Jul  7 15:02:28 2014

The issue with pkill is valid per the manpage though. In particular the process
in the jail is getting killed after it's started up with pkill. It's easy to
reproduce (throwing in -f exhibits the problem):

# jls
   JID  IP Address      Hostname                      Path
# jail / foobar 127.0.0.1 sleep 60 &
# jls
   JID  IP Address      Hostname                      Path
    35  127.0.0.1       foobar                        /
# pkill -j none sleep
# jls
   JID  IP Address      Hostname                      Path
    35  127.0.0.1       foobar                        /
# pkill -f -j none sleep
[1]   Terminated              jail / foobar 127.0.0.1 sleep 60

-- 
You are receiving this mail because:
You are the assignee for the bug.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-191019-8-RtL2XZston>