RFR 9: 7021006: (process) Remove disabled clone-exec feature
Martin Buchholz
martinrb at google.com
Fri Mar 27 21:47:42 UTC 2015
On Fri, Mar 27, 2015 at 2:28 PM, Roger Riggs <Roger.Riggs at oracle.com> wrote:
> Hi Martin,
>
> That part seems both dated and arcane; it will be in the mercurial history
> none the less. I can't see how it could be applied unless we go back to
> clone.
>
>
This is information for implementers of subprocess creation, that I still
consider useful, and I personally refer to every couple of years. I would
be unhappy to see it go.
> Roger
>
>
>
> On 3/27/2015 5:21 PM, Martin Buchholz wrote:
>
> Please also keep (most of?) the below. The key piece of the history is
> that glibc did not consider clone a public supported interface, unlike
> vfork, but that might change. This comment and the contents of the glibc
> bug are an important part of Unix lore, although I'm hearing you think
> there's a better place to record the arcane history of Unix...
>
> - * - clone() with flags CLONE_VM but not CLONE_THREAD. clone() is
> - * Linux-specific, but this ought to work - at least the glibc
> - * sources contain code to handle different combinations of CLONE_VM
> - * and CLONE_THREAD. However, when this was implemented, it
> - * appeared to fail on 32-bit i386 (but not 64-bit x86_64) Linux with
> - * the simple program
> - * Runtime.getRuntime().exec("/bin/true").waitFor();
> - * with:
> - * # Internal Error (os_linux_x86.cpp:683), pid=19940, tid=2934639536
> - * # Error: pthread_getattr_np failed with errno = 3 (ESRCH)
> - * We believe this is a glibc bug, reported here:
> - * http://sources.redhat.com/bugzilla/show_bug.cgi?id=10311
> - * but the glibc maintainers closed it as WONTFIX.
> - *
>
>
>
> On Fri, Mar 27, 2015 at 2:14 PM, Roger Riggs <Roger.Riggs at oracle.com>
> wrote:
>
>> Thanks Martin,
>>
>> Updated the webrev in place to restore that context.
>>
>> Roger
>>
>>
>>
>> On 3/27/2015 5:00 PM, Martin Buchholz wrote:
>>
>> clone was never used in a released jdk.
>>
>> I would leave the internal docs. I left them in on purpose, because it
>> was not at all obvious why we chose not to use clone.
>>
>> I'm especially fond of
>>
>> - * On Linux, one might think that vfork() would be implemented using
>> - * the clone system call with flag CLONE_VFORK, but in fact vfork is
>> - * a separate system call (which is a good sign, suggesting that
>> - * vfork will continue to be supported at least on Linux).
>>
>> Deleting the implementation using clone is a better idea; it's easy to
>> resurrect in the unlikely case someone will want to.
>>
>>
>> On Fri, Mar 27, 2015 at 1:50 PM, Roger Riggs <Roger.Riggs at oracle.com>
>> wrote:
>>
>>> At one time clone() was used on Unix to spawn processes but no more.
>>> Please review the cleanup of now dead code.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~rriggs//webrev-clone-7021006
>>>
>>> Issue:
>>> https://bugs.openjdk.java.net/browse/JDK-7021006
>>>
>>> Thanks, Roger
>>>
>>>
>>
>>
>
>
More information about the core-libs-dev
mailing list