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

            Bug ID: 77396
           Summary: address  sanitizer crashes if all static global
                    variables are optimized
           Product: gcc
           Version: 6.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: no...@turm-lahnstein.de
  Target Milestone: ---

Following stackoverflow discussion:
http://stackoverflow.com/questions/39081183/errors-with-g-5-and-6-when-using-address-sanitizer-and-additional-asan-flags-f/39152524#39152524

Compiling 

static int data = 0; 
static int dummy = data; 
int main() { }

with g++ -O2 -fsanitizer=address and running the executable with
ASAN_OPTIONS=verbosity=0:strict_string_checks=true:detect_odr_violation=2:check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true
./a.out

leads since g++5 to an executable for which the sanitizer crashes during the
run. 

The problem is that `data` and `dummy` get optimized together with
__asan_register_globals(), but __asan_before_dynamic_init is still called.

Reply via email to