Bug 506971 - LTP 20250530 amd64 meta bug
Summary: LTP 20250530 amd64 meta bug
Status: CONFIRMED
Alias: None
Product: valgrind
Classification: Developer tools
Component: general (other bugs)
Version First Reported In: 3.25.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on: 369032 420906 506596 309554 331311 368791 369030 418756 506806 506813 506816 506890 506910 506928 506929 506930 506967 506970 507853 507868 507873 508154 509566 509567
Blocks:
  Show dependency treegraph
 
Reported: 2025-07-12 22:33 UTC by Mark Wielaard
Modified: 2025-09-16 20:27 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Wielaard 2025-07-12 22:33:42 UTC
The following are the remaining LTP 20250530 failures on amd64

- arch_prctl01
ARCH_SET_CPUID/ARCH_GET_CPUID don't work
https://bugs.kde.org/show_bug.cgi?id=506596

- clock_gettime04
diff is:
+vdso_helpers.c:27: TINFO: Couldn't find AT_SYSINFO_EHDR
+vdso_helpers.c:72: TINFO: Couldn't find vdso_gettime()
This is because vdso_helpers.c check whether it can find AT_SYSINFO_EHDR which valgrind filters out in setup_client_stack in coregrind/m_initimg/initimg-linux.c.

- clone05
fails because vfork should suspend the parent till the child is done. Not fully analyzed yet.

- clone08
fails because valgrind doesn't support CLONE_VM without VKI_CLONE_VFORK or VKI_CLONE_FS and VKI_CLONE_FILES.
Added to ltp-excludes.txt.

- close_range02
fails because it calls clone with just CLONE_FILES, but without CLONE_VM and CLONE_FS.
Added to ltp-excludes.txt

- execveat01
Looks like we aren't handling AT_FDCWD with a relative path correctly.
https://bugs.kde.org/show_bug.cgi?id=506806

- execveat02
The following two subtests fail:
*    2) execveat() fails and returns EINVAL if flag specified is invalid.
*    3) execveat() fails and returns ELOOP if the file identified by dirfd and pathname is a symbolic link and flag includes AT_SYMLINK_NOFOLLOW.
It looks like these checks are done for relative paths, but not for absolute paths.
https://bugs.kde.org/show_bug.cgi?id=506813

- fcntl13
- fcntl13_64
Warning: unimplemented fcntl command: 999
Fixed by commit aec4871f7c9deed31f5d5606e4f9d07b43a448ec
Suppress unimplemented fcntl command warning with -q

- fcntl14
- fcntl14_64
- fcntl34
- fcntl34_64
- fcntl36
- fcntl36_64
Test timeouted, sending SIGKILL!
They do pass with export LTP_TIMEOUT_MUL=5 . But that takes too long.
Added to ltp-excludes.txt

- fork_procs
Sometimes times out under memcheck, but not always.
Should we export LTP_TIMEOUT_MUL=2?

- futex_waitv01
- futex_waitv02
- futex_waitv03
futex2, futex_waitv WARNING: unhandled amd64-linux syscall: 449
https://bugs.kde.org/show_bug.cgi?id=506816

- getcpu02
The difference is how it PASSes:

getcpu02.c:35: TINFO: Test cpu_id outside process address space
getcpu02.c:53: TPASS: getcpu() caused SIGSEGV
getcpu02.c:35: TINFO: Test node_id outside process address space
getcpu02.c:53: TPASS: getcpu() caused SIGSEGV

But under valgrind (--tool=none):

getcpu02.c:35: TINFO: Test cpu_id outside process address space
getcpu02.c:45: TPASS: getcpu(tc->cpu_id, tc->node_id) : EFAULT (14)
getcpu02.c:35: TINFO: Test node_id outside process address space
getcpu02.c:45: TPASS: getcpu(tc->cpu_id, tc->node_id) : EFAULT (14)

Needs more investigation.

- ioctl01
Warning: noted but unhandled ioctl 0x98967f with no direction hints.
This is a deliberate non-existing ioctl to check if the return value is
ENOTTY (not EINVAL). Maybe we can print our warning from the POST
handler if the ret value != ENOTTY?

- kcmp03
clone call had CLONE_VM flags set
Added to ltp-excludes.txt.

- kill11
Test timeouted, sending SIGKILL!
This is when testing SIGSTKFLT. And then it also tries SIGSYS.
https://bugs.kde.org/show_bug.cgi?id=506890

- mallinfo02
TFAIL: malloc uses sbrk when size >= 128k
Checks hblks field, which we never update. Not sure if this is a good/real testcase.

