[
https://issues.apache.org/jira/browse/HADOOP-10146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13845786#comment-13845786
]
Vinod Kumar Vavilapalli commented on HADOOP-10146:
--------------------------------------------------
bq. ProcessPipeInputStream.drainInputStream's will OOM allocating an array if
in.available() returns a huge number, or may wreak havoc by incorrectly
draining the fd.
You've seen OOMs in practice? Or the closing of wrong streams?
I think I understand the race. Patch changes look good. Great that it's a no-op
in JDK 6.
May be link to the corresponding source in openJDK here for posterity?
Also, may be you should be put the exact JVM version in the comment - to ease
reasoning in the future.
> Workaround JDK7 Process fd close bug
> ------------------------------------
>
> Key: HADOOP-10146
> URL: https://issues.apache.org/jira/browse/HADOOP-10146
> Project: Hadoop Common
> Issue Type: Bug
> Components: util
> Affects Versions: 0.23.0, 2.0.0-alpha, 3.0.0
> Reporter: Daryn Sharp
> Assignee: Daryn Sharp
> Priority: Critical
> Attachments: HADOOP-10129.branch-23.patch, HADOOP-10129.patch
>
>
> JDK7's {{Process}} output streams have an async fd-close race bug. This
> manifests as commands run via o.a.h.u.Shell causing threads to hang, OOM, or
> cause other bizarre behavior. The NM is likely to encounter the bug under
> heavy load.
> Specifically, {{ProcessBuilder}}'s {{UNIXProcess}} starts a thread to reap
> the process and drain stdout/stderr to avoid a lingering zombie process. A
> race occurs if the thread using the stream closes it, the underlying fd is
> recycled/reopened, while the reaper is draining it.
> {{ProcessPipeInputStream.drainInputStream}}'s will OOM allocating an array if
> {{in.available()}} returns a huge number, or may wreak havoc by incorrectly
> draining the fd.
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)