Program that segfaults with -Ofast

Mon Jan 8 10:54:00 GMT 2018

On 08/01/2018 11:37, Jonathan Wakely wrote:
> On 8 January 2018 at 09:13, Andrew Haley wrote:
>> On 07/01/18 21:27, Christer Solskogen wrote:
>>> Fixed!
>>> Wanna know something funny?
>>> Having a printf fixed the segfault. Without it, it would crash.
>>> So the workaround in read_kickstart (memory.cpp) was to add
>>> "volatile int i" instead of "int i".
>>> Just one simple printf("Value of i: %d\n", i); was enough to not segfault.
>> That's probably not the real fix, unless you have another thread accessing
>> i.
> And even if another thread is accessing that variable, making it
> volatile does not make the code correct.
> It's possible that the bug is now hidden by the combination of
> volatile and a sequence point introduced by calling printf, but it's
> still a bug to access a shared variable without atomic ops, see

'i' is an automatic variable, no concurrent access involved.

This is the code under discussion:

And the author cargo culted this a few hours ago:


More information about the Gcc-help mailing list