verilator/include
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
..
fstcpp Update fst from upstream (#6771 partial) 2026-06-22 17:25:59 -04:00
vltstd Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
.gitignore Support VPI product info, warning calls, etc, bug588. 2013-01-17 21:40:37 -05:00
AGENTS.md CI: Autoformat markdown files 2026-06-15 17:44:50 -04:00
verilated.cpp Copy MT message string arguments 2026-07-13 03:29:22 -07:00
verilated.h Support dynamic loading of VPI extensions (#7727) 2026-06-28 09:28:09 -04:00
verilated.mk.in Support dynamic loading of VPI extensions (#7727) 2026-06-28 09:28:09 -04:00
verilated.v Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_config.h.in Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_cov.cpp Support native FSM state and arc coverage (#7412) 2026-04-22 15:18:59 -04:00
verilated_cov.h Support native FSM state and arc coverage (#7412) 2026-04-22 15:18:59 -04:00
verilated_cov_key.h Support covergroups, coverpoints, and bins (#784) (#7117) 2026-06-05 09:35:01 -04:00
verilated_cov_model.h Support covergroup runtime model Phase A1 (#7728) 2026-06-12 11:40:48 -04:00
verilated_covergroup.cpp Apply 'make format' [ci skip] 2026-06-29 14:58:00 +00:00
verilated_covergroup.h Support covergroup runtime model Phase A1 (#7728) 2026-06-12 11:40:48 -04:00
verilated_dpi.cpp Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_dpi.h Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_force.h Fix force unpacked bitselect (#7744) (#7745) 2026-06-15 21:57:59 -04:00
verilated_fst_c.cpp Fix memory leak in VerilatedFst::close() (#7899) 2026-07-08 08:48:17 +01:00
verilated_fst_c.h Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_fst_sc.cpp Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_fst_sc.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_funcs.h Optimize random initialization 2026-07-02 16:38:14 +01:00
verilated_imp.h Internals: clangtidy cleanups. No functional change intended (#7343) 2026-03-27 23:14:18 -04:00
verilated_intrinsics.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_probdist.cpp Internals: clangtidy cleanups. No functional change intended (#7343) 2026-03-27 23:14:18 -04:00
verilated_profiler.cpp Internals: clangtidy cleanups. No functional change intended (#7343) 2026-03-27 23:14:18 -04:00
verilated_profiler.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_random.cpp Fix solve-before over array variables failing randomization (#7876) 2026-07-11 20:44:37 -04:00
verilated_random.h Fix scoped randomize with array members under rand_mode (#7877) 2026-07-11 20:28:49 -07:00
verilated_saif_c.cpp Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_saif_c.h Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_saif_sc.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_save.cpp Internals: clangtidy cleanups. No functional change intended (#7343) 2026-03-27 23:14:18 -04:00
verilated_save.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_sc.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_sc_trace.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_std.sv IEEE-compliant, fair `std::semaphore` (#7435) (#7605) 2026-05-18 11:11:42 +02:00
verilated_std_waiver.vlt Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_sym_props.h Support VPI access to unpacked struct members (#7823) 2026-06-23 07:04:51 -04:00
verilated_syms.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_threads.cpp Fix cpu pinning when no 'core id' present in /proc/cpuinfo (#7599) 2026-05-15 14:45:39 -04:00
verilated_threads.h Internals: clangtidy cleanups. No functional change intended (#7343) 2026-03-27 23:14:18 -04:00
verilated_timing.cpp Support per-process RNG for process::srandom() and object seeding (#7408) (#7415) 2026-04-13 13:58:53 -04:00
verilated_timing.h Fix `$finish` to immediately stop executing code from non-final blocks (#7213 partial) (#7390). 2026-04-09 17:49:57 -04:00
verilated_trace.h Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_trace_imp.h Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_types.h Fix heap-use-after-free in `VlRNG::VlRNG()` (#7865) 2026-07-03 06:38:48 -04:00
verilated_vcd_c.cpp Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_vcd_c.h Fix erroneous implicit conversions of VlWide (#7642) 2026-05-22 20:05:08 +01:00
verilated_vcd_sc.cpp Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_vcd_sc.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilated_vpi.cpp Support VPI access to unpacked struct members (#7823) 2026-06-23 07:04:51 -04:00
verilated_vpi.h Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
verilatedos.h Support printing enum names for %p and %s (#5523) (#7338 repair) (#7521) (#7527) 2026-06-03 14:55:00 -04:00
verilatedos_c.h Support TERMUX (#7559). [Laurent CHARRIER] 2026-05-10 08:20:32 -04:00