- mallinfo2_01
We should implement and override mallinfo2 like we do mallinfo.
https://bugs.kde.org/show_bug.cgi?id=506967

- mlock03
parses /proc/self/maps and mlocks ranges (which might fail but
are just reported with TINFO) with valgrind the maps are different so
the TINFOs are different. The actual test passes. So we have to ignore
all TINFOs.

- mmap04
creates mappings and then checks them in /proc/self/maps
Do we have to create a fake /proc/self/maps ?

- mmap08
mmap08.c:28: TFAIL: mmap(NULL, page_sz, PROT_WRITE, MAP_FILE | MAP_SHARED, fd, 0) expected EBADF: EINVAL (22)
The test closes fd before calling mmap and expects EBADF not EINVAL.
https://bugs.kde.org/show_bug.cgi?id=506970

- mmap17
mmap17.c:59: TFAIL: mmap failed, with unexpected error code, expected EEXIST:EACCES (13)
Uses MAP_FIXED_NOREPLACE. Tries to check that mmap at an exisiting mapping fails with EEXIST, not EACCES.
https://bugs.kde.org/show_bug.cgi?id=418756

- munlockall01
munlockall01.c:25: TBROK: Could not lock memory using mlockall():ENOMEM (12)
Works when run with priviliges, so I assume valgrind loads too much
into memory for mlockall to work?

- nanosleep01
Works locally. 

- openat202
openat202.c:62: TFAIL: resolve-no-magiclinks: openat2() passed unexpectedly
openat succeeds in opening /proc/self/exe even when
RESOLVE_NO_MAGICLINKS is given. Probably because /proc/self/exe is a
special file under valgrind.
https://bugs.kde.org/show_bug.cgi?id=506910

- personality01
Works locally.

- pipe07
pipe07.c:76: TFAIL: exp_num_pipes (1014) != num_pipe_fds (1020)
Goes through /proc/self/fd to count file descriptors, this shows a
couple more because we don't virtualize /proc/self/fd
https://bugs.kde.org/show_bug.cgi?id=331311

- pipe13
Works locally

- pipe15
pipe15.c:62: TCONF: NOFILE limit max too low: 1024 < 1024
(that message is wrong it tests nfd.rlim_max < pipe_count * 2 + 3)
The problem is that nfd.rlim_max is 524288 without valgrind,
but only 1024 under valgrind (equal to pipe_count).
As returned by getrlimit RLIMIT_NOFILE.
This happens because in coregrind/m_main.c (setup_file_descriptors) we
setup VG_(fd_soft_limit) and VG_(fd_hard_limit) to rl.rlim_cur - N_RESERVED_FDS
We could be a little bit more generous in setup_file_descriptors (if
rlim_max allows it, maybe make rlim_cur * 4 ?)
or run this test with ulimit -n 3000.

- ppoll01
commit 300d541a82d9966e833e4db9028011121253a19b
Check ppoll ufds array is safe to deref before checking fd members

- prctl10
commit e113cde88cb0f588a76d8ceaef2ce2a630d3b9a9
auxprogs/filters/prctl10 add (child) core dump filter

ptrace01
ptrace05
ptrace09

- remap_file_pages01
- remap_file_pages02
remap_file_pages is not wrapped
https://bugs.kde.org/show_bug.cgi?id=309554

- setsockopt10
Fails also without valgrind.  Should fail the same under valgrind.
But because we run quickly after each other a socket port cannot be
bound (yet) causing the output to be different. We should look into
why this test fails natively.

- semop01
Works locally

- set_thread_area01
get_thread_area and set_thread_area are only wrapped for i386 and mips,
not for amd64. https://bugs.kde.org/show_bug.cgi?id=369032

- shmctl05
unhandled amd64-linux syscall: 216
shmctl05.c:47: TCONF: syscall(216) __NR_remap_file_pages not supported on your arch
https://bugs.kde.org/show_bug.cgi?id=309554

- shmget03
Works locally.

- sighold02
Fails because it want to set the signal handler for real time sig 64,
the last one, which we use as VG_SIGVGKILL. Not clear how we would fix
this. The test simply goes to NSIG. It does check SIGRTMIN. If we
could make it also check SIGRTMAX then we could override
__libc_current_sigrtmax (see signal.h).

- signal01
signal01.c:56: TFAIL: (long)signal(SIGKILL, tc->sighandler) succeeded
Should fail with EINVAL (SIGKILL can not be reset to default)
https://bugs.kde.org/show_bug.cgi?id=506930

- sysctl04
Not investigated yet.

- sysfs01
- sysfs02
- sysfs03
- sysfs04
- sysfs05
sysfs syscall not wrapped
syscall is weird and deprecated
https://bugs.kde.org/show_bug.cgi?id=506929

