hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Thiltges (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-10193) fuse_dfs segfaults if uid cannot be resolved to a username
Date Tue, 22 Mar 2016 20:59:25 GMT

     [ https://issues.apache.org/jira/browse/HDFS-10193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

John Thiltges updated HDFS-10193:
    Attachment: HDFS-10193.001.patch

This patch checks the getUsername() return value in fuseConnectAsThreadUid(), following the
same pattern as get_trash_base().

> fuse_dfs segfaults if uid cannot be resolved to a username
> ----------------------------------------------------------
>                 Key: HDFS-10193
>                 URL: https://issues.apache.org/jira/browse/HDFS-10193
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: fuse-dfs
>    Affects Versions: 2.0.0-alpha, 2.6.0
>         Environment: Confirmed with Cloudera hadoop-hdfs-fuse-2.6.0+cdh5.5.0+921-1.cdh5.5.0.p0.15.el6.x86_64
on CentOS 6
>            Reporter: John Thiltges
>         Attachments: HDFS-10193.001.patch
> When a user does an 'ls' on a HDFS FUSE mount, dfs_getattr() is called and fuse_dfs attempts
to resolve the user's uid into a username string with getUsername(). If this lookup is unsuccessful,
getUsername() returns NULL leading to a segfault in hdfsConnCompare().
> Sites storing NSS info in a remote database (such as LDAP) will occasionally have NSS
failures if there are connectivity or daemon issues. Running processes accessing the HDFS
mount during this time may cause the fuse_dfs process to crash, disabling the mount.
> To reproduce the issue:
> 1) Add a new local user
> 2) su to the new user
> 3) As root, edit /etc/passwd, changing the new user's uid number
> 4) As the new user, do an ls on an HDFS FUSE mount. This should cause a segfault.
> Backtrace from fuse_dfs segfault (hadoop-hdfs-fuse-2.0.0+545-1.cdh4.1.1.p0.21.osg33.el6.x86_64)
> {noformat}
> #0  0x0000003f43c32625 in raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1  0x0000003f43c33e05 in abort () at abort.c:92
> #2  0x0000003f46beb785 in os::abort (dump_core=true) at /usr/src/debug/java-1.7.0-openjdk/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:1640
> #3  0x0000003f46d5f03f in VMError::report_and_die (this=0x7ffa3cdf86f0) at /usr/src/debug/java-1.7.0-openjdk/openjdk/hotspot/src/share/vm/utilities/vmError.cpp:1075
> #4  0x0000003f46d5f70b in crash_handler (sig=11, info=0x7ffa3cdf88b0, ucVoid=0x7ffa3cdf8780)
at /usr/src/debug/java-1.7.0-openjdk/openjdk/hotspot/src/os/linux/vm/vmError_linux.cpp:106
> #5  <signal handler called>
> #6  os::is_first_C_frame (fr=<value optimized out>) at /usr/src/debug/java-1.7.0-openjdk/openjdk/hotspot/src/share/vm/runtime/os.cpp:1025
> #7  0x0000003f46d5e071 in VMError::report (this=0x7ffa3cdf9560, st=0x7ffa3cdf93e0) at
> #8  0x0000003f46d5ebad in VMError::report_and_die (this=0x7ffa3cdf9560) at /usr/src/debug/java-1.7.0-openjdk/openjdk/hotspot/src/share/vm/utilities/vmError.cpp:1009
> #9  0x0000003f46bf0322 in JVM_handle_linux_signal (sig=11, info=0x7ffa3cdf9730, ucVoid=0x7ffa3cdf9600,
abort_if_unrecognized=1021285600) at /usr/src/debug/java-1.7.0-openjdk/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp:531
> #10 <signal handler called>
> #11 __strcmp_sse42 () at ../sysdeps/x86_64/multiarch/strcmp.S:259
> #12 0x0000000000403d3d in hdfsConnCompare (head=<value optimized out>, elm=<value
optimized out>) at /usr/src/debug/hadoop-2.0.0-cdh4.1.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_connect.c:204
> #13 hdfsConnTree_RB_FIND (head=<value optimized out>, elm=<value optimized out>)
at /usr/src/debug/hadoop-2.0.0-cdh4.1.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_connect.c:81
> #14 0x0000000000404245 in hdfsConnFind (usrname=0x0, ctx=0x7ff95013b800, out=0x7ffa3cdf9c60)
at /usr/src/debug/hadoop-2.0.0-cdh4.1.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_connect.c:220
> #15 fuseConnect (usrname=0x0, ctx=0x7ff95013b800, out=0x7ffa3cdf9c60) at /usr/src/debug/hadoop-2.0.0-cdh4.1.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_connect.c:517
> #16 0x0000000000404337 in fuseConnectAsThreadUid (conn=0x7ffa3cdf9c60) at /usr/src/debug/hadoop-2.0.0-cdh4.1.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_connect.c:544
> #17 0x0000000000404c55 in dfs_getattr (path=0x7ff950150de0 "/user/users01", st=0x7ffa3cdf9d20)
at /usr/src/debug/hadoop-2.0.0-cdh4.1.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fuse-dfs/fuse_impls_getattr.c:37
> #18 0x0000003f47c0b353 in lookup_path (f=0x15e39f0, nodeid=22546, name=0x7ff9602d0058
"users01", path=<value optimized out>, e=0x7ffa3cdf9d10, fi=<value optimized out>)
at fuse.c:1824
> #19 0x0000003f47c0d865 in fuse_lib_lookup (req=0x7ff950003fe0, parent=22546, name=0x7ff9602d0058
"users01") at fuse.c:2017
> #20 0x0000003f47c120ef in fuse_do_work (data=0x7ff9600e3f30) at fuse_loop_mt.c:107
> #21 0x0000003f44407aa1 in start_thread (arg=0x7ffa3cdfa700) at pthread_create.c:301
> #22 0x0000003f43ce893d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
> {noformat}

This message was sent by Atlassian JIRA

View raw message