https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124206

            Bug ID: 124206
           Summary: [16 Regression] Stack overflow in ASAN-instrumented
                    GCC
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pheeck at gcc dot gnu.org
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-linux
            Target: x86_64-linux

Configure GCC with --enable-host-shared --enable-checking=release
--disable-multilib --with-build-config=bootstrap-asan

Then run
asan-gcc gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c -O0

You get a segfault

Doing the same thing with --disable-bootstrap --enable-checking=release doesn't
result in a segfault.

I suspect that the problem is somehow caused by the asan instrumentation.

Doing
asan-gcc gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c -O0 -wrapper
gdb,--args
and asking for a backtrace gives you a very long backtrace ending with this:

#63527 0x0000000000aef762 in c_parser_expr_no_commas
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0, omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10011
#63528 0x0000000000af5d58 in c_parser_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:14246
#63529 0x0000000000ad486f in c_parser_postfix_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:11920
#63530 0x0000000000ae48ab in c_parser_unary_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10831
#63531 0x0000000000aea03d in c_parser_cast_expression
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0) at
/home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10635
#63532 0x0000000000aea9ce in c_parser_binary_expression
(parser=parser@entry=0x7ffff7fac0d0, after=0x0, 
    omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10403
#63533 0x0000000000aedfe6 in c_parser_conditional_expression
(parser=parser@entry=0x7ffff7fac0d0, 
    after=<optimized out>, omp_atomic_lhs=<optimized out>)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10098
#63534 0x0000000000aef762 in c_parser_expr_no_commas
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0, omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10011
#63535 0x0000000000af5d58 in c_parser_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:14246
#63536 0x0000000000ad486f in c_parser_postfix_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:11920
#63537 0x0000000000ae48ab in c_parser_unary_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10831
#63538 0x0000000000aea03d in c_parser_cast_expression
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0) at
/home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10635
#63539 0x0000000000aea9ce in c_parser_binary_expression
(parser=parser@entry=0x7ffff7fac0d0, after=0x0, 
    omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10403
#63540 0x0000000000aedfe6 in c_parser_conditional_expression
(parser=parser@entry=0x7ffff7fac0d0, 
    after=<optimized out>, omp_atomic_lhs=<optimized out>)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10098
#63541 0x0000000000aef762 in c_parser_expr_no_commas
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0, omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10011
#63542 0x0000000000b199fa in c_parser_initializer
(parser=parser@entry=0x7ffff7fac0d0, 
    decl=decl@entry=0x7bfff45d5e40) at
/home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:6585
#63543 0x0000000000ac3b63 in c_parser_declaration_or_fndef
(parser=parser@entry=0x7ffff7fac0d0, 
    fndef_ok=false, fndef_ok@entry=true,
static_assert_ok=static_assert_ok@entry=true, 
    empty_ok=empty_ok@entry=true, nested=nested@entry=false,
start_attr_ok=start_attr_ok@entry=true, 
    simple_ok=<optimized out>, objc_foreach_object_declaration=<optimized out>, 
    omp_declare_simd_clauses=<optimized out>, have_attrs=<optimized out>,
attrs=<optimized out>, 
    oacc_routine_data=<optimized out>, fallthru_attr_p=<optimized out>)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:3017
#63544 0x0000000000b98828 in c_parser_external_declaration
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:2250
#63545 0x0000000000b9a83c in c_parser_translation_unit (parser=<optimized out>)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:2089
#63546 c_parse_file () at
/home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:31298
#63547 0x0000000000ceabef in c_common_parse_file ()
    at
/home/worker/buildworker/tiber-gcc-asan/build/gcc/c-family/c-opts.cc:1422
#63548 0x00000000022886b9 in compile_file ()
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/toplev.cc:455
#63549 0x0000000000844235 in do_compile ()
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/toplev.cc:2225
#63550 toplev::main (this=this@entry=0x7bfff56f0020, argc=<optimized out>,
argc@entry=21, 
    argv=<optimized out>, argv@entry=0x7fffffffd958)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/toplev.cc:2389
#63551 0x000000000084f96e in main (argc=<optimized out>, argv=0x7fffffffd958)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/main.cc:39
(gdb) 

This part repeats on and on:

#63535 0x0000000000af5d58 in c_parser_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:14246
#63536 0x0000000000ad486f in c_parser_postfix_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:11920
#63537 0x0000000000ae48ab in c_parser_unary_expression
(parser=parser@entry=0x7ffff7fac0d0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10831
#63538 0x0000000000aea03d in c_parser_cast_expression
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0) at
/home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10635
#63539 0x0000000000aea9ce in c_parser_binary_expression
(parser=parser@entry=0x7ffff7fac0d0, after=0x0, 
    omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10403
#63540 0x0000000000aedfe6 in c_parser_conditional_expression
(parser=parser@entry=0x7ffff7fac0d0, 
    after=<optimized out>, omp_atomic_lhs=<optimized out>)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10098
#63541 0x0000000000aef762 in c_parser_expr_no_commas
(parser=parser@entry=0x7ffff7fac0d0, 
    after=after@entry=0x0, omp_atomic_lhs=omp_atomic_lhs@entry=0x0)
    at /home/worker/buildworker/tiber-gcc-asan/build/gcc/c/c-parser.cc:10011

I'm confused.  I would expect some asan functions to be in that stacktrace.

Reply via email to