[ASAN] sanitizing static initialization order fiasco

Hi,
so I’ve heard that ASAN supports sanitizing static initialization order fiasco:
http://clang.llvm.org/docs/AddressSanitizer.html#initialization-order-checking

I assume that it only reports occurrences of fiasco, and not cases when it could happen but we were lucky enough that initialization order was right.

Am I right or not? If so, is there any way to staticly prove that code is initialization order fiasco free?

Best
Piotr Padlewski

Hi,
so I've heard that ASAN supports sanitizing static initialization order
fiasco:

http://clang.llvm.org/docs/AddressSanitizer.html#initialization-order-checking

I assume that it only reports occurrences of fiasco, and not cases when it
could happen but we were lucky enough that initialization order was right.

There is a stricter mode that will find potential fiasco as well:
https://github.com/google/sanitizers/wiki/AddressSanitizerInitializationOrderFiasco#strict-init-order-checking

Am I right or not? If so, is there any way to staticly prove that code is
initialization order fiasco free?

I'd guess this can be checked statically but I am not aware of a tool that
does it.

Thanks Kostya :slight_smile: