Recursively reentering a function during the initialization of one of its static objects can result in an attacker being able to cause a crash or denial of service. Indeterminately ordered dynamic initialization can lead to undefined behavior due to accessing an uninitialized object.
|LDRA tool suite|
Avoid initialization order problems across translation units by replacing non-local static objects with local static objects
Subclause 3.6.2, "Initialization of Non-local Variables"