You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The issue seems to be that when we destroy a component, we don't remove the current fiber, if any. In most cases (standard UI update that destroys a component), the new fiber will already traverse the tree and remove it (see cancelFiber), but when we manually destroy an app (or a root i guess) , there may be remaining fibers that will be called.
https://odoo.github.io/owl/playground/#eyJqcyI6ImltcG9ydCB7IENvbXBvbmVudCwgdXNlU3RhdGUsIG1vdW50LCBzdGF0dXMsIG9uV2lsbFVwZGF0ZVByb3BzIH0gZnJvbSBcIkBvZG9vL293bFwiO1xuXG5jbGFzcyBDaGlsZDIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyB0ZW1wbGF0ZSA9IFwiQ2hpbGQyXCJcbiAgICBcbiAgICBzZXR1cCgpIHtcbiAgICAgICAgb25XaWxsVXBkYXRlUHJvcHMoKCkgPT4ge1xuICAgICAgICAgICBpZiAoc3RhdHVzKHRoaXMpID09PSBcImRlc3Ryb3llZFwiKSB7XG4gICAgICAgICAgICAgICBhbGVydChcIkNvbXBvbmVudCBpcyBkZXN0cm95ZWRcIik7XG4gICAgICAgICAgIH1cbiAgICAgICAgfSk7ICAgXG4gICAgfVxufVxuXG5jbGFzcyBDaGlsZDEgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyB0ZW1wbGF0ZSA9IFwiQ2hpbGQxXCJcbiAgICBzdGF0aWMgY29tcG9uZW50cyA9IHsgQ2hpbGQyIH1cbiAgICBcbiAgICBzZXR1cCgpIHtcbiAgICAgICAgb25XaWxsVXBkYXRlUHJvcHMoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDIwMDApKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5jbGFzcyBSb290IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgdGVtcGxhdGUgPSBcIlJvb3RcIlxuICAgIHN0YXRpYyBjb21wb25lbnRzID0geyBDaGlsZDEgfVxuICAgIHN0YXRlID0gdXNlU3RhdGUoeyB4OiAxIH0pO1xuICAgIGFzeW5jIG9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuc3RhdGUueCsrO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDAwKSk7XG4gICAgICAgIHJvb3QuX19vd2xfXy5hcHAuZGVzdHJveSgpO1xuICAgIH1cbn1cblxuY29uc3Qgcm9vdCA9IGF3YWl0IG1vdW50KFJvb3QsIGRvY3VtZW50LmJvZHksIHsgdGVtcGxhdGVzOiBURU1QTEFURVMsIGRldjogdHJ1ZSB9KTtcbiIsImNzcyI6Ii5sYXlvdXQge1xuICAgIGhlaWdodDogMjVweDtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMjBweDtcbn1cblxuLm5hbWVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBza3libHVlO1xufVxuXG4uZGVmYXVsdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdG9tYXRvO1xufSIsInhtbCI6Ijx0ZW1wbGF0ZXM+XG4gIDx0IHQtbmFtZT1cIkNoaWxkMlwiPlxuICAgIDx0IHQtZXNjPVwicHJvcHMueFwiLz5cbiAgPC90PlxuICBcbiAgPHQgdC1uYW1lPVwiQ2hpbGQxXCI+XG4gICAgPENoaWxkMiB4PVwicHJvcHMueFwiLz5cbiAgPC90PlxuICBcbiAgPHQgdC1uYW1lPVwiUm9vdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb290XCIgPlxuICAgICAgPENoaWxkMSB4PVwic3RhdGUueFwiLz5cbiAgICAgIDxidXR0b24gdC1vbi1jbGljaz1cIm9uQ2xpY2tcIj5JbmNyZW1lbnQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC90PlxuPC90ZW1wbGF0ZXM+XG4ifQ==
The issue seems to be that when we destroy a component, we don't remove the current fiber, if any. In most cases (standard UI update that destroys a component), the new fiber will already traverse the tree and remove it (see cancelFiber), but when we manually destroy an app (or a root i guess) , there may be remaining fibers that will be called.