{"record":{"id":"1e54d52d8b4a219b","repo":"bevyengine/bevy","slug":"failed-to-create-render-thread","errorCode":null,"errorMessage":"Failed to create render thread","messagePattern":"Failed to create render thread","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_render/src/pipelined_rendering.rs","lineNumber":213,"sourceCode":"                    let Some(Ok(mut render_app)) = sent_app else {\n                        break;\n                    };\n\n                    {\n                        #[cfg(feature = \"trace\")]\n                        let _sub_app_span =\n                            bevy_log::info_span!(\"sub app\", name = ?RenderApp).entered();\n                        render_app.update();\n                    }\n\n                    if render_to_app_sender.send_blocking(render_app).is_err() {\n                        break;\n                    }\n                }\n\n                bevy_log::debug!(\"exiting pipelined rendering thread\");\n            })\n            .expect(\"Failed to create render thread\");\n    }\n}\n\n// This function waits for the rendering world to be received,\n// runs extract, and then sends the rendering world back to the render thread.\nfn renderer_extract(app_world: &mut World, _world: &mut World) {\n    app_world.resource_scope(|world, main_thread_executor: Mut<MainThreadExecutor>| {\n        world.resource_scope(|world, mut render_channels: Mut<RenderAppChannels>| {\n            // we use a scope here to run any main thread tasks that the render world still needs to run\n            // while we wait for the render world to be received.\n            if let Some(mut render_app) = ComputeTaskPool::get()\n                .scope_with_executor(true, Some(&*main_thread_executor.0), |s| {\n                    s.spawn(async { render_channels.recv().await });\n                })\n                .pop()\n                .unwrap()\n            {\n                render_app.extract(world);","sourceCodeStart":195,"sourceCodeEnd":231,"githubUrl":"https://github.com/bevyengine/bevy/blob/8d743eb7dc7fcff57a7d5744d0bbf89620b1b145/crates/bevy_render/src/pipelined_rendering.rs#L195-L231","documentation":"Panic in PipelinedRenderingPlugin::cleanup: thread::Builder::spawn to create the dedicated render thread returned an error (e.g. resource limits, permission to create threads), so pipelined rendering cannot start.","triggerScenarios":"Thrown at crates/bevy_render/src/pipelined_rendering.rs:182 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reduce thread count or system thread limits pressure","Run without pipelined rendering (PipelinedRenderingPlugin) if thread creation is blocked","Check sandbox/container thread limits"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8d743eb7dc7fcff57a7d5744d0bbf89620b1b145","analyzedAt":"2026-08-20T16:12:39.808Z","contentChangedAt":"2026-08-20T16:12:39.808Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}