Hi, I've got this problem on two similar systems. When I mount /var/tmp as tmpfs with kernel 2.6.31/32 (didn't try with older ones), I got segfault on _all_ "cp -a" and _all_ mv operations. I also have XATTR enabled for all filesystems I use: zcat /proc/config.gz | grep XATT CONFIG_EXT2_FS_XATTR=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT4_FS_XATTR=y CONFIG_REISERFS_FS_XATTR=y CONFIG_JFFS2_FS_XATTR=y CONFIG_UBIFS_FS_XATTR=y CONFIG_CIFS_XATTR=y The most recent failed package was crossdev. >>> Starting src_install make -j5 install DESTDIR=/var/tmp/paludis/sys-devel-crossdev-20100108/image/ install -m 755 -d /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ install -m 755 crossdev /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ make -C wrappers install make[1]: Entering directory `/var/tmp/paludis/sys-devel-crossdev-20100108/work/crossdev-20100108/wrappers' install -m 755 -d /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/include/site install -m 755 cross-emerge cross-fix-root cross-pkg-config emerge-wrapper /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ cp -a etc /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/ make[1]: Leaving directory `/var/tmp/paludis/sys-devel-crossdev-20100108/work/crossdev-20100108/wrappers' make[1]: *** [install] Segmentation fault make: *** [install] Error 2 /usr/libexec/paludis/utils/emake: emake returned error 2 dmesg says: [1384337.651592] cp[4074]: segfault at 7ffe9e5fbe68 ip 00002b4c48f353f6 sp 00007ffe9e5fbe70 error 6 in libattr.so.1.1.0[2b4c48f33000+4000] going further, I recompiled attr with -O0 -ggdb and got this backtrace: gdb --args cp -a etc /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/ warning: Can not parse XML syscalls information; XML support was disabled at compile time. GNU gdb (Gentoo 7.0.1 p1) 7.0.1 Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-linux-gnu". For bug reporting instructions, please see: <http://bugs.gentoo.org/>... Reading symbols from /bin/cp...(no debugging symbols found)...done. (gdb) r Starting program: /bin/cp -a etc /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/ [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x00007ffff77ca9bf in attr_copy_fd (src_path=0x61e310 "etc/portage/env/sys-apps/busybox", src_fd=5, dst_path=0x61e340 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps/busybox", dst_fd=6, check=0x7ffff77cbc40 <attr_copy_check_permissions>, ctx=0x0) at attr_copy_fd.c:95 95 attr_copy_fd.c: No such file or directory. in attr_copy_fd.c line 95 in attr_copy_fd.c is: size = flistxattr (src_fd, names, size); Also package manager I'm using is calling flistxattr to establish proper attrs and warns about problems: ... When installing file '/var/tmp/paludis/sys-apps-attr-2.4.43/image/lib64/libattr.so.1.1.0' to '/lib64' with protection 'libattr.so.1.1.0': ... flistxattr returned 4294967274, which clearly isn't right. Are you using some crazy ricer filesystem or kernel? Installing same package (crossdev in this case) without /var/tmp as tmpfs works perfectly fine: >>> Starting src_install make -j5 install DESTDIR=/var/tmp/paludis/sys-devel-crossdev-20100108/image/ install -m 755 -d /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ install -m 755 crossdev /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ make -C wrappers install make[1]: Entering directory `/var/tmp/paludis/sys-devel-crossdev-20100108/work/crossdev-20100108/wrappers' install -m 755 -d /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/include/site install -m 755 cross-emerge cross-fix-root cross-pkg-config emerge-wrapper /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/ cp -a etc /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/ cp -a site /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/include/ sed -i -e s@__PREFIX__@/usr@g /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/bin/emerge-wrapper sed -i -e s@__TOPDIR__@/usr/share/crossdev/include/site@g /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/include/site/config.site mv /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/include/site/config.site /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/ ln -sf /var/paludis/repositories/gentoo/profiles/embedded /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/make.profile make[1]: Leaving directory `/var/tmp/paludis/sys-devel-crossdev-20100108/work/crossdev-20100108/wrappers' >>> Done src_install Generally I'm assuming the problem lies somewhere in kernel's tmpfs implementation, but it's a blind guess. Maybe some wiser heads could have a look on that and share some light. (just for the reference all my packages are from ~arch, so gcc-4.4.2, glibc-2.11) Reproducible: Always
Complete backtrace: ob wrappers # gdb --args cp -a etc /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/ warning: Can not parse XML syscalls information; XML support was disabled at compile time. GNU gdb (Gentoo 7.0.1 p1) 7.0.1 Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-linux-gnu". For bug reporting instructions, please see: <http://bugs.gentoo.org/>... Reading symbols from /bin/cp...done. (gdb) r Starting program: /bin/cp -a etc /var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/ [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x00007ffff77ca9bf in attr_copy_fd (src_path=0x625310 "etc/portage/env/sys-apps/busybox", src_fd=5, dst_path=0x625340 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps/busybox", dst_fd=6, check=0x7ffff77cbc40 <attr_copy_check_permissions>, ctx=0x0) at attr_copy_fd.c:95 95 attr_copy_fd.c: No such file or directory. in attr_copy_fd.c (gdb) bt #0 0x00007ffff77ca9bf in attr_copy_fd (src_path=0x625310 "etc/portage/env/sys-apps/busybox", src_fd=5, dst_path=0x625340 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps/busybox", dst_fd=6, check=0x7ffff77cbc40 <attr_copy_check_permissions>, ctx=0x0) at attr_copy_fd.c:95 #1 0x000000000040554c in copy_attr_by_fd (src_path=0x625310 "etc/portage/env/sys-apps/busybox", src_fd=5, dst_path=0x625340 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps/busybox", dst_fd=6, x=0x7fffffffc400) at copy.c:229 #2 0x0000000000406780 in copy_reg (src_name=0x625310 "etc/portage/env/sys-apps/busybox", dst_name=0x625340 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps/busybox", x=0x7fffffffc400, dst_mode=420, omitted_permissions=0, new_dst=0x7fffffffc05c, src_sb=0x7fffffffc230) at copy.c:842 #3 0x0000000000408f13 in copy_internal (src_name=0x625310 "etc/portage/env/sys-apps/busybox", dst_name=0x625340 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps/busybox", new_dst=false, device=18, ancestors=0x7fffffffc4a0, x=0x7fffffffc400, command_line_arg=false, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffc3ff, rename_succeeded=0x0) at copy.c:2010 #4 0x000000000040578f in copy_dir (src_name_in=0x625040 "etc/portage/env/sys-apps", dst_name_in=0x6249d0 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps", new_dst=false, src_sb=0x7fffffffc6d0, ancestors=0x7fffffffc4a0, x=0x7fffffffc8a0, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffc89f) at copy.c:311 #5 0x0000000000408c47 in copy_internal (src_name=0x625040 "etc/portage/env/sys-apps", dst_name=0x6249d0 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env/sys-apps", new_dst=false, device=18, ancestors=0x7fffffffc940, x=0x7fffffffc8a0, command_line_arg=false, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffc89f, rename_succeeded=0x0) at copy.c:1945 #6 0x000000000040578f in copy_dir (src_name_in=0x624d30 "etc/portage/env", dst_name_in=0x624d50 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env", new_dst=false, src_sb=0x7fffffffcb70, ancestors=0x7fffffffc940, x=0x7fffffffcd40, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffcd3f) at copy.c:311 #7 0x0000000000408c47 in copy_internal (src_name=0x624d30 "etc/portage/env", dst_name=0x624d50 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage/env", new_dst=false, device=18, ancestors=0x7fffffffcde0, x=0x7fffffffcd40, command_line_arg=false, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffcd3f, rename_succeeded=0x0) at copy.c:1945 #8 0x000000000040578f in copy_dir (src_name_in=0x6249b0 "etc/portage", dst_name_in=0x624a60 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage", new_dst=false, src_sb=0x7fffffffd010, ancestors=0x7fffffffcde0, x=0x7fffffffd1e0, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffd1df) at copy.c:311 #9 0x0000000000408c47 in copy_internal (src_name=0x6249b0 "etc/portage", dst_name=0x624a60 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc/portage", new_dst=false, device=18, ancestors=0x7fffffffd280, x=0x7fffffffd1e0, command_line_arg=false, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffd1df, rename_succeeded=0x0) at copy.c:1945 #10 0x000000000040578f in copy_dir (src_name_in=0x7fffffffde1f "etc", dst_name_in=0x6248d0 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc", new_dst=false, src_sb=0x7fffffffd4b0, ancestors=0x7fffffffd280, x=0x7fffffffd900, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffd6f7) at copy.c:311 #11 0x0000000000408c47 in copy_internal (src_name=0x7fffffffde1f "etc", dst_name=0x6248d0 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc", new_dst=false, device=0, ancestors=0x0, x=0x7fffffffd900, command_line_arg=true, first_dir_created_per_command_line_arg=0x7fffffffd67f, copy_into_self=0x7fffffffd6f7, rename_succeeded=0x0) at copy.c:1945 #12 0x0000000000409ab5 in copy (src_name=0x7fffffffde1f "etc", dst_name=0x6248d0 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/etc", nonexistent_dst=false, options=0x7fffffffd900, copy_into_self=0x7fffffffd6f7, rename_succeeded=0x0) at copy.c:2296 #13 0x00000000004043dd in do_copy (n_files=1, file=0x7fffffffda88, target_directory=0x7fffffffde23 "/var/tmp/paludis/sys-devel-crossdev-20100108/image///usr/share/crossdev/", no_target_directory=false, x=0x7fffffffd900) at cp.c:692 #14 0x0000000000404f7e in main (argc=4, argv=0x7fffffffda78) at cp.c:1154 (gdb)
Please please assign your own bugs.
actually I wanted someone wiser to have a look on that - like Vapier or someone from toolchain herd.
looks like Bug 217290. likely not a bug in the toolchain, but coreutils or acl/attr.
after investigation (thanks to ciaranm's and peper's help) it seems that problem is related to CONFIG_SECURITY_SMACK=y Disabling this kernel option solves everything. I will file a bug report upstream.
*** Bug 339765 has been marked as a duplicate of this bug. ***