- ustat01
- ustat02
ustat syscall not wrapped
syscall is deprecated, so probably unused in real programs
https://bugs.kde.org/show_bug.cgi?id=506928

- waitpid01
Doesn't handle SIGSYS
https://bugs.kde.org/show_bug.cgi?id=506890
Comment 1 Mark Wielaard 2025-07-15 21:13:49 UTC
- clone302
../../../../include/lapi/sched.h:80: TCONF: syscall(435) __NR_clone3 not supported on your arch
https://bugs.kde.org/show_bug.cgi?id=420906
Comment 2 Mark Wielaard 2025-07-15 21:21:02 UTC
mseal01
../../../../include/lapi/pkey.h:51: TCONF: pkeys are not available for test
Because we don't support RDPKRU/WRPKRU instructions.
Our pkey_alloc always returns ENOSPC.

mseal02.c:45: TFAIL: mseal(0x483d000, 18446744073709547521, 0) expected EINVAL:
+ENOMEM (12)
We should check for overflow first (EINVAL), then valid memory (ENOMEM).
Fixed in commit d7743540064c58d3dcb850804fb29f742757d853
linux mseal PRE wrapper should First check for overflow
Comment 3 Mark Wielaard 2025-08-04 13:37:17 UTC
- eventfd2_03 sometimes fails with a different TINFO order

eventfd2_03: diff -u log2err log3err:
--- log2err	2025-08-02 13:36:29.936286548 +0000
+++ log3err	2025-08-02 13:36:30.233294160 +0000
@@ -5,8 +5,8 @@
 eventfd2_03.c:36: TINFO: 
 eventfd2_03.c:39: TINFO: 
 eventfd2_03.c:36: TINFO: 
-eventfd2_03.c:39: TINFO: 
 eventfd2_03.c:42: TINFO: 
+eventfd2_03.c:39: TINFO: 
 eventfd2_03.c:45: TINFO: 
 eventfd2_03.c:42: TINFO: 
 eventfd2_03.c:45: TINFO: 

This probably comes from the fork children running in different order.
Comment 4 Mark Wielaard 2025-08-04 14:06:12 UTC
- faccessat01

faccessat01.c:49: TFAIL: faccessat(-100, faccessatdir/faccessatfile, R_OK, 0) failed: EBADF (9)

- faccessat201

faccessat201.c:50: TPASS: faccessat2(3, faccessat2file, R_OK, 0) passed
faccessat201.c:50: TFAIL: faccessat2(-1, /tmp/LTP_facejD0qP/faccessat2dir/faccessat2file, R_OK, 0) failed: EBADF (9)
faccessat201.c:50: TFAIL: faccessat2(-100, faccessat2dir/faccessat2file, R_OK, 0) failed: EBADF (9)
faccessat201.c:50: TPASS: faccessat2(3, faccessat2file, R_OK, 512) passed
faccessat201.c:50: TFAIL: faccessat2(-1, /tmp/LTP_facejD0qP/faccessat2dir/faccessat2file, R_OK, 512) failed: EBADF (9)
faccessat201.c:50: TFAIL: faccessat2(-100, faccessat2dir/faccessat2file, R_OK, 512) failed: EBADF (9)
faccessat201.c:50: TFAIL: faccessat2(-100, faccessat2symlink, R_OK, 256) failed: EBADF (9)

This seems to be introduced by commit bc66a6e865d952ac51ffb0e63c127ce7cd977b98
Add fd_allowed and POST_newFd_RES to all syscalls that use or return fds

https://bugs.kde.org/show_bug.cgi?id=507853
Comment 5 Mark Wielaard 2025-08-04 21:50:32 UTC
- futimesat01

==695142== Warning: invalid file descriptor -100 in syscall futimesat()
futimesat01    5  TFAIL  :  futimesat01.c:85: futimesat() failed: TEST_ERRNO=EBADF(9): Bad file descriptor

futimesat doesn't handle AT_FDCWD
https://bugs.kde.org/show_bug.cgi?id=507868
Comment 6 Mark Wielaard 2025-08-04 23:36:58 UTC
- fchmodat01
- fchmodat02

fchmodat01.c:47: TFAIL: fchmodat(-100, fchmodatdir/fchmodatfile, 0600, 0) failed: EBADF (9)
fchmodat02.c:55: TFAIL: fchmodat() with invalid flag expected EINVAL: EBADF (9)

This also seems to cause a lot of arm64 LTP failures

fchmodat fchmodat2 should handle AT_FDCWD and absolute paths
https://bugs.kde.org/show_bug.cgi?id=507873