From bf371550cc81d91d17cc51261296a459685f9a64 Mon Sep 17 00:00:00 2001 From: Lin Jiang Date: Fri, 27 Oct 2023 17:04:35 +0800 Subject: [PATCH 1/2] [bug] Fix crashing when a SNode is destroyed after taichi resets --- python/taichi/_snode/snode_tree.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/taichi/_snode/snode_tree.py b/python/taichi/_snode/snode_tree.py index 19614ab91ef6f..bc7b8022f66bd 100644 --- a/python/taichi/_snode/snode_tree.py +++ b/python/taichi/_snode/snode_tree.py @@ -9,12 +9,15 @@ class SNodeTree: def __init__(self, ptr): + self.prog = impl.get_runtime().prog self.ptr = ptr self.destroyed = False def destroy(self): if self.destroyed: raise TaichiRuntimeError("SNode tree has been destroyed") + if not impl.get_runtime().prog or self.prog != impl.get_runtime().prog: + return self.ptr.destroy_snode_tree(impl.get_runtime().prog) # FieldExpression holds a SNode* to the place-SNode associated with a SNodeTree From 1a49eefbede148dba5e977e2a801c53a76770102 Mon Sep 17 00:00:00 2001 From: Lin Jiang Date: Fri, 27 Oct 2023 17:06:51 +0800 Subject: [PATCH 2/2] redundant --- python/taichi/_snode/snode_tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/taichi/_snode/snode_tree.py b/python/taichi/_snode/snode_tree.py index bc7b8022f66bd..cc368ab4b28cc 100644 --- a/python/taichi/_snode/snode_tree.py +++ b/python/taichi/_snode/snode_tree.py @@ -16,7 +16,7 @@ def __init__(self, ptr): def destroy(self): if self.destroyed: raise TaichiRuntimeError("SNode tree has been destroyed") - if not impl.get_runtime().prog or self.prog != impl.get_runtime().prog: + if self.prog != impl.get_runtime().prog: return self.ptr.destroy_snode_tree(impl.get_runtime().prog)