bevyengine/bevy · error

Failed to write registration function {export_name}

Error message

Failed to write registration function {export_name}

What it means

Panic during auto-registration: writing the generated registration function for the export (named by UUID) to the crate's registration file failed. Usually an I/O or permission issue in the build directory during compilation.

Source

Thrown at crates/bevy_reflect/derive/src/impls/common.rs:229

                .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) {
                <#type_path as #bevy_reflect_path::__macro_exports::RegisterForReflection>::__register(registry);
            }
        })
    }

    #[cfg(all(
        feature = "auto_register_inventory",
        not(feature = "auto_register_static")
    ))]

View on GitHub (pinned to 396ca72708)

Solutions

  1. Check disk space and filesystem permissions
  2. Clean the target directory and rebuild
  3. Remove stale scratch files from interrupted builds
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at crates/bevy_reflect/derive/src/impls/common.rs:229 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/e040e154d85fb96a. Report an issue: GitHub.