Request for Review: 5049299: (process) Use posix_spawn, not fork, on S10 to avoid swap exhaustion
David Holmes
david.holmes at oracle.com
Fri Nov 30 02:31:41 UTC 2012
Hi Rob,
This is only a superficial scan.
The changes in java/java/makefile look pretty horrible. What are all
those -R entries?
We will need equivalent changes for the new build system before this is
pushed.
Is the spawn use BSD specific (as per UnixProcess.java.BSD) or Apple
specific (as per __APPLE_ in UNIXProcess_md.c) ?
Are the UnixProcess.java files similar enough that we could use a single
template and generate the per-OS variants?
In UNIXProcess_md.c:
209 #ifdef _CS_PATH
210 char *pathbuf;
211 size_t n;
212 n = confstr(_CS_PATH,NULL,(size_t) 0);
213 pathbuf = malloc(n);
214 if (pathbuf == NULL)
215 abort();
216 confstr(_CS_PATH, pathbuf, n);
217 return pathbuf;
218 #else
what is _CS_PATH and why are we calling abort()? !!!!
What is all the xx_ naming ??
David
-----
On 23/11/2012 7:27 AM, Rob McKenna wrote:
> Hi folks,
>
> Looking for a review for the webrev below, which also resolves:
>
> 7175692: (process) Process.exec should use posix_spawn [macosx]
>
> For additional context and a brief description it would be well worth
> looking at the following thread started by Michael McMahon, who did the
> brunt of the work for this fix:
>
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-May/thread.html#1644
>
>
> Basically the fix aims to swap fork for posix_spawn as the default
> process launch mechanism on Solaris and Mac OSX in order to avoid swap
> exhaustion issues encountered with fork()/exec(). It also offers a flag
> (java.lang.useFork) to allow a user to revert to the old behaviour.
>
> I'm having trouble seeing the wood for the trees at this point so I'm
> anticipating plenty of feedback. In particular I'd appreciate some
> discussion on:
>
> - The binary launcher name & property name may need some work. A more
> general property ("java.lang.launchMechanism") to allow a user to
> specify a particular call was mooted too. It may be more future proof
> and I'm completely open to that. (e.g.
> launchMechanism=spawn|fork|vfork|clone - we would obviously ignore
> inapplicable values on a per-platform basis)
> - I'd like a more robust way of checking that someone isn't trying to
> use jprochelper outside of the context for which it is meant.
> - The decision around which call to use getting moved to the java level
> and away from the native preprocessor.
>
> The webrev is at:
>
> http://cr.openjdk.java.net/~robm/5049299/webrev.01/
> <http://cr.openjdk.java.net/%7Erobm/5049299/webrev.01/>
>
> Thanks a lot,
>
> -Rob
>
More information about the core-libs-dev
mailing list