Ralf Jung
Ralf Jung
This is likely related to cargo capturing JSON from the compiler.
Miri runs an arbitrary program, and that program sends information without a trailing `\n`. Specifically, it is running the libtest harness (without concurrency), which uses that to show the name...
FWIW Miri these days uses `target.runner` to control what happens when the executable is run, so we no longer have this problem.
Oh, turns out that for TARGET_RUNNER, one actually *can* pass extra arguments to the binary, which we could use for disambiguation. This is [causing its own problems](https://github.com/rust-lang/cargo/issues/10892), and AFAIK is...
Using `--config` for the runner, this issue could be resolved by making RUSTC_WRAPPER *always* call rustc via `$WRAPPER rustc`, instead of replacing `rustc` with the `RUSTC` env var (Cc https://github.com/rust-lang/cargo/issues/10886)....
Where is that temporary location? I just did Ctrl-C, now I am wondering.^^
I found things in `~/.rustup/tmp`.
> Instead the miri-engine runs const eval specific code for producing an allocation that "counts as heap" during const eval, but if it ends up in the final constant, it...
The problem with `push_str` affects statics as well: ```rust static B: Mutex = Mutex::new(String::from("foo")); let mut s = B.lock().unwrap(); s.push_str("bar"); // reallocates the "heap"-allocated buffer ```
> Looks like we painted ourselves into a corner. Note that contrary to what I thought, rejecting types with `Drop` does not help as my hypothetical example with a drop-free...