http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49016
--- Comment #3 from Lee Merrill <merrill_707_1 at yahoo dot com> 2011-05-16 22:51:33 UTC --- A disassembly snippet to show the problem: 0000000000000000 <fcPostWrite>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp # Note that these statements reference memory below the # current stack pointer. So any interrupt which occurs # here will corrupt these variables. 4: 48 89 7d e8 mov %rdi,-0x18(%rbp) 8: 89 75 e4 mov %esi,-0x1c(%rbp) b: 8b 45 e4 mov -0x1c(%rbp),%eax e: 89 45 fc mov %eax,-0x4(%rbp) 11: 48 8b 45 e8 mov -0x18(%rbp),%rax 15: 48 89 45 f0 mov %rax,-0x10(%rbp) 19: 48 8b 55 f0 mov -0x10(%rbp),%rdx 1d: 8b 45 fc mov -0x4(%rbp),%eax 20: 89 02 mov %eax,(%rdx) 22: c9 leaveq 23: c3 retq