Skip to content

[JIT] Bad error message when instantiating a script class with no __init__ #21761

@jamesr66a

Description

@jamesr66a
import torch

@torch.jit.script
class Foo(object):
    pass

@torch.jit.script
def foo():
    f = Foo()

print(foo.graph)
Traceback (most recent call last):
  File "compile_class_members.py", line 7, in <module>
    @torch.jit.script
  File "/Users/jamesreed/pytorch/torch/jit/__init__.py", line 1084, in script
    fn = torch._C._jit_script_compile(ast, _rcb, get_default_args(obj))
RuntimeError: method INTERNAL ASSERT FAILED at ../torch/csrc/jit/script/sugared_value.h:292, please report a bug to PyTorch.  (call at ../torch/csrc/jit/script/sugared_value.h:292)
frame #0: c10::Error::Error(c10::SourceLocation, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 64 (0x1147151b0 in libc10.dylib)
frame #1: torch::jit::script::MethodValue::call(torch::jit::SourceRange const&, torch::jit::Function&, c10::ArrayRef<torch::jit::NamedValue>, c10::ArrayRef<torch::jit::NamedValue>, unsigned long) + 1520 (0x117fb1090 in libtorch.dylib)
frame #2: torch::jit::script::ClassValue::call(torch::jit::SourceRange const&, torch::jit::Function&, c10::ArrayRef<torch::jit::NamedValue>, c10::ArrayRef<torch::jit::NamedValue>, unsigned long) + 326 (0x118006766 in libtorch.dylib)
frame #3: torch::jit::script::to_ir::emitApplyExpr(torch::jit::script::Apply&, unsigned long) + 6600 (0x117fd25e8 in libtorch.dylib)
frame #4: torch::jit::script::to_ir::emitSugaredExpr(torch::jit::script::Expr const&, unsigned long, std::__1::shared_ptr<c10::Type> const&) + 493 (0x117fa99dd in libtorch.dylib)
frame #5: torch::jit::script::to_ir::emitAssignment(torch::jit::script::Assign const&) + 1785 (0x117fa8c69 in libtorch.dylib)
frame #6: torch::jit::script::to_ir::emitStatements(torch::jit::script::ListIterator<torch::jit::script::Stmt>, torch::jit::script::ListIterator<torch::jit::script::Stmt>) + 1550 (0x117f9b1ee in libtorch.dylib)
frame #7: torch::jit::script::to_ir::emitDef(torch::jit::script::Def const&, std::__1::function<std::__1::shared_ptr<torch::jit::script::SugaredValue> (torch::jit::Value*)> const&, torch::jit::Block*) + 376 (0x117f98328 in libtorch.dylib)
frame #8: torch::jit::script::to_ir::to_ir(torch::jit::script::Def const&, std::__1::shared_ptr<torch::jit::script::Resolver>, std::__1::function<std::__1::shared_ptr<torch::jit::script::SugaredValue> (torch::jit::Value*)> const&, torch::jit::Function&) + 606 (0x117f9787e in libtorch.dylib)
frame #9: std::__1::__function::__func<torch::jit::script::CompilationUnit::define(std::__1::vector<torch::jit::script::Def, std::__1::allocator<torch::jit::script::Def> > const&, std::__1::vector<std::__1::shared_ptr<torch::jit::script::Resolver>, std::__1::allocator<std::__1::shared_ptr<torch::jit::script::Resolver> > > const&, std::__1::function<std::__1::shared_ptr<torch::jit::script::SugaredValue> (torch::jit::Value*)> const&)::$_1, std::__1::allocator<torch::jit::script::CompilationUnit::define(std::__1::vector<torch::jit::script::Def, std::__1::allocator<torch::jit::script::Def> > const&, std::__1::vector<std::__1::shared_ptr<torch::jit::script::Resolver>, std::__1::allocator<std::__1::shared_ptr<torch::jit::script::Resolver> > > const&, std::__1::function<std::__1::shared_ptr<torch::jit::script::SugaredValue> (torch::jit::Value*)> const&)::$_1>, void (torch::jit::Function&)>::operator()(torch::jit::Function&) + 80 (0x117f97450 in libtorch.dylib)
frame #10: torch::jit::Function::ensure_defined() + 196 (0x118063f64 in libtorch.dylib)
frame #11: torch::jit::script::CompilationUnit::define(std::__1::vector<torch::jit::script::Def, std::__1::allocator<torch::jit::script::Def> > const&, std::__1::vector<std::__1::shared_ptr<torch::jit::script::Resolver>, std::__1::allocator<std::__1::shared_ptr<torch::jit::script::Resolver> > > const&, std::__1::function<std::__1::shared_ptr<torch::jit::script::SugaredValue> (torch::jit::Value*)> const&) + 2456 (0x117f94b08 in libtorch.dylib)
frame #12: void pybind11::cpp_function::initialize<torch::jit::script::initJitScriptBindings(_object*)::$_32, std::__1::shared_ptr<torch::jit::Function>, torch::jit::script::Def const&, std::__1::function<pybind11::function (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)>, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, pybind11::object, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, pybind11::object> > >, pybind11::name, pybind11::scope, pybind11::sibling>(torch::jit::script::initJitScriptBindings(_object*)::$_32&&, std::__1::shared_ptr<torch::jit::Function> (*)(torch::jit::script::Def const&, std::__1::function<pybind11::function (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)>, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, pybind11::object, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, pybind11::object> > >), pybind11::name const&, pybind11::scope const&, pybind11::sibling const&)::'lambda'(pybind11::detail::function_call&)::__invoke(pybind11::detail::function_call&) + 920 (0x11596d7c8 in libtorch_python.dylib)
frame #13: pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 2865 (0x115580ae1 in libtorch_python.dylib)
<omitting python frames>
frame #26: start + 1 (0x7fff62cdd3d5 in libdyld.dylib)

Metadata

Metadata

Assignees

Labels

oncall: jitAdd this issue/PR to JIT oncall triage queue

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions