bb.js browser crashes
WASM Stack Traces (Demangled)
bb::stdlib::field_t<bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>::operator*(field_t const&) const@[wasm code]
bb::BarycentricDataRunTime<bb::stdlib::field_t<bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>, 21, 1, 0>::construct_lagrange_denominators<std::__2::array<bb::stdlib::field_t<bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>, 21>>(std::__2::array<bb::stdlib::field_t<bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>, 21> const&)@[wasm code]
<unnamed>@[wasm code]
__wasm_call_ctors@[wasm code]
_initialize@[wasm code]
Circuit Stats Operation
bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>::create_sort_constraint_with_edges(std::__2::vector<unsigned int, std::__2::allocator<unsigned int>> const&, bb::field<bb::Bn254FrParams> const&, bb::field<bb::Bn254FrParams> const&)@[wasm code]
bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>::process_range_list(bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>::RangeList&)@[wasm code]
bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>::finalize_circuit(bool)@[wasm code]
bb::bbapi::_stats<bb::UltraKeccakFlavor, bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>(std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&, bool)@[wasm code]
bb::bbapi::CircuitStats::execute(bb::bbapi::BBApiRequest const&) &&@[wasm code]
std::__2::__variant_detail::__visitation::__base::__dispatcher<2>::__dispatch(...)@[wasm code]
bb::bbapi::bbapi(bb::NamedUnion<...>&&)@[wasm code]
msgpack_cbind_impl(...)@[wasm code]
bbapi@[wasm code]
Circuit Prove - Sumcheck with Relations
bb::DeltaRangeConstraintRelationImpl<bb::field<bb::Bn254FrParams>>::accumulate<tuplet::tuple<bb::Univariate<bb::field<bb::Bn254FrParams>, 6, 0>, bb::Univariate<bb::field<bb::Bn254FrParams>, 6, 0>, bb::Univariate<bb::field<bb::Bn254FrParams>, 6, 0>, bb::Univariate<bb::field<bb::Bn254FrParams>, 6, 0>>, bb::UltraFlavor::AllEntities<bb::Univariate<bb::field<bb::Bn254FrParams>, 2, 0>>, bb::RelationParameters<bb::field<bb::Bn254FrParams>>>(tuplet::tuple<...>&, bb::UltraFlavor::AllEntities<...> const&, bb::RelationParameters<...> const&, bb::field<bb::Bn254FrParams> const&)@[wasm code]
bb::SumcheckProverRound<bb::UltraKeccakZKFlavor>::accumulate_relation_univariates<bb::UltraFlavor::AllEntities<bb::Univariate<bb::field<bb::Bn254FrParams>, 2, 0>>>(...)::lambda::operator()<...>(...)@[wasm code]
bb::SumcheckProverRound<bb::UltraKeccakZKFlavor>::compute_univariate_with_row_skipping<bb::UltraFlavor::PartiallyEvaluatedMultivariates>(...)::lambda::operator()(unsigned long) const@[wasm code]
std::__2::__function::__policy_invoker<void (unsigned long)>::__call_impl<...>(...)@[wasm code]
<unnamed>@[wasm code]
bb::parallel_for_mutex_pool(unsigned long, std::__2::function<void (unsigned long)> const&)@[wasm code]
bb::parallel_for(unsigned long, std::__2::function<void (unsigned long)> const&)@[wasm code]
bb::SumcheckProverRound<bb::UltraZKFlavor>::compute_univariate_with_row_skipping<bb::UltraFlavor::PartiallyEvaluatedMultivariates>(...)@[wasm code]
bb::SumcheckProver<bb::UltraZKFlavor>::prove(bb::ZKSumcheckData<bb::UltraZKFlavor>&)@[wasm code]
bb::DeciderProver_<bb::UltraZKFlavor>::execute_relation_check_rounds()@[wasm code]
bb::DeciderProver_<bb::UltraZKFlavor>::construct_proof()@[wasm code]
bb::UltraProver_<bb::UltraZKFlavor>::construct_proof()@[wasm code]
bb::bbapi::_prove<bb::UltraZKFlavor>(std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&, std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&, std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&)@[wasm code]
bb::bbapi::CircuitProve::execute(bb::bbapi::BBApiRequest const&) &&@[wasm code]
bb::bbapi::execute(...)::lambda::operator()<...>(...) const@[wasm code]
std::__2::__variant_detail::__visitation::__base::__dispatcher<0>::__dispatch(...)@[wasm code]
bb::bbapi::bbapi(bb::NamedUnion<...>&&)@[wasm code]
msgpack_cbind_impl(...)@[wasm code]
bbapi@[wasm code]
SRS Initialization - Miller Loop Precomputation
bb::pairing::mixed_addition_step_for_flipped_miller_loop(bb::group_elements::element<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&, bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>&, bb::field12<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field6<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::Bn254Fq6Params>, bb::Bn254Fq12Params>::ell_coeffs&)@[wasm code]
bb::pairing::precompute_miller_lines(bb::group_elements::element<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&, bb::pairing::miller_lines&)@[wasm code]
bb::srs::factories::MemBn254CrsFactory::MemBn254CrsFactory(std::__2::vector<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>, std::__2::allocator<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>>> const&, std::__2::vector<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&)@[wasm code]
bb::srs::init_bn254_mem_crs_factory(std::__2::vector<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>, std::__2::allocator<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>>> const&, std::__2::vector<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&)@[wasm code]
bb::bbapi::SrsInitSrs::execute(bb::bbapi::BBApiRequest&) &&@[wasm code]
std::__2::__variant_detail::__visitation::__base::__dispatcher<46>::__dispatch(...)@[wasm code]
bb::bbapi::bbapi(bb::NamedUnion<...>&&)@[wasm code]
msgpack_cbind_impl(...)@[wasm code]
bbapi@[wasm code]
Failure Pattern 1: SRS Init / Pairing (Out of bounds memory access)
Iterations: 302, 2590 Phase: After successful proof generation, during verification
bb::pairing::doubling_step_for_flipped_miller_loop(bb::group_elements::element<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params>&, bb::field12<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field6<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::Bn254Fq6Params>, bb::Bn254Fq12Params>::ell_coeffs&)@[wasm code]
bb::pairing::precompute_miller_lines(bb::group_elements::element<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&, bb::pairing::miller_lines&)@[wasm code]
bb::srs::factories::MemBn254CrsFactory::MemBn254CrsFactory(std::__2::vector<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>, std::__2::allocator<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>>> const&, std::__2::vector<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&)@[wasm code]
bb::srs::init_bn254_mem_crs_factory(std::__2::vector<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>, std::__2::allocator<bb::group_elements::affine_element<bb::field<bb::Bn254FqParams>, bb::field<bb::Bn254FrParams>, bb::Bn254G1Params>>> const&, std::__2::vector<bb::field2<bb::field<bb::Bn254FqParams>, bb::Bn254Fq2Params>, bb::field<bb::Bn254FrParams>, bb::Bn254G2Params> const&)@[wasm code]
bb::bbapi::SrsInitSrs::execute(bb::bbapi::BBApiRequest&) &&@[wasm code]
std::__2::__variant_detail::__visitation::__base::__dispatcher<46>::__dispatch(...)@[wasm code]
bb::bbapi::bbapi(bb::NamedUnion<...>&&)@[wasm code]
msgpack_cbind_impl(...)@[wasm code]
bbapi@[wasm code]
Failure Pattern 2: Sumcheck Logging (Out of bounds memory access)
Iteration: 866 Phase: During sumcheck proving (after "created oink proof")
std::__2::basic_ostream<char, std::__2::char_traits<char>>::sentry::sentry(std::__2::basic_ostream<char, std::__2::char_traits<char>>&)@[wasm code]
std::__2::__put_character_sequence<char, std::__2::char_traits<char>>(std::__2::basic_ostream<char, std::__2::char_traits<char>>&, char const*, unsigned long)@[wasm code]
format<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>>(std::__2::basic_string<...>)@[wasm code]
vinfo_(std::__2::function<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>> ()>)@[wasm code]
bb::SumcheckProver<bb::UltraZKFlavor>::prove(bb::ZKSumcheckData<bb::UltraZKFlavor>&)@[wasm code]
bb::DeciderProver_<bb::UltraZKFlavor>::execute_relation_check_rounds()@[wasm code]
bb::DeciderProver_<bb::UltraZKFlavor>::construct_proof()@[wasm code]
bb::UltraProver_<bb::UltraZKFlavor>::construct_proof()@[wasm code]
bb::bbapi::_prove<bb::UltraZKFlavor>(std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&, std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&, std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&)@[wasm code]
bb::bbapi::CircuitProve::execute(bb::bbapi::BBApiRequest const&) &&@[wasm code]
bb::bbapi::execute(...)::lambda::operator()<...>(...) const@[wasm code]
std::__2::__variant_detail::__visitation::__base::__dispatcher<0>::__dispatch(...)@[wasm code]
bb::bbapi::bbapi(bb::NamedUnion<...>&&)@[wasm code]
msgpack_cbind_impl(...)@[wasm code]
bbapi@[wasm code]
Failure Pattern 3: Circuit Building (call_indirect to null table entry)
Iteration: 3935 Phase: During initial circuit creation (before "created circuit" message)
bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>::create_poly_gate(bb::poly_triple_<bb::field<bb::Bn254FrParams>> const&)@[wasm code]
acir_format::build_constraints<bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>(bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>&, acir_format::AcirProgram&, acir_format::ProgramMetadata const&)@[wasm code]
acir_format::create_circuit<bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>(acir_format::AcirProgram&, acir_format::ProgramMetadata const&)@[wasm code]
bb::bbapi::_stats<bb::UltraKeccakFlavor, bb::UltraCircuitBuilder_<bb::UltraExecutionTraceBlocks>>(std::__2::vector<unsigned char, std::__2::allocator<unsigned char>>&&, bool)@[wasm code]
bb::bbapi::CircuitStats::execute(bb::bbapi::BBApiRequest const&) &&@[wasm code]
std::__2::__variant_detail::__visitation::__base::__dispatcher<2>::__dispatch(...)@[wasm code]
bb::bbapi::bbapi(bb::NamedUnion<...>&&)@[wasm code]
msgpack_cbind_impl(...)@[wasm code]
bbapi@[wasm code]
Failure Pattern 4: Hangs
Iterations: 488 and 3472 Phase: After "CircuitProve: Proving key computed" message Error: No output - process hangs indefinitely (likely deadlock or infinite loop)
Judging from the "Iterations" field, these cannot be reproduced reliably, can they? Then, we can only guess what to fix based on the stack traces?
Although I guess if we have a potential fix, we can run the same iterations again and again and see if the same errors appear. What is run in each iteration?