Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cpptools-srv crashes on Linux in form_exception_specification_for_generated_function #6534

Closed
wj32 opened this issue Nov 17, 2020 · 2 comments
Labels
bug Language Service more info needed The issue report is not actionable in its current state more votes needed Issues that have been postponed until more community members upvote it not reproing We're not able to reproduce the issue (it's unlikely to get fixed until we find one). parser reliability Visual Studio Inherited from Visual Studio

Comments

@wj32
Copy link

wj32 commented Nov 17, 2020

Type: LanguageService

Describe the bug

  • OS and Version: Ubuntu 14.04.5
  • VS Code Version: 1.51.1
  • C/C++ Extension Version: 1.1.1
  • Other extensions you installed (and if the issue persists after disabling them): Not relevant
  • Does this issue involve using SSH remote to run the extension on a remote machine?: Yes
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc). One big project.

Steps to reproduce

I don't have a minimal repro. I'm working on a large C++20 codebase. I see coredumps being generated whenever I try to go to a symbol's definition.

Expected behavior

Logs
Insert logs here.

Screenshots

Additional context

I am not permitted to share coredumps. But here is the stack trace.

Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000067d4fe in form_exception_specification_for_generated_function(a_routine*, a_symbol*) ()
[Current thread is 1 (Thread 0x7fc00b7fe700 (LWP 50494))]
(gdb) bt
#0 0x000000000067d4fe in form_exception_specification_for_generated_function(a_routine*, a_symbol*) ()
#1 0x000000000067d341 in complete_defaulted_exc_spec(a_routine*) ()
#2 0x0000000000977aa0 in is_non_throwing_routine(a_routine*) ()
#3 0x00000000008095f7 in examine_expr_for_throwing_exception(an_expr_node*, an_expr_or_stmt_traversal_block*) ()
#4 0x000000000082bddc in traverse_expr(an_expr_node*, an_expr_or_stmt_traversal_block*) ()
#5 0x0000000000800e41 in expr_might_throw(an_expr_node*) ()
#6 0x00000000007cb4d6 in check_requirement_expr(an_expr_node*, Dyn_array<a_subst_pairs_descr, FE_allocator> const&, a_ctws_state*, int, int*) ()
#7 0x00000000007cb0d2 in requires_expr_satisfied(an_expr_node*, Dyn_array<a_subst_pairs_descr, FE_allocator> const&) ()
#8 0x00000000007fbc80 in copy_template_param_expr(an_expr_node*, a_template_arg*, a_template_param*, a_type*, a_source_position*, int, int*, a_ctws_state*, a_constant*, a_constant**) ()
#9 0x00000000007cab0a in requires_clause_satisfied(an_expr_node*, a_template_arg*, a_template_param*, a_diag_list*, int*, int*) ()
#10 0x00000000007caa70 in requires_clause_satisfied(an_expr_node*, a_template_arg*, a_template_param*, a_diag_list*, int*, int*) ()
#11 0x00000000007fc600 in copy_template_param_expr(an_expr_node*, a_template_arg*, a_template_param*, a_type*, a_source_position*, int, int*, a_ctws_state*, a_constant*, a_constant**) ()
#12 0x00000000007a8d4a in make_rescan_operand_full(an_expr_node*, a_rescan_control_block*, int, an_operand*, an_operand*) ()
#13 0x00000000007a954a in make_rescan_operands(a_rescan_control_block*, an_operand*, an_operand*, an_operand*, a_source_position*, unsigned int*, a_source_position*) ()
#14 0x0000000000777fc0 in scan_arith_prefix_operator(a_rescan_control_block*, an_operand*) ()
#15 0x0000000000775129 in rescan_expr_with_substitution_internal(an_expr_node*, a_rescan_control_block*, int, an_operand*, an_operand*, int) ()
#16 0x000000000079145b in rescan_expr_with_substitution(an_expr_node*, a_type*, a_rescan_control_block*, a_constant*) ()
#17 0x00000000007fbafc in copy_template_param_expr(an_expr_node*, a_template_arg*, a_template_param*, a_type*, a_source_position*, int, int*, a_ctws_state*, a_constant*, a_constant**) ()
#18 0x00000000007cab0a in requires_clause_satisfied(an_expr_node*, a_template_arg*, a_template_param*, a_diag_list*, int*, int*) ()
#19 0x00000000007caa06 in requires_clause_satisfied(an_expr_node*, a_template_arg*, a_template_param*, a_diag_list*, int*, int*) ()
#20 0x00000000007cb07d in requires_expr_satisfied(an_expr_node*, Dyn_array<a_subst_pairs_descr, FE_allocator> const&) ()
#21 0x00000000007fbc80 in copy_template_param_expr(an_expr_node*, a_template_arg*, a_template_param*, a_type*, a_source_position*, int, int*, a_ctws_state*, a_constant*, a_constant**) ()
#22 0x00000000007cab0a in requires_clause_satisfied(an_expr_node*, a_template_arg*, a_template_param*, a_diag_list*, int*, int*) ()
#23 0x00000000007caa70 in requires_clause_satisfied(an_expr_node*, a_template_arg*, a_template_param*, a_diag_list*, int*, int*) ()
#24 0x000000000092d426 in requires_constraint_satisfied(a_symbol*, a_requires_clause*, a_template_arg*, int) ()
#25 0x000000000092d2a2 in check_template_constraints(a_symbol*, a_template_arg*, int) ()
#26 0x000000000092d864 in find_template_class_full(a_symbol*, a_template_arg**, int, a_symbol*, int, int, int, int) ()
#27 0x000000000092d58d in find_template_class(a_symbol*, a_template_arg**, int, a_symbol*, int, int, int) ()
#28 0x0000000000884584 in coalesce_template_class_reference(a_symbol*, long long, int*) ()
#29 0x0000000000885479 in coalesce_template_id(a_symbol*, a_token_kind, unsigned int, long long, int, int*) ()
#30 0x000000000086e5ab in f_is_generalized_identifier_start(long long, a_type*) ()
#31 0x00000000007403c5 in decl_specifiers(unsigned long, a_decl_parse_state*, a_decl_pos_block*) ()
#32 0x0000000000711ef8 in type_name_full(a_decl_parse_state*) ()
#33 0x0000000000715e71 in alias_declaration(a_decl_parse_state*, a_source_position*) ()
#34 0x000000000071a075 in scan_nonmember_declaration(a_decl_parse_state*, a_source_range*) ()
#35 0x0000000000721019 in namespace_declaration(a_token_kind*, int, int, a_source_position*, a_symbol**) ()
#36 0x0000000000719298 in scan_nonmember_declaration(a_decl_parse_state*, a_source_range*) ()
#37 0x000000000071ee46 in translation_unit() ()
#38 0x000000000096a2c4 in process_translation_unit(char const*, int, an_exported_template_file*) ()
#39 0x000000000067aa57 in cfe_main(int, char**) ()
#40 0x000000000098bd96 in cfe_main_exception_handler(int, char**) ()
#41 0x000000000067ab66 in edg_main(int, char**) ()
#42 0x0000000000985e68 in edge_compiler_main(int, char const**) ()
#43 0x000000000060ae67 in preparse(int, char const**, a_scout_store*, edge::translation_unit*) ()
#44 0x00000000005d33ef in a_compiler_thread::compiler_thread_routine(a_compiler_thread*) ()
#45 0x0000000000ac2f60 in execute_native_thread_routine ()
#46 0x00007fc15150d184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#47 0x00007fc15123a03d in clone () from /lib/x86_64-linux-gnu/libc.so.6

@sean-mcmanus sean-mcmanus added bug more info needed The issue report is not actionable in its current state not reproing We're not able to reproduce the issue (it's unlikely to get fixed until we find one). parser reliability Visual Studio Inherited from Visual Studio labels Nov 17, 2020
@sean-mcmanus
Copy link
Collaborator

sean-mcmanus commented Nov 17, 2020

Thanks for reporting this. We're working on improving the stability of IntelliSense with C++20. This specific crash is not currently on our radar to fix yet, but we'll continue to monitor its impact. We would also probably need to find an isolated repro.

@sean-mcmanus sean-mcmanus added the more votes needed Issues that have been postponed until more community members upvote it label Nov 17, 2020
@github-actions
Copy link

This issue has been closed automatically because it needs more information and has not had recent activity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Language Service more info needed The issue report is not actionable in its current state more votes needed Issues that have been postponed until more community members upvote it not reproing We're not able to reproduce the issue (it's unlikely to get fixed until we find one). parser reliability Visual Studio Inherited from Visual Studio
Projects
None yet
Development

No branches or pull requests

3 participants