qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat"


From: Paolo Bonzini
Subject: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat"
Date: Wed, 21 Oct 2009 19:28:54 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4pre) Gecko/20091014 Fedora/3.0-2.8.b4.fc11 Lightning/1.0pre Thunderbird/3.0b4

I've uploaded them here:
http://www.kernel.org/pub/linux/kernel/people/mst/
you can't see them in mirrors yet but will be able to soon when
kernel.org mirroring system catches them.

There is no difference in optimizations except that here:

        for (i = 0; i < aiocb->aio_niov && count; ++i) {

one of the two versions actually does "count && i < aiocb->aio_niov" due to hashing vagaries. This is irrelevant anyway. Same inlining, same loop optimization decisions, same everything else. So a GCC bug can be ruled out, IMHO.

The only difference, as someone already suspected, is the padding---the sigset is placed between the top of the frame and the other variables, which may hide an overrun. This is quite amazing for a function that has no arrays, but still is the only evidence.

I suggest trying to make the sigset_t static, since that generates exactly the same code as the "nohang" case, and exactly the same stack layout as the "hang" case. The next obvious step would be placing a watchpoint somewhere.

Cheers,

Paolo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]