Messages in this thread | | | Date | Tue, 21 Jul 2009 09:11:44 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: Linux 2.6.27.27 |
| |
On Tue, 21 Jul 2009, Krzysztof Oledzki wrote: > > OK, there are three kernels, exactly as you requested: > > http://noc.axelspringer.pl/no-strict-overflow-vs-wrapv/vmlinux-fno-strict-overflow.bz2 (Hangs) > http://noc.axelspringer.pl/no-strict-overflow-vs-wrapv/vmlinux-fwrapv.bz2 (OK) > http://noc.axelspringer.pl/no-strict-overflow-vs-wrapv/vmlinux-fnone.bz2 (OK)
Perfect.
And interestingly, the "fno-strict-overflow" kernel is actually much closer to the "fnone" kernel than to the "fwrapv" one. I have some silly scripts based on 'objdump -d' plus a lot of stupid sed scripting to remove the trivial differences due to instruction addresses, and then doing a 'diff -u' between the munged disassembly of the kernels gives me:
[torvalds@nehalem fno-strict-overflow]$ wc -l fnone-to-fno-strict-overflow fwrapv-to-fno-strict-overflow 39309 fnone-to-fno-strict-overflow 91423 fwrapv-to-fno-strict-overflow 130732 total
ie the diff from the kernel with no flags is less than twice the size of the diff from fwrapv.
Still - it's almost 40kB of diffs of disassembly, so I'm not going to guarantee that I can make any sense of it and find the compiler problem in it. But I'll try. And send you test-patches to see if I can pinpoint the code that causes the problem.
> Kernels are identical and are compiled from the same config, on the same > server with gcc-4.2.4, binutils-2.19. There is no ccache installed and the > kernels are not patched with any additonal patches - just vanilla > linux-2.6.27.27.
Thank you.
> Screenshot from the hanging kernel (-fno-strict-overflow): > http://noc.axelspringer.pl/no-strict-overflow-vs-wrapv/2.6.27.27-hang.png > > Dmesg from a bootable kernel: > http://noc.axelspringer.pl/no-strict-overflow-vs-wrapv/dmesg
Great. This is all about as perfect as could be asked for. Now it's just a question of trying to find the right code generation difference...
Linus
| |