verilator/test_regress
Jeffrey Song e011bffeab Copy MT message string arguments
Context:
The multithreaded finish, stop, fatal, and warning wrappers deferred raw const char pointers into the evaluation message queue. Temporary caller strings could be destroyed before the main thread consumed the message, while nullable arguments also require preserving the distinction between nullptr and a non-null empty string.

Changes:
- Copy nullable filename, hierarchy, and message arguments before posting each deferred callback.
- Reconstruct the original pointer nullness when invoking the existing single-threaded handlers, including non-null empty strings.
- Add an AddressSanitizer regression with independent warning, finish, stop, and fatal modes covering temporary strings, empty strings, and null arguments.
- Check pointer nullness separately from copied string contents.

Evidence:
- Each wrapper mode fails against origin/master with a heap-use-after-free and passes with this change under AddressSanitizer and C++14.
- A temporary mutation that collapses empty filenames to null is rejected by all four modes with a filename-nullness mismatch.
- Seven adjacent multithreaded tests and focused distribution checks passed during candidate verification.
- clang-format 18.1.8 and git diff --check pass.

Boundary:
The change only owns string lifetime and nullable-string identity across the MT message queue. It does not alter finish, stop, fatal, or warning policy.
2026-07-13 03:29:22 -07:00
..
t Copy MT message string arguments 2026-07-13 03:29:22 -07:00
.gdbinit
.gitignore
AGENTS.md CI: Autoformat markdown files 2026-06-15 17:44:50 -04:00
CMakeLists.txt Remove multi-threaded FST tracing (#7443) 2026-04-19 16:02:12 +01:00
Makefile Test: Remove old Makefile rules 2026-04-13 21:09:09 -04:00
Makefile_obj
driver.py Tests: Add TSan and failing multi-threaded data race test (#7913) 2026-07-10 14:34:51 +01:00
input.vc
input.xsim.vc
tsan.supp Tests: Add TSan and failing multi-threaded data race test (#7913) 2026-07-10 14:34:51 +01:00