Skip to content

bug: variable not found #434

@tim-hoffman

Description

@tim-hoffman

Command:
target/debug/circom --llzk -- circom/tests/misc/poseidon.circom

Error (stack trace below):
Failed to generate LLZK IR: variable 'nInputs' not found

In this case, the variable not found is a template input. However, this affects many circom benchmarks as well and in some of those, the variable that's not found in an input signal. One such example from the circom benchmarks repo is libs/circomlib/circuits/sha256/main.circom.

Stack trace from the poseidon test with --verbose flag:

Stack backtrace:
   0: std::backtrace_rs::backtrace::libunwind::trace
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1: std::backtrace_rs::backtrace::trace_unsynchronized
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2: std::backtrace::Backtrace::create
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/backtrace.rs:331:13
   3: anyhow::error::<impl anyhow::Error>::msg
             at /Users/tim/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
   4: anyhow::__private::format_err
             at /Users/tim/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/lib.rs:698:13
   5: llzk_backend::gen_context::BlockContextStack::get_named_value::{{closure}}
             at ./llzk_backend/src/gen_context.rs:430:28
   6: core::option::Option<T>::ok_or_else
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/option.rs:1369:25
   7: llzk_backend::gen_context::BlockContextStack::get_named_value
             at ./llzk_backend/src/gen_context.rs:430:14
   8: llzk_backend::lvalue::Lvalue::get_root_value
             at ./llzk_backend/src/lvalue.rs:134:29
   9: llzk_backend::lvalue::Lvalue::get_value
             at ./llzk_backend/src/lvalue.rs:397:26
  10: <program_structure::abstract_syntax_tree::ast::Expression as llzk_backend::gen_context::GenerateLLZKInAnyBlock>::gen_llzk_in_block
             at ./llzk_backend/src/gen_context.rs:2616:24
  11: <program_structure::abstract_syntax_tree::ast::Expression as llzk_backend::gen_context::GenerateLLZKInAnyBlock>::gen_llzk_in_block
             at ./llzk_backend/src/gen_context.rs:2626:31
  12: llzk_backend::gen_context::BlockGenContext::handle_substitution_stmt_nonsignal
             at ./llzk_backend/src/gen_context.rs:1248:26
  13: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
             at ./llzk_backend/src/shared.rs:2076:33
  14: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
             at ./llzk_backend/src/shared.rs:2043:25
  15: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_up_to_target
             at ./llzk_backend/src/shared.rs:2269:17
  16: llzk_backend::shared::DimExprConverter::gen_template_poly_expr
             at ./llzk_backend/src/shared.rs:2325:13
  17: <llzk_backend::gen_context::BlockGenContext as llzk_backend::shared::DimExprConverter>::get_dim_expr
             at ./llzk_backend/src/gen_context.rs:2515:30
  18: <program_structure::abstract_syntax_tree::ast::Expression as llzk_backend::gen_context::GenerateLLZKInAnyBlock>::gen_llzk_in_block
             at ./llzk_backend/src/gen_context.rs:2700:22
  19: llzk_backend::gen_context::BlockGenContext::handle_substitution_stmt_nonsignal
             at ./llzk_backend/src/gen_context.rs:1248:26
  20: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
             at ./llzk_backend/src/shared.rs:2076:33
  21: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
             at ./llzk_backend/src/shared.rs:2043:25
  22: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_up_to_target
             at ./llzk_backend/src/shared.rs:2269:17
  23: llzk_backend::shared::DimExprConverter::gen_template_poly_expr
             at ./llzk_backend/src/shared.rs:2325:13
  24: <llzk_backend::module::DeclarationInfo as llzk_backend::shared::DimExprConverter>::get_dim_expr
             at ./llzk_backend/src/module.rs:550:51
  25: llzk_backend::shared::DimExprConverter::get_dim_exprs_if_able::{{closure}}
             at ./llzk_backend/src/shared.rs:1957:27
  26: core::iter::adapters::map::map_try_fold::{{closure}}
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/map.rs:95:28
  27: core::iter::traits::iterator::Iterator::try_fold
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2434:21
  28: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::try_fold
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/map.rs:121:19
  29: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::try_fold
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/mod.rs:192:14
  30: core::iter::traits::iterator::Iterator::try_for_each
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2495:14
  31: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::next
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/mod.rs:174:14
  32: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/vec/spec_from_iter_nested.rs:24:41
  33: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/vec/spec_from_iter.rs:33:9
  34: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/vec/mod.rs:3801:9
  35: core::iter::traits::iterator::Iterator::collect
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2035:9
  36: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:2156:51
  37: core::iter::adapters::try_process
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/mod.rs:160:17
  38: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:2156:9
  39: core::iter::traits::iterator::Iterator::collect
             at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2035:9
  40: llzk_backend::shared::DimExprConverter::get_dim_exprs_if_able
             at ./llzk_backend/src/shared.rs:1958:14
  41: llzk_backend::shared::DimExprConverter::get_dim_exprs
             at ./llzk_backend/src/shared.rs:1970:14
  42: llzk_backend::module::DeclarationInfo::visit
             at ./llzk_backend/src/module.rs:320:47
  43: llzk_backend::module::DeclarationInfo::visit
             at ./llzk_backend/src/module.rs:282:26
  44: llzk_backend::module::DeclarationInfo::from_template
             at ./llzk_backend/src/module.rs:241:26
  45: <program_structure::program_library::template_data::TemplateData as llzk_backend::template_ext::TemplateLike>::get_declarations
             at ./llzk_backend/src/template_ext.rs:159:9
  46: <P as llzk_backend::module::GenerateLLZKInModule<P>>::gen_llzk
             at ./llzk_backend/src/module.rs:845:55
  47: llzk_backend::codegen::generate_llzk
             at ./llzk_backend/src/codegen.rs:120:13

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions