From 796e74b078607c1e7d772f72dc5d400f359e10a5 Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Tue, 26 Mar 2024 17:27:15 -0400 Subject: [PATCH 1/2] i#6599: Relax WOW64 drmemtrace syscall invariant Relaxes a drmemtrace syscall invariant for WOW64 where raw2trace delays the "syscall" call across the 2nd set of timestamp;cpuid markers, breaking the drmemtrace invariant checker. A full solution requires #5949 to actually identify the syscall as such: the relaxations for this and prior changes are marked under that issue and will be removed when it is addressed, so we can consider Issue: #5949, $6599 Fixes #6599 --- clients/drcachesim/tools/invariant_checker.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clients/drcachesim/tools/invariant_checker.cpp b/clients/drcachesim/tools/invariant_checker.cpp index 16eef9e1f27..137d865efc1 100644 --- a/clients/drcachesim/tools/invariant_checker.cpp +++ b/clients/drcachesim/tools/invariant_checker.cpp @@ -421,6 +421,9 @@ invariant_checker_t::parallel_shard_memref(void *shard_data, const memref_t &mem } #endif shard->expect_syscall_marker_ = false; + // TODO i#5949,i#6599: On WOW64 the "syscall" call is delayed by raw2trace + // acros the 2nd timestamp+cpuid; we disable this check until that is solved. +#if !defined(WINDOWS) || defined(X64) // We expect an immediately preceding timestamp + cpuid. if (shard->trace_version_ >= TRACE_ENTRY_VERSION_FREQUENT_TIMESTAMPS) { report_if_false( @@ -432,6 +435,7 @@ invariant_checker_t::parallel_shard_memref(void *shard_data, const memref_t &mem TRACE_MARKER_TYPE_TIMESTAMP, "Syscall marker not preceded by timestamp + cpuid"); } +#endif } if (memref.marker.type == TRACE_TYPE_MARKER && memref.marker.marker_type == TRACE_MARKER_TYPE_MAYBE_BLOCKING_SYSCALL) { From cfd3da1b6c3fcdeaf74236baa4fb1b1c63c2eb13 Mon Sep 17 00:00:00 2001 From: Derek Bruening Date: Wed, 27 Mar 2024 10:35:12 -0400 Subject: [PATCH 2/2] Remove entries for 4 tests marked ignore due to this issue --- suite/runsuite_wrapper.pl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/suite/runsuite_wrapper.pl b/suite/runsuite_wrapper.pl index e9135e9331c..aa8ee95a113 100755 --- a/suite/runsuite_wrapper.pl +++ b/suite/runsuite_wrapper.pl @@ -246,10 +246,6 @@ 'code_api,thread_private,disable_traces|common.decode-stress' => 1, # i#1807 'code_api,thread_private,tracedump_binary|common.decode-stress' => 1, # i#1807 'code_api|client.file_io' => 1, # i#5802 - 'code_api|tool.drcacheoff.windows-invar' => 1, # i#6599 - 'code_api|tool.drcacheoff.invariant_checker' => 1, # i#6599 - 'code_api|tool.drcacheoff.getretaddr_record_replace_retaddr' => 1, # i#6599 - 'code_api|tool.record_filter' => 1, # i#6599 ); %ignore_failures_64 = (