[Bug 191019] pgrep/pkill -j testcases fail on 11-CURRENT
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Jul 7 22:12:43 UTC 2014
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191019
--- Comment #3 from yaneurabeya at 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.
More information about the freebsd-bugs
mailing list