[ 
https://issues.apache.org/jira/browse/HDFS-4178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13496622#comment-13496622
 ] 

Andy Isaacson commented on HDFS-4178:
-------------------------------------

bq. The data corruption occurs when the process opens a new file descriptor for 
its data channel and gets file descriptor 2

Yep, exactly.  If an app does {{fopen("datafile", "w+")}} (or the Java 
equivalent) and is run under {{someapp 2>&-}} the file {{datafile}} will be 
opened for write as filedescriptor 2.  If the app then triggers glibc's "bad 
free() detected" codepath (among many others), the error message will 
potentially be written to the current file position in {{datafile}}.

(glibc has a workaround for the most common case, it opens {{/dev/tty}} for the 
error message in interactive sessions, but it still does corrupt output files 
when run in a noninteractive session with {{cron}}, {{at}}, {{batch}}, or at 
startup time from {{/etc/init.d}}.)
                
> shell scripts should not close stderr
> -------------------------------------
>
>                 Key: HDFS-4178
>                 URL: https://issues.apache.org/jira/browse/HDFS-4178
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: scripts
>    Affects Versions: 2.0.2-alpha
>            Reporter: Andy Isaacson
>            Assignee: Andy Isaacson
>         Attachments: hdfs4178.txt
>
>
> The {{start-dfs.sh}} and {{stop-dfs.sh}} scripts close stderr for some 
> subprocesses using the construct
> bq. {{2>&-}}
> This is dangerous because child processes started up under this scenario will 
> re-use filedescriptor 2 for opened files.  Since libc and many other 
> codepaths assume that filedescriptor 2 can be written to in error conditions, 
> this can potentially result in data corruption.
> Much better to redirect stderr using the construct {{2>/dev/null}}.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to