qemu-mipsn32el and qemu-mipsn32 problems with coreutils-9*, fadvise64 or fallocate related?
Host environment
- Gentoo Linux
Linux demeter 5.15.52-gentoo-dist #1 SMP Sun Jul 3 05:21:48 -00 2022 x86_64 AMD Ryzen 7 3700X 8-Core Processor AuthenticAMD GNU/Linux- qemu-mipsn32el user mode emulation via binfmt-misc
- QEMU version: both 7.0 and 7.1
Emulated/Virtualized environment
- Release engineering chroot-based stage build
-march=mips64 -mabi=n32 -mplt
Description of problem
- Recently about 15 of the ca. 250 packages in our system set fail during
make install. A typical error is
/usr/bin/install: error deallocating '/var/tmp/portage/sys-apps/groff-1.22.4/image/usr/bin/troff': Invalid argument
- Given the timing and the involved binaries (most of the times
install, but alsocp), I suspect this was triggered by coreutils-9 - The problem seems to only occur on ext4 (our release engineering box), but not on btrfs (my home development box)
- The problem seems to be limited to n32 (both big and little endian)
Here's a run with strace functionality enabled:
dilfridge-mips64el-n32 /var/tmp/portage/sys-apps/groff-1.22.4/work/groff-1.22.4 # /usr/bin/qemu-mipsn32el -strace /usr/bin/install troff '/var/tmp/portage/sys-apps/groff-1.22.4/image/usr/bin'
3216 brk(NULL) = 0x40032000
3216 mmap(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3f7ba000
3216 uname(0x3fffebb0) = 0
3216 access("/etc/ld.so.preload",R_OK) = -1 errno=2 (No such file or directory)
3216 openat(AT_FDCWD,"/etc/ld.so.cache",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
3216 statx(3,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe280) = 0
3216 mmap(NULL,11294,PROT_READ,MAP_PRIVATE,3,0) = 0x3f7b7000
3216 close(3) = 0
3216 openat(AT_FDCWD,"/lib32/libacl.so.1",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
3216 read(3,0x3fffe4c4,512) = 512
3216 statx(3,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe220) = 0
3216 mmap(NULL,197008,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3f786000
3216 mmap(0x3f790000,131472,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0) = 0x3f790000
3216 munmap(0x3f786000,40960) = 0
3216 munmap(0x3f7b1000,20880) = 0
3216 mprotect(0x3f797000,98304,PROT_NONE) = 0
3216 mmap(0x3f7af000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xf000) = 0x3f7af000
3216 close(3) = 0
3216 openat(AT_FDCWD,"/lib32/libattr.so.1",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
3216 read(3,0x3fffe4b4,512) = 512
3216 statx(3,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe210) = 0
3216 mmap(NULL,196864,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3f75f000
3216 mmap(0x3f760000,131328,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0) = 0x3f760000
3216 munmap(0x3f75f000,4096) = 0
3216 munmap(0x3f781000,57600) = 0
3216 mprotect(0x3f764000,110592,PROT_NONE) = 0
3216 mmap(0x3f77f000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xf000) = 0x3f77f000
3216 close(3) = 0
3216 openat(AT_FDCWD,"/lib32/libc.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
3216 read(3,0x3fffe4a4,512) = 512
3216 pread64(3,1073734640,32,34504,1065377824,0) = 32
3216 statx(3,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe200) = 0
3216 mmap(NULL,2056864,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3f569000
3216 mmap(0x3f570000,1991328,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0) = 0x3f570000
3216 munmap(0x3f569000,28672) = 0
3216 munmap(0x3f757000,33440) = 0
3216 mprotect(0x3f73c000,61440,PROT_NONE) = 0
3216 mmap(0x3f74b000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x1cb000) = 0x3f74b000
3216 mmap(0x3f752000,17056,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x3f752000
3216 close(3) = 0
3216 mmap(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3f569000
3216 set_thread_area(0x3f570580) = 0
3216 set_tid_address(1062637704,1065348616,1065377824,0,-1,0) = 3216
3216 set_robust_list(1062637712,12,1065377824,0,-1,0) = -1 errno=89 (Function not implemented)
3216 Unknown syscall 6331
3216 mprotect(0x3f74b000,16384,PROT_READ) = 0
3216 mprotect(0x3f77f000,4096,PROT_READ) = 0
3216 mprotect(0x3f7af000,4096,PROT_READ) = 0
3216 mprotect(0x4002e000,4096,PROT_READ) = 0
3216 mprotect(0x3f7fc000,8192,PROT_READ) = 0
3216 getrlimit(3,1073737152,1064664656,1062638996,1064337736,1064664656) = 0
3216 munmap(0x3f7b7000,11294) = 0
3216 getrandom(1064649956,4,1,1064337736,2130640639,1077952576) = 4
3216 brk(NULL) = 0x40032000
3216 brk(0x40053000) = 0x40053000
3216 brk(0x40054000) = 0x40054000
3216 openat(AT_FDCWD,"/usr/lib/locale/locale-archive",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
3216 statx(3,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffed58) = 0
3216 mmap(NULL,2097152,PROT_READ,MAP_PRIVATE,3,0) = 0x3f369000
3216 close(3) = 0
3216 geteuid() = 0
3216 umask(0) = 18
3216 openat(AT_FDCWD,"/var/tmp/portage/sys-apps/groff-1.22.4/image/usr/bin",O_RDONLY|O_DIRECTORY|O_LARGEFILE|O_PATH) = 3
3216 statx(AT_FDCWD,"troff",AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe998) = 0
3216 statx(3,"troff",AT_NO_AUTOMOUNT|AT_SYMLINK_NOFOLLOW,STATX_BASIC_STATS,0x3fffe998) = 0
3216 unlinkat(3,"troff",0) = 0
3216 openat(AT_FDCWD,"troff",O_RDONLY|O_LARGEFILE) = 4
3216 statx(4,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe998) = 0
3216 openat(3,"troff",O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE,0600) = 5
3216 ioctl(5,FICLONE,4) = -1 errno=122 (Operation not supported)
3216 statx(5,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe998) = 0
3216 lseek(4,0,SEEK_DATA) = 0
3216 fadvise64(4,0,0,2,1664557525,0) = -1 errno=22 (Invalid argument)
3216 lseek(4,0,SEEK_HOLE) = 716800
3216 lseek(4,0,SEEK_SET) = 0
3216 mmap(NULL,139264,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3f347000
3216 read(4,0x3f348000,131072) = 131072
3216 write(5,0x3f348000,122880) = 122880
3216 read(4,0x3f348000,131072) = 131072
3216 lseek(5,12288,SEEK_CUR) = 135168
3216 fallocate(5,FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE,122880,4290510848) = -1 errno=22 (Invalid argument)
3216 openat(AT_FDCWD,"/usr/share/locale/locale.alias",O_RDONLY|O_CLOEXEC) = 6
3216 statx(6,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT,STATX_BASIC_STATS,0x3fffe2c8) = 0
3216 read(6,0x400333a0,4096) = 2998
3216 read(6,0x400333a0,4096) = 0
3216 close(6) = 0
3216 openat(AT_FDCWD,"/usr/share/locale/C.UTF-8/LC_MESSAGES/coreutils.mo",O_RDONLY) = -1 errno=2 (No such file or directory)
3216 openat(AT_FDCWD,"/usr/share/locale/C.utf8/LC_MESSAGES/coreutils.mo",O_RDONLY) = -1 errno=2 (No such file or directory)
3216 openat(AT_FDCWD,"/usr/share/locale/C/LC_MESSAGES/coreutils.mo",O_RDONLY) = -1 errno=2 (No such file or directory)
3216 write(2,0x3fffc888,18)/usr/bin/install: = 18
3216 write(2,0x3fffc8b8,79)error deallocating '/var/tmp/portage/sys-apps/groff-1.22.4/image/usr/bin/troff' = 79
3216 openat(AT_FDCWD,"/usr/share/locale/C.UTF-8/LC_MESSAGES/libc.mo",O_RDONLY) = -1 errno=2 (No such file or directory)
3216 openat(AT_FDCWD,"/usr/share/locale/C.utf8/LC_MESSAGES/libc.mo",O_RDONLY) = -1 errno=2 (No such file or directory)
3216 openat(AT_FDCWD,"/usr/share/locale/C/LC_MESSAGES/libc.mo",O_RDONLY) = -1 errno=2 (No such file or directory)
3216 write(2,0x3fffc428,18): Invalid argument = 18
3216 write(2,0x3fffc858,1)
= 1
3216 close(5) = 0
3216 close(4) = 0
3216 munmap(0x3f347000,139264) = 0
3216 lseek(0,0,SEEK_CUR) = -1 errno=29 (Illegal seek)
3216 close(0) = 0
3216 close(1) = 0
3216 close(2)dilfridge-mips64el-n32 /var/tmp/portage/sys-apps/groff-1.22.4/work/groff-1.22.4 #
More information and debugging on request. Any advice is appreciated.
Edited by Andreas K. Hüttel