Get the App
SLTechnology News&Howtos  ›  Development  › 

How to understand the Crash triggered by Clang compiler optimization

Shulou Source: shulou.com Published: 2022-06-03 02:03:14 10月01日 Update

This article focuses on "how to understand the Crash triggered by Clang compiler optimization", interested friends may wish to take a look. The method introduced in this paper is simple, fast and practical. Let's let the editor take you to learn how to understand the Crash triggered by Clang compiler optimization.

If someone told you that the following C++ function would cause the program crash, what reasons would you think of?

Std::string b2s (bool b) {return b? "true": "false";}

If you give some more descriptions, such as:

Crash will reappear with a certain probability.

Crash is caused by a segment error (SIGSEGV)

The Backtrace on the spot is often incomplete or even completely lost.

Only when the optimization level is above-O2 will it be (easier) to reproduce.

It can only be reproduced under Clang, but not GCC.

Well, some old birds may already have a clue, here is a minimized reproduction procedure and steps:

/ / file crash.cpp#include # include std::string _ _ attribute__ ((noinline)) b2s (bool b) {return b? "true": "false";} union {unsigned char c; bool b;} volatile utint main () {u.c = 0x80; std::cout

Tags: Address length character string program problem compilation parameter type start compiler function buffer caching buffer information interest content reason instruction Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Microsoft Huawei Shulou Tech Info Xiaomi vpn