solidity icon indicating copy to clipboard operation
solidity copied to clipboard

LSP crashes when opening a file with invalid code and experimental features enabled

Open henryhchchc opened this issue 8 months ago • 0 comments

Description

When opening a file containing the folowing code snippet in a text editor (e.g., NeoVim), solc --lsp crashes.

Environment

  • Compiler version: 0.8.29-develop.2025.3.27+commit.ab55807c.Linux.clang
  • Compilation pipeline (legacy, IR, EOF): N/A
  • Target EVM version (as per compiler settings): N/A
  • Framework/IDE (e.g. Foundry, Hardhat, Remix): N/A
  • EVM execution environment / backend / blockchain client: N/A
  • Operating system: AlmaLinux 5.9

Steps to Reproduce

  1. Create a file named main.sol with the following code snippet.

pragma experimental solidity;

function f() {
    let r: (, S);
}
  1. Configure neovim with solc --lsp as language server. See nvim-lspconfig.
  2. Open the file with neovim
  3. You will see the language server crashes

LSP crash stack is as follows:

=================================================================
==28525==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x000001487921 bp 0x7fffffffc2f0 sp 0x7fffffffc220 T0)
==28525==The signal is caused by a READ memory access.
==28525==Hint: address points to the zero page.
    #0 0x1487921 in solidity::frontend::ASTNode::id() const /src/libsolidity/ast/AST.h:81:38
    #1 0x1487921 in solidity::frontend::experimental::Analysis::annotationContainer(solidity::frontend::ASTNode const&) /src/libsolidity/experimental/analysis/Analysis.cpp:131:2
    #2 0x1aab2c2 in solidity::frontend::experimental::detail::AnnotationFetcher<solidity::frontend::experimental::TypeInference>::get(solidity::frontend::ASTNode const&) /src/libsolidity/experimental/analysis/Analysis.cpp:108:18
    #3 0x1aab2c2 in solidity::frontend::experimental::TypeInference::Annotation& solidity::frontend::experimental::Analysis::annotation<solidity::frontend::experimental::TypeInference>(solidity::frontend::ASTNode const&) /src/libsolidity/experimental/analysis/Analysis.h:81:49
    #4 0x1aab2c2 in solidity::frontend::experimental::TypeInference::annotation(solidity::frontend::ASTNode const&) /src/libsolidity/experimental/analysis/TypeInference.cpp:1232:20
    #5 0x1aab2c2 in _ZZN8solidity8frontend12experimental13TypeInference8endVisitERKNS0_15TupleExpressionEENK3$_0clISt10shared_ptrINS0_10ExpressionEEEESt7variantIJSt9monostateNS1_12TypeConstantENS1_12TypeVariableEEET_ /src/libsolidity/experimental/analysis/TypeInference.cpp:604:31
    #6 0x1aab2c2 in decltype((solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0&)(fp)((std::shared_ptr<solidity::frontend::Expression> const&)(fp0))) ranges::invoke_fn::operator()<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0&, std::shared_ptr<solidity::frontend::Expression> const&>(solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0&, std::shared_ptr<solidity::frontend::Expression> const&) const /src/deps/range-v3/include/range/v3/functional/invoke.hpp:142:20
    #7 0x1aab2c2 in decltype(ranges::invoke((*this).fn_, *fp...)) ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>::operator()<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>>(__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>) /src/deps/range-v3/include/range/v3/functional/indirect.hpp:55:14
    #8 0x1aab2c2 in decltype((ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>&)(fp)((__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&)(fp0))) ranges::invoke_fn::operator()<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>&, __gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&>(ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>&, __gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&) const /src/deps/range-v3/include/range/v3/functional/invoke.hpp:142:20
    #9 0x1aab2c2 in decltype(auto) ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::operator()<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&>(__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&) & /src/deps/range-v3/include/range/v3/utility/semiregular_box.hpp:230:20
    #10 0x1aab2c2 in decltype((ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>&)(fp)((__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&)(fp0))) ranges::invoke_fn::operator()<ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>&, __gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&>(ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>&, __gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&) const /src/deps/range-v3/include/range/v3/functional/invoke.hpp:142:20
    #11 0x1aab2c2 in decltype(ranges::invoke(static_cast<ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>>(*(*this).t_), static_cast<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&>(fp))) ranges::reference_wrapper<ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>>::operator()<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&>(__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&) const /src/deps/range-v3/include/range/v3/functional/reference_wrapper.hpp:109:24
    #12 0x1aab2c2 in decltype((ranges::reference_wrapper<ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>> const&)(fp)((__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&)(fp0))) ranges::invoke_fn::operator()<ranges::reference_wrapper<ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>> const&, __gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&>(ranges::reference_wrapper<ranges::semiregular_box<ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>> const&, __gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>&) const /src/deps/range-v3/include/range/v3/functional/invoke.hpp:142:20
    #13 0x1aab2c2 in ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>::read(__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>) const /src/deps/range-v3/include/range/v3/view/transform.hpp:143:18
    #14 0x1aab2c2 in std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable> ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>::read<ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>() const /src/deps/range-v3/include/range/v3/view/adaptor.hpp:301:41
    #15 0x1aab2c2 in decltype(fp.read()) ranges::range_access::read<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>(ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>> const&) /src/deps/range-v3/include/range/v3/detail/range_access.hpp:107:31
    #16 0x1aab2c2 in ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>::operator*() const requires detail::readable_cursor<T> && !detail::is_writable_cursor_v<T> /src/deps/range-v3/include/range/v3/iterator/basic_iterator.hpp:587:20
    #17 0x1aaab9f in std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>* std::__do_uninit_copy<ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*>(ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/stl_uninitialized.h:120:48
    #18 0x1aaab9f in std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>* std::__uninitialized_copy<false>::__uninit_copy<ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*>(ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/stl_uninitialized.h:137:11
    #19 0x1aaab9f in std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>* std::uninitialized_copy<ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*>(ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/stl_uninitialized.h:184:14
    #20 0x1aaab9f in std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>* std::__uninitialized_copy_a<ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>(ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>*, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/stl_uninitialized.h:373:14
    #21 0x1a9a2a9 in void std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>::_M_assign_aux<ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>>(ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, std::forward_iterator_tag) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/vector.tcc:345:8
    #22 0x1a9a2a9 in void std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>::assign<ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, void>(ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/stl_vector.h:829:4
    #23 0x1a9a2a9 in auto ranges::detail::to_container::fn<meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>>::impl<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>, ranges::basic_iterator<ranges::adaptor_cursor<__gnu_cxx::__normal_iterator<std::shared_ptr<solidity::frontend::Expression> const*, std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>>>, ranges::iter_transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, ranges::indirected<solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>::adaptor<false>>>, ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>(ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>&&, std::integral_constant<bool, true>) /src/deps/range-v3/include/range/v3/range/conversion.hpp:330:19
    #24 0x1a9a2a9 in std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>> ranges::detail::to_container::fn<meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>>::operator()<ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>(T&&) const /src/deps/range-v3/include/range/v3/range/conversion.hpp:346:24
    #25 0x1a9a2a9 in concepts::return_t_<std::enable_if<invocable<ranges::detail::to_container::fn<meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>>, ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>> && concepts::detail::CPP_true_fn(concepts::detail::Nil)(concepts::detail::Nil{}), void>::type>::invoke<meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>::invoke<ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>>> ranges::detail::operator|<ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>, meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>>(ranges::transform_view<ranges::ref_view<std::vector<std::shared_ptr<solidity::frontend::Expression>, std::allocator<std::shared_ptr<solidity::frontend::Expression>>> const>, solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&)::$_0>&&, ranges::detail::to_container::closure<meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>, ranges::detail::to_container::fn<meta::id<std::vector<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>, std::allocator<std::variant<std::monostate, solidity::frontend::experimental::TypeConstant, solidity::frontend::experimental::TypeVariable>>>>>> (*)(ranges::detail::to_container)) /src/deps/range-v3/include/range/v3/range/conversion.hpp:54:24
    #26 0x1a9a2a9 in solidity::frontend::experimental::TypeInference::endVisit(solidity::frontend::TupleExpression const&) /src/libsolidity/experimental/analysis/TypeInference.cpp:607:5
    #27 0x1a74145 in solidity::frontend::experimental::TypeInference::visit(solidity::frontend::VariableDeclaration const&) /src/libsolidity/experimental/analysis/TypeInference.cpp:414:43
    #28 0xc11bd2 in solidity::frontend::VariableDeclaration::accept(solidity::frontend::ASTConstVisitor&) const /src/libsolidity/ast/AST_accept.h:319:15
    #29 0xbf9b67 in solidity::frontend::VariableDeclarationStatement::accept(solidity::frontend::ASTConstVisitor&) const /src/libsolidity/ast/AST_accept.h:786:10
    #30 0xc034ab in void solidity::frontend::ASTNode::listAccept<std::shared_ptr<solidity::frontend::Statement>>(std::vector<std::shared_ptr<solidity::frontend::Statement>, std::allocator<std::shared_ptr<solidity::frontend::Statement>>> const&, solidity::frontend::ASTConstVisitor&) /src/libsolidity/ast/AST.h:100:13
    #31 0xc0193b in solidity::frontend::Block::accept(solidity::frontend::ASTConstVisitor&) const /src/libsolidity/ast/AST_accept.h:539:3
    #32 0x1a72d03 in solidity::frontend::experimental::TypeInference::visit(solidity::frontend::FunctionDefinition const&) /src/libsolidity/experimental/analysis/TypeInference.cpp:178:30
    #33 0xc13ee2 in solidity::frontend::FunctionDefinition::accept(solidity::frontend::ASTConstVisitor&) const /src/libsolidity/ast/AST_accept.h:283:15
    #34 0xbea3ab in void solidity::frontend::ASTNode::listAccept<std::shared_ptr<solidity::frontend::ASTNode>>(std::vector<std::shared_ptr<solidity::frontend::ASTNode>, std::allocator<std::shared_ptr<solidity::frontend::ASTNode>>> const&, solidity::frontend::ASTConstVisitor&) /src/libsolidity/ast/AST.h:100:13
    #35 0xc2cf2a in solidity::frontend::SourceUnit::accept(solidity::frontend::ASTConstVisitor&) const /src/libsolidity/ast/AST_accept.h:43:3
    #36 0x148be26 in solidity::frontend::experimental::TypeInference::analyze(solidity::frontend::SourceUnit const&) /src/libsolidity/experimental/analysis/TypeInference.cpp:128:14
    #37 0x148be26 in _ZZZN8solidity8frontend12experimental8Analysis5checkERKSt6vectorISt10shared_ptrIKNS0_10SourceUnitEESaIS7_EEENK3$_0clIJSt17integral_constantImLm0EESE_ImLm1EESE_ImLm2EESE_ImLm3EESE_ImLm4EESE_ImLm5EEEEEDaDpT_ENKUlOT_E0_clINS1_13TypeInferenceEEEDaSO_ /src/libsolidity/experimental/analysis/Analysis.cpp:176:16
    #38 0x148be26 in _ZZN8solidity8frontend12experimental8Analysis5checkERKSt6vectorISt10shared_ptrIKNS0_10SourceUnitEESaIS7_EEENK3$_0clIJSt17integral_constantImLm0EESE_ImLm1EESE_ImLm2EESE_ImLm3EESE_ImLm4EESE_ImLm5EEEEEDaDpT_ /src/libsolidity/experimental/analysis/Analysis.cpp:174:11
    #39 0x148be26 in bool std::__invoke_impl<bool, solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0, std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>(std::__invoke_other, solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0&&, std::integral_constant<unsigned long, 0ul>&&, std::integral_constant<unsigned long, 1ul>&&, std::integral_constant<unsigned long, 2ul>&&, std::integral_constant<unsigned long, 3ul>&&, std::integral_constant<unsigned long, 4ul>&&, std::integral_constant<unsigned long, 5ul>&&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/invoke.h:61:14
    #40 0x148be26 in std::__invoke_result<solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0, std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>::type std::__invoke<solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0, std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>(solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0&&, std::integral_constant<unsigned long, 0ul>&&, std::integral_constant<unsigned long, 1ul>&&, std::integral_constant<unsigned long, 2ul>&&, std::integral_constant<unsigned long, 3ul>&&, std::integral_constant<unsigned long, 4ul>&&, std::integral_constant<unsigned long, 5ul>&&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/invoke.h:96:14
    #41 0x148be26 in decltype(auto) std::__apply_impl<solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0, std::tuple<std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0&&, std::tuple<std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>&&, std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/tuple:2302:14
    #42 0x148be26 in decltype(auto) std::apply<solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0, std::tuple<std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>>(solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&)::$_0&&, std::tuple<std::integral_constant<unsigned long, 0ul>, std::integral_constant<unsigned long, 1ul>, std::integral_constant<unsigned long, 2ul>, std::integral_constant<unsigned long, 3ul>, std::integral_constant<unsigned long, 4ul>, std::integral_constant<unsigned long, 5ul>>&&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/tuple:2313:14
    #43 0x148be26 in solidity::frontend::experimental::Analysis::check(std::vector<std::shared_ptr<solidity::frontend::SourceUnit const>, std::allocator<std::shared_ptr<solidity::frontend::SourceUnit const>>> const&) /src/libsolidity/experimental/analysis/Analysis.cpp:173:9
    #44 0xdc1623 in solidity::frontend::CompilerStack::analyzeExperimental() /src/libsolidity/interface/CompilerStack.cpp:688:33
    #45 0xdbdf14 in solidity::frontend::CompilerStack::analyze() /src/libsolidity/interface/CompilerStack.cpp:505:9
    #46 0xdd57b0 in solidity::frontend::CompilerStack::parseAndAnalyze(solidity::frontend::CompilerStack::State) /src/libsolidity/interface/CompilerStack.cpp:699:13
    #47 0xdd57b0 in solidity::frontend::CompilerStack::compile(solidity::frontend::CompilerStack::State) /src/libsolidity/interface/CompilerStack.cpp:754:8
    #48 0x193e7c2 in solidity::lsp::LanguageServer::compile() /src/libsolidity/lsp/LanguageServer.cpp:269:18
    #49 0x1942a35 in solidity::lsp::LanguageServer::compileAndUpdateDiagnostics() /src/libsolidity/lsp/LanguageServer.cpp:274:2
    #50 0x193d80d in void std::__invoke_impl<void, void (solidity::lsp::LanguageServer::*&)(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&), solidity::lsp::LanguageServer*&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&>(std::__invoke_memfun_deref, void (solidity::lsp::LanguageServer::*&)(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&), solidity::lsp::LanguageServer*&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>&&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/invoke.h:74:14
    #51 0x194c4a5 in std::function<void (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&)>::operator()(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void> const&) const /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/std_function.h:591:9
    #52 0x194c4a5 in solidity::lsp::LanguageServer::run() /src/libsolidity/lsp/LanguageServer.cpp:351:6
    #53 0xadcedf in solidity::frontend::CommandLineInterface::serveLSP() /src/solc/CommandLineInterface.cpp:1183:38
    #54 0xadaee1 in solidity::frontend::CommandLineInterface::processInput() /src/solc/CommandLineInterface.cpp:848:3
    #55 0xad7403 in solidity::frontend::CommandLineInterface::run(int, char const* const*) /src/solc/CommandLineInterface.cpp:766:3
    #56 0xa494f0 in main /src/solc/main.cpp:40:14
    #57 0x7ffff7cee5cf in __libc_start_call_main (/lib64/libc.so.6+0x295cf) (BuildId: 7a40a22c9a82854f3d66767232ae364a99174860)
    #58 0x7ffff7cee67f in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2967f) (BuildId: 7a40a22c9a82854f3d66767232ae364a99174860)
    #59 0x826e74 in _start (/src/build/bin/solc+0x826e74) (BuildId: 53f2a1bcc9bb93c6)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /src/libsolidity/ast/AST.h:81:38 in solidity::frontend::ASTNode::id() const
==28525==ABORTING

henryhchchc avatar Mar 31 '25 03:03 henryhchchc