Skip to content

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 also cp), 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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information