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

ASSERT "vsyscall incorrect assumption" on AMD 32-bit #2491

Open
derekbruening opened this issue Jan 14, 2024 · 0 comments
Open

ASSERT "vsyscall incorrect assumption" on AMD 32-bit #2491

derekbruening opened this issue Jan 14, 2024 · 0 comments

Comments

@derekbruening
Copy link
Contributor

derekbruening commented Jan 14, 2024

This is now showing up on the GA CI VM's since they now use AMD hardware.

Xref DynamoRIO/dynamorio#6417 where 32-bit AMD machines added to GA CI caused a lot of test
failures. This looks similar.

https://github.com/DynamoRIO/drmemory/actions/runs/7515048417/job/20458582246?pr=2490

15:   ~~Dr.M~~ ASSERT FAILURE (thread 43342):
15:   /home/runner/work/drmemory/drmemory/drsyscall/drsyscall_linux.c:239:
15:   !is_using_sysint() (vsyscall incorrect assumption)

This ends up with these 32-bit debug tests failing beyond the ignored ones on the ci-x86 and ci-clang suites:

drmemory-dbg-32: 113 tests passed, **** 11 tests failed, but ignoring 6 for i1938: ****
	selfmod 
	clone 
	syscalls_unix 
	pthread_test 
	realloc 
derekbruening pushed a commit that referenced this issue Jan 15, 2025
…2526)

The definition of strcasestr is

char *strcasestr(const char *text, const char *pattern);

but drmemory uses

const char *strcasestr(const char *text, const char *pattern);

This causes build errors when both /usr/include/string.h and
common/utils.h are included in linux. The definition for strcasestr for
C has always not had the `const` in the result type (going back to its
original addition to glibc in 1997). Thus we're pretty safe in not
breaking anything on *nix. The other main use case of drmemory's
strcasestr is on Windows, which does not have strcasestr.

Tested:
$ cmake && make
Also, there are failures in the clang and x86 workflows, but comparing
the logs before/after
shows all failures pre-exist this patch, no new failures.

Here is the complete audit, all failures are pre-existing.

Recorded (errantly) as i#1938 failures:
  - wrap_operators: "internal crash" (Received SIGSEGV)
    - filed as #2535
  - wrap_cs2bug: CHECK_TRUNCATE_TYPE_sbyte(new_offs) (#2342)
- pcache-use: "Usage error: meta-instr faulted? must set translation
field and handle fault!" (#2202)
  - app_suite: vsyscall incorrect assumption (#2491)
- app_suite.pattern: assert failure: save->ignore_next_delete == 0
(premature deletion)
    - filed as i#2537
  - fuzz_threads: vsyscall incorrect assumption (#2491)

Note: The above are marked as expected failures but [runsuite_wrapper.pl
hardwires the addition of "i#1938" to test
output](https://github.com/DynamoRIO/drmemory/blob/master/tests/runsuite_wrapper.pl#L281).
#2534

Not currently recorded as expected failures (all #2491 - vsyscall
incorrect assumption):
  - selfmod
  - syscalls_unix
  - clone
  - pthread_test
  - realloc

Fixes #2522
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

No branches or pull requests

1 participant