Closed
Description
Code
I tried to run cargo llvm-cov
on this code:
use abi_stable::utils::{ffi_panic_message, PanicInfo};
#[no_mangle]
pub extern "C" fn lib_get_module() {
ffi_panic_message(&PanicInfo {
file: "abc",
line: 0,
});
}
I expected the tool to work normally, but instead, this happened:
error: Failed to load coverage: 'target/llvm-cov-target/debug/deps/cov_bug_repro-3c4d51dd97237a75': Malformed coverage data
Please note this is the most minimal reproducible example I've been able to find.
Removing either the no_mangle
attribute or the ffi_panic_message
call does not reproduce the error, but the extern "C"
has not effect.
I've tried to remove the abi_stable
dependency but putting the required code in the same file or in a different crate (in the same workspace) does not reproduce the error.
Associated abi_stable
code
pub mod utils {
/// Information about a panic, used in `ffi_panic_message`.
#[derive(Debug, Copy, Clone)]
pub struct PanicInfo {
///
pub file: &'static str,
///
pub line: u32,
}
/// Prints an error message for attempting to panic across the
/// ffi boundary and aborts the process.
#[inline(never)]
#[cold]
pub fn ffi_panic_message(info: &'static PanicInfo) -> ! {
eprintln!("\nfile:{}\nline:{}", info.file, info.line);
eprintln!("Attempted to panic across the ffi boundary.");
eprintln!("Aborting to handle the panic...\n");
std::process::exit(1);
}
}
Version it worked on
It most recently worked on: 1.73.0
Version with regression
rustc --version --verbose
:
rustc 1.74.0-beta.5 (efc300e54 2023-11-07)
binary: rustc
commit-hash: efc300e5460fd1ed057b882e9e29adfdd217eeef
commit-date: 2023-11-07
host: x86_64-unknown-linux-gnu
release: 1.74.0-beta.5
LLVM version: 17.0.4
@rustbot modify labels: +regression-from-stable-to-beta -regression-untriaged