Skip to content

Commit 95c363c

Browse files
c00wpytorchmergebot
authored andcommitted
dynamo: Don't crash with internal error if getattr on a tensor fails (pytorch#144817)
This prevents crashes when getattr is called on a tensor for something which doesn't exist. Pull Request resolved: pytorch#144817 Approved by: https://github.com/williamwen42, https://github.com/jansel
1 parent 0e6d44d commit 95c363c

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

test/dynamo/test_compile.py

+11
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,17 @@ def fn(x):
175175

176176
x = torch.randn(10, 10)
177177
with self.assertRaises(NameError):
178+
fn(x)
179+
180+
def test_compilation_tensor_invalid_method(self):
181+
@torch.compile(backend="eager")
182+
def fn(x):
183+
y = torch.tensor(x)
184+
return y.doesnotexist()
185+
186+
x = torch.randn(10, 10)
187+
188+
with self.assertRaises(AttributeError):
178189
fn(x)
179190

180191

torch/_dynamo/utils.py

+8
Original file line numberDiff line numberDiff line change
@@ -3068,10 +3068,16 @@ def run_node(tracer, node, args, kwargs, nnmodule):
30683068
def make_error_message(e):
30693069
return f"Failed running {op} {node.target}(*{args}, **{kwargs}):\n" + str(e)
30703070

3071+
from .exc import Unsupported
3072+
30713073
try:
30723074
if op == "call_function":
30733075
return node.target(*args, **kwargs)
30743076
elif op == "call_method":
3077+
if not hasattr(args[0], node.target):
3078+
from .exc import unimplemented
3079+
3080+
unimplemented(make_error_message("attribute not defined"))
30753081
return getattr(args[0], node.target)(*args[1:], **kwargs)
30763082
elif op == "call_module":
30773083
assert nnmodule is not None
@@ -3087,6 +3093,8 @@ def make_error_message(e):
30873093
from .exc import unimplemented
30883094

30893095
unimplemented(make_error_message(e), from_exc=e)
3096+
except Unsupported:
3097+
raise
30903098
except Exception as e:
30913099
raise RuntimeError(make_error_message(e)).with_traceback(
30923100
e.__traceback__

0 commit comments

Comments
 (0)