Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

i#5505 PT tracing: Add burst PT test with interrupted futex #7032

Merged
merged 10 commits into from
Oct 10, 2024

Conversation

abhinav92003
Copy link
Contributor

@abhinav92003 abhinav92003 commented Oct 9, 2024

Adds a test where one of the threads is waiting on a futex when detach occurs. PT traces for such futex syscalls have been observed to fail in libipt decode. We also do not want such PT traces because they do not represent real app behavior, as the syscall was interrupted by DR's detach signal. #7027 added logic to skip them from the written trace.

This PR adds a regression test. Unfortunately this test still does not reproduce the original libipt decode issue that was seen on a large app. Most errors seen were on a modified kernel and only a few on a regular futex. But it is still useful to add this test that ensures that the thread-final interrupted syscall is skipped.

This test also uncovers a possible transparency violation seen in the behavior of an interrupted-and-restarted futex call, where the blocked thread doesn't remember that it was supposed to wait on a different futex specified by a later FUTEX_CMP_REQUEUE call than the one specified by it in the original futex syscall.

Since the new test requires Intel-PT, verified that it passes by running it manually locally:

The following tests passed:
	code_api|tool.drcacheoff.burst_syscall_pt_SUDO

The following tests passed:
	code_api|tool.drcacheoff.kernel.simple_SUDO
	code_api|tool.drcacheoff.kernel.opcode-mix_SUDO
	code_api|tool.drcacheoff.kernel.syscall-mix_SUDO
	code_api|tool.drcacheoff.kernel.invariant-checker_SUDO

Issue: #5505
Issue: #7034

Adds test where one of the threads is waiting on a futex when detach occurs. Such futex PT traces have been observed to fail in libipt decode. We also do not want such PT traces because they do not include real app behavior. This test is to ensure we do not include such syscalls in the final trace.

Issue: #5505
clients/drcachesim/tests/burst_syscall_pt.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tests/burst_syscall_pt.cpp Outdated Show resolved Hide resolved
suite/tests/CMakeLists.txt Show resolved Hide resolved
@abhinav92003 abhinav92003 merged commit 8e694d8 into master Oct 10, 2024
17 checks passed
@abhinav92003 abhinav92003 deleted the i5505-pt-tracing-futex-test branch October 10, 2024 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants