Bug 2030870
| Summary: | valgrind: Please handle the rseq system call | |||
|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Florian Weimer <fweimer> | |
| Component: | valgrind | Assignee: | Mark Wielaard <mjw> | |
| Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | |
| Severity: | unspecified | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 35 | CC: | aoliva, arjun, codonell, dj, dodji, fweimer, jakub, law, mcermak, mfabian, mjw, pfrankli, rth, sipoyare | |
| Target Milestone: | --- | |||
| Target Release: | --- | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | valgrind-3.18.1-7.fc35 | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 2030872 (view as bug list) | Environment: | ||
| Last Closed: | 2021-12-21 01:14:38 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 2030872 | |||
|
Description
Florian Weimer
2021-12-09 23:00:46 UTC
OK, so if I understand the glibc rseq support correctly it involves reimplementing sched_getcpu using rseq, so basically we would like something like the following to "work" correctly (return zero, without any extra warnings/output) under valgrind:
#define _GNU_SOURCE
#include <sched.h>
#include <unistd.h>
#include <sys/syscall.h>
#include <stdio.h>
#include <stdint.h>
static int sys_rseq (volatile void *rseq_abi, uint32_t rseq_len,
int flags, uint32_t sig)
{
return syscall (__NR_rseq, rseq_abi, rseq_len, flags, sig);
}
int
main ()
{
int e = 0;
if (sys_rseq (NULL, 0, 0, 0) == 0)
{
puts ("BAD: rseq succeeded ????");
e = 1;
}
if (sched_getcpu () == -1)
{
puts ("BAD: sched_getcpu failed ????");
e = 1;
}
return e;
}
Which currently gives:
$ valgrind -q ./rseq_test
--569834-- WARNING: unhandled amd64-linux syscall: 334
--569834-- You may be able to write your own handler.
--569834-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--569834-- Nevertheless we consider this a bug. Please report
--569834-- it at http://valgrind.org/support/bug_reports.html.
$ echo $?
0
sched_getcpu does not do a system call with rseq (neither rseq nor anything else), so that check is redundant. The rseq system call looks fine as a smoke test. I proposed implementing rseq as ENOSYS upstream: https://bugs.kde.org/show_bug.cgi?id=405377 And I am building valgrind-3.18.1-6.fc36 for rawhide with the proposed patch. FEDORA-2021-f951dad05f has been submitted as an update to Fedora 35. https://bodhi.fedoraproject.org/updates/FEDORA-2021-f951dad05f FEDORA-2021-f951dad05f has been pushed to the Fedora 35 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2021-f951dad05f` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-f951dad05f See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2021-f951dad05f has been pushed to the Fedora 35 stable repository. If problem still persists, please make note of it in this bug report. |