This is also a kernel bug. The manual page for msync() says: RETURN VALUE On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
Yet here an strace shows: msync(0xb630c000, 8564, MS_SYNC) = 524288 This is AOP_WRITEPAGE_ACTIVATE, which include/linux/fs.h says may be returned by writepage() methods on address space mappings. Like some other parts of the kernel, unionfs returns this from its writepage() method. The call chain appears to go like this: sys_msync -> do_fsync -> filemap_fdatawrite -> __filemap_fdatawrite -> __filemap_fdatawrite_range -> do_writepages -> generic_writepages -> write_cache_pages -> __writeback -> unionfs_writepage. When unionfs_writepage returns AOP_WRITEPAGE_ACTIVATE, write_cache_pages does check for this and unlocks the page, but it doesn't sanitise the return code (I don't know exactly where this ought to happen). As a result, that return code wrongly propagates all the way back up to userspace. It is possible to work around this in apt by simply checking msync() < 0 rather than msync() != 0; I've tested this and 'apt-get update' now works fine. I'll upload this now, which will be good enough for beta. -- crashes with SystemError: E:Unable to write mmap - msync https://bugs.launchpad.net/bugs/144001 You received this bug notification because you are a member of Ubuntu Bugs, which is the bug contact for Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs