{"record":{"id":"55f66d08c260963e","repo":"slint-ui/slint","slug":"recursion-detected","errorCode":null,"errorMessage":"Recursion detected","messagePattern":"Recursion detected","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/core/properties.rs","lineNumber":628,"sourceCode":"    fn has_no_binding_or_lock(handle: *mut ()) -> bool {\n        handle.addr() & (BINDING_BORROWED | BINDING_POINTER_TO_BINDING) == 0\n    }\n\n    /// Access the value.\n    /// Panics if the function try to recursively access the value\n    fn access<R>(&self, f: impl FnOnce(Option<Pin<&mut BindingHolder>>) -> R) -> R {\n        #[cfg(slint_debug_property)]\n        if self.lock_flag() {\n            unsafe {\n                let handle = self.handle.get();\n                if let Some(binding_pointer) = Self::pointer_to_binding(handle) {\n                    let binding = &mut *(binding_pointer);\n                    let debug_name = &binding.debug_name;\n                    panic!(\"Recursion detected with property {debug_name}\");\n                }\n            }\n        }\n        assert!(!self.lock_flag(), \"Recursion detected\");\n        unsafe {\n            self.set_lock_flag(true);\n            scopeguard::defer! { self.set_lock_flag(false); }\n            let handle = self.handle.get();\n            let binding =\n                Self::pointer_to_binding(handle).map(|pointer| Pin::new_unchecked(&mut *(pointer)));\n            f(binding)\n        }\n    }\n\n    /// Transfer the dependency list from the current binding back to the\n    /// handle and return the now-detached binding pointer. The binding is\n    /// **not** dropped; the caller is responsible for its lifetime.\n    ///\n    /// Returns `None` when the handle does not point to a binding.\n    fn detach_binding(&self) -> Option<*mut BindingHolder> {\n        let binding = Self::pointer_to_binding(self.handle.get())?;\n        unsafe {","sourceCodeStart":610,"sourceCodeEnd":646,"githubUrl":"https://github.com/slint-ui/slint/blob/3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016/internal/core/properties.rs#L610-L646","documentation":"Error \"Recursion detected\" thrown in slint-ui/slint.","triggerScenarios":"Thrown at internal/core/properties.rs:628 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Break the binding loop: remove the cyclic dependency between the reported properties.","Use a one-way binding or a changed handler to cut the cycle."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016","analyzedAt":"2026-08-19T23:23:16.610Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}