[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#563724: libc6 use syscall utimensat unimplemented by etch kernel



clone 563724 -1
clone 563724 -2
reassign -1 tar
severity -1 important
retitle -1 tar: call futimens() with a bad file descriptor
reassign -2 coreutils
severity -2 important
retitle -2 touch: call futimens() with a bad file descriptor (AT_FDCWD)
retitle 563724 futimens() is not POSIX compliant
block 563724 by -1
block 563724 by -2
thanks

On Mon, Jan 04, 2010 at 10:09:16PM +0100, Bill Allombert wrote:
> Package: libc6
> Version: 2.10.2-3
> 
> Hello Debian libc maintainers,
> 
> I run a sid chroot on top of etch, using the etch kernel linux 2.6.18-6-686,
> and dpkg started to fail with
> tar: ./preinst: Cannot utime: Bad file descriptor
> 
> touch also fails:
> 
> %mkdir /tmp/bar
> %touch /tmp/bar
> touch: setting times of `/tmp/bar': Bad file descriptor
> strace report:
> utimensat(AT_FDCWD, "/tmp/bar", NULL, 0) = -1 ENOSYS (Function not implemented)
> 
> It seems that the issue is that the etch kernel does not implement
> utimensat. 

The problem is actually different. The utimensat is called by tar or
touch, which when it does not exists fallback to futimens(). This part
hasn't changed.

futimens() in glibc is now POSIX 2008 compliant, and return -EBADF when
a bad file descriptor is passed. This is actually what tar and touch
do when it calls futimens(AT_FDCWD, ...).

I will temporarily revert this patch, and I am cloning this bug to tar
and touch so that they are fixed. I'll reapply it when they are fixed.

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net



Reply to: