Hi Thomas,
The new OutputAnalyzer methods are new:
496: now that we have Immutable Lists, can the filterByKeyword argument
be a List<String>?
List<String> interesting = List.of( "fork", "clone", "vfork", "exec",
"/bin/true", "jspawnhelper" );
497: Instead of passing an int, pass the String itself
480, 485: that is returned from getStdout() or getStderr().
The body of the method could probably be nicely written using the Stream
API.
(except for the line numbers). I'm not sure the line numbers are useful
in this case
based since the strace output is not shown anywhere or seen in the full.
<string>.lines().filter()...
Add the javadoc to the methods so its clear how to use them since this
is a public test framework.
Regards, Roger
On 02/08/2019 04:38 AM, Thomas Stüfe wrote:
Hi Roger, Martin,
next version:
http://cr.openjdk.java.net/~stuefe/webrevs/8213192--(process)-change-the-process-launch-mechanism-default-on-linux-to-be-posix_spawn/webrev.02/webrev
<http://cr.openjdk.java.net/%7Estuefe/webrevs/8213192--%28process%29-change-the-process-launch-mechanism-default-on-linux-to-be-posix_spawn/webrev.02/webrev>
- did massage the comment in ProcessImpl.c
- made the test more resilient by scanning for the strace tool and by
silently ignoring all problems stemming from strace or the payload
binary not being there. The test now only fails if the forks were
successully executed but it does not seem to use posix-spawn.
- added output to the test by printing the "interesting" lines of the
strace output. Note that this filtering is not really sophisticated
and will show all thread related clone() calls as well:
614 [pid 12447] <... clone resumed> child_stack=0x7fe00c4baff0,
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
parent_tidptr=0x7fe00c4bb9d0, tls=0x7fe00c4bb700,
child_tidptr=0x7fe00c4bb9d0) = 12452
646 [pid 12447] clone(/usr/bin/strace: Process 12453 attached
649 [pid 12447] <... clone resumed> child_stack=0x7fe00c3b9ff0,
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
parent_tidptr=0x7fe00c3ba9d0, tls=0x7fe00c3ba700,
child_tidptr=0x7fe00c3ba9d0) = 12453
....
I am sure this could be made more intelligent but lets keep it simple
for now.
- I removed the helperPath() methods Roger mentioned, they are not
needed anymore.
@Martin: I like the -e signal=none -e trace=process idea but I'm not
sure if all versions of strace support these options. I think the
strace output is small enough for this small use case, some kB only.
Cheers, Thomas
On Thu, Feb 7, 2019 at 6:01 PM Thomas Stüfe <thomas.stu...@gmail.com
<mailto:thomas.stu...@gmail.com>> wrote:
Hi all,
second version, including the updated comment in ProcessImpl.c
Martin requested:
http://cr.openjdk.java.net/~stuefe/webrevs/8213192--(process)-change-the-process-launch-mechanism-default-on-linux-to-be-posix_spawn/webrev.01/webrev/index.html
<http://cr.openjdk.java.net/%7Estuefe/webrevs/8213192--%28process%29-change-the-process-launch-mechanism-default-on-linux-to-be-posix_spawn/webrev.01/webrev/index.html>
@Roger: thanks for feeding this into your tests. I still try to
get it to run thru jdk-submit, but that seems to be stuck again..
Cheers, Thomas
On Wed, Feb 6, 2019 at 10:29 AM Thomas Stüfe
<thomas.stu...@gmail.com <mailto:thomas.stu...@gmail.com>> wrote:
Hi all
Bug: https://bugs.openjdk.java.net/browse/JDK-8213192
webrev:
http://cr.openjdk.java.net/~stuefe/webrevs/8213192--(process)-change-the-process-launch-mechanism-default-on-linux-to-be-posix_spawn/webrev.00/webrev/index.html
<http://cr.openjdk.java.net/%7Estuefe/webrevs/8213192--%28process%29-change-the-process-launch-mechanism-default-on-linux-to-be-posix_spawn/webrev.00/webrev/index.html>
(@Roger: I hope you do not mind? The bug is assigned to you
but since I happened to play around with posix_spawn I
prepared this webrev. If you rather do this change, that is
fine and I will leave it to you.)
When we added the possibility to use posix_spawn as underlying
implementation for Runtime.exec() on Linux with
https://bugs.openjdk.java.net/browse/JDK-8212828, we agreed to
keep VFORK as default until work on 13 starts. So now would be
a good time to switch the default to posix_spawn to get a good
testing window. Note that at SAP we run our VMs internally
with posix_spawn as default since some months and have not
seen problems.
As for the fix, I added a test which tests that the default is
indeed posix_spawn - not sure whether this is overdoing it
though. Also, I use strace for the test, and /bin/true, and
while strace is usually available and reachable by path
resolution, I am afraid on some test machines it may not. What
do you think, should I leave the test out?
The fix ran through all java/lang/ProcessBuilder jtreg tests ok.
Thanks, Thomas