bevyengine/bevy · error
Failed to create {file_path:?}
Error message
Failed to create {file_path:?} What it means
Panic during auto-registration data export: the derive macro's generated code failed to create/open the per-crate registration-fns file under the build directory (keyed by CARGO_CRATE_NAME). Indicates a filesystem/environment problem at compile time (permissions, missing OUT_DIR).
Source
Thrown at crates/bevy_reflect/derive/src/impls/common.rs:220
// To allow writing to this file from multiple threads during compilation it is protected by mutex.
// This static is valid for the duration of compilation of one crate and we have one file per crate,
// so it is enough to protect compilation threads from overwriting each other.
// This file is reset on every crate recompilation.
//
// It might make sense to replace the mutex with File::lock when file_lock feature becomes stable.
static REGISTRATION_FNS_EXPORT: LazyLock<Mutex<fs::File>> = LazyLock::new(|| {
let path = PathBuf::from("target").join("bevy_reflect_type_registrations");
fs::DirBuilder::new()
.recursive(true)
.create(&path)
.unwrap_or_else(|_| panic!("Failed to create {path:?}"));
let file_path = path.join(env::var("CARGO_CRATE_NAME").unwrap());
let file = fs::OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open(&file_path)
.unwrap_or_else(|_| panic!("Failed to create {file_path:?}"));
Mutex::new(file)
});
let export_name = format!("_bevy_reflect_register_{}", uuid::Uuid::new_v4().as_u128());
{
let mut file = REGISTRATION_FNS_EXPORT.lock().unwrap();
writeln!(file, "{export_name}")
.unwrap_or_else(|_| panic!("Failed to write registration function {export_name}"));
// We must sync_data to ensure all content is written before releasing the lock.
file.sync_data().unwrap();
};
Some(quote! {
/// # Safety
/// This function must only be used by the `load_type_registrations` macro.
#[unsafe(export_name=#export_name)]
pub unsafe extern "Rust" fn bevy_register_type(registry: &mut #bevy_reflect_path::TypeRegistry) {View on GitHub (pinned to 396ca72708)
Solutions
- Check filesystem permissions and disk space for the build directory
- Clean the target directory and rebuild
- Remove stale lock/scratch files left by a previous build
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/bevy_reflect/derive/src/impls/common.rs:220 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20).
Data as JSON: /api/errors/ed413f34b74b6800.
Report an issue: GitHub.