Tags: DynamoRIO/dynamorio
Tags
i#6938 sched migrate: Add input lock to queue pop result (#7000) Adds a missing input lock to the result of popping from the queue. Changes set_cur_input to set the prior input's last_run_time, etc. *before* adding to the ready queue. Tested by running ThreadSanitizer on the same internal test where it reported a race in reading input_info_t.last_run_time by pop_from_ready_queue_hold_locks while not holding a lock (during a rebalance), versus set_cur_input writing to that field. Issue: #6938
i#6981: Use consistent version for upload-artifact and download-artif… …act (#6983) Changes the version used for upload-artifact and download-artifact actions to the current one recommended at https://github.com/actions/upload-artifact and https://github.com/actions/download-artifact. For these two actions, "v4" points to the latest available v4.x.x release, as evidenced by the commit hash for the versions at https://github.com/actions/download-artifact/tags and https://github.com/actions/upload-artifact/tags. So we would still be using the latest version as suggested by the security advisory for download-artifact (GHSA-cxww-7g56-2vh6). PR #6964 bumped the download-artifact version but not the upload-artifact which caused a mismatch and the #6981 issue. Test run worked fine: https://github.com/DynamoRIO/dynamorio/actions/runs/10835746272 Fixes: #6981
i#6981: Use consistent version for upload-artifact and download-artifact Changes the version used for upload-artifact and download-artifact to the current one recommended at https://github.com/actions/upload-artifact and https://github.com/actions/download-artifact. Fixes: #6981
i#6733 missing exit: Suppress drmemtrace invariant check (#6967) Temporarily suppresses the drmemtrace invariant checker test for a thread exit record in online mode as it is happening frequently enough in our tests that it is blocking progress, though at the same time it is very difficult to reproduce locally and figure it out. We want our tests green as a priority for now and can re-enable once someone figures out the root cause. This only affects online mode. Issue: #6733
i#6959 all-unsched: Revert only-unscheduled fix (#6960) Reverts a fix for a bug in the scheduler where it let a thread going unscheduled continue running if there are no other non-running-now scheduleable inputs. This triggered too-frequent all-unscheduled cases and the current timeout for those is too high, causing tail delays. We'll re-instate the fix once we add an early exit feature for that scenario. Issue: #6959
i#5505 kernel tracing: Delay syscall_idx marker after PT trace (#6935) Delays outputting the TRACE_MARKER_TYPE_SYSCALL_IDX marker to the post-syscall callback (instead of the pre-syscall callback where it is output currently) where we also output the PT trace. Some drmemtrace derivations may interleave user-space and PT trace data, which means we want the PT trace to be read before the syscall_idx marker. If a signal interrupts the syscall, then the syscall_idx marker will be written to trace before the PT trace: we want to avoid this. Relaxes invariant checks related to the syscall_num marker before the syscall trace start marker for PT instr-only traces. In the case described above, there will be no syscall_num marker immediately before the syscall trace start. Added a comment noting the complexities of handling this case, which exist even without the ordering constraint described above. Verified on an Intel-PT hardware that the related tests pass: ``` 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 The following tests passed: code_api|client.drpttracer_SUDO-test ``` Issue: #5505
i#6921: Fix heap allocation on latest Linux kernel (#6922) Fixes 3 problems hit on recent Linux kernels where our mmap hints are being ignored: 1) os_heap_reserve_in_region()'s POINTER_MAX check fails as the end is aligned, causing an unnecessary bounded-region search. 2) vmm_place_vmcode() tries smaller sizes on failure but does not propagate the new size to the caller, resulting in memory corruption. 3) os_heap_reserve() for Linux now uses the new-ish MAP_FIXED_NOREPLACE to get the behavior various code expects without risk of clobbering. Tested on a 6.7.12 kernel where raw2trace failed up front reliably without these fixes but now succeeds. Further tested the size propagation with the other fixes disabled and now we have a graceful failure instead of memory corruption and a weird crash: ``` $ clients/bin64/drmemtrace_launcher -indir drmemtrace.*.dir <Full size vmm heap allocation failed> <Application <path>/clients/bin64/drmemtrace_launcher (3686844). Out of memory. Program aborted. Source I, type 0x0000000000000001, code 0x0000000000000001.> ``` Fixes #6921
i#6893: Delete unused cacheline snoop objects. (#6906) The snoop cache tracks sharing for each cacheline accessed. The prior code never deleted these tracking structures once they were allocated, causing the tracking data to grow with every new cacheline touched. This change deletes cacheline trackers once the cacheline is no longer present in any tracked cache. It also changes the container used for tracking from a vector of bools to a set of cache IDs, to simplify snooped cache lookup and iteration. Fixes: #6893
i#6897 sched file: Add schedule file output to record_filter (#6902) Leverages the new schedule file library in the drmemtrace record_filter to produce schedule files for derived traces, which were previously missing. Adds schedule file checks to the record filter unit tests. The existing end-to-end tests run invariant_checker which checks schedule file contents now that they're created. Adds a missing check for print_stats failing to record_filter_launcher. Fixes #6897
PreviousNext