[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Fiber switching and stack protection
From: |
Bob Breuer |
Subject: |
Re: [Qemu-devel] Fiber switching and stack protection |
Date: |
Fri, 13 Apr 2012 09:53:23 -0500 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 |
On 4/13/2012 6:25 AM, Pavel Dovgaluk wrote:
>> -----Original Message-----
>> From: Paolo Bonzini [mailto:address@hidden
>> Sent: Thursday, April 12, 2012 8:57 PM
>> To: Stefan Weil
>> Cc: Kevin Wolf; 'qemu-devel'; Pavel Dovgaluk
>> Subject: Re: [Qemu-devel] Fiber switching and stack protection
>>
>> Il 12/04/2012 18:31, Stefan Weil ha scritto:
>>> Am 12.04.2012 12:18, schrieb Paolo Bonzini:
>>>> Il 12/04/2012 12:13, Kevin Wolf ha scritto:
>>>>> I guess it's this non-thread-local TLS once again, basically a
>>>>> compiler bug.
>
> You are right, this is a compiler bug with non-thread-local TLS.
>
>>>>> Paolo, wasn't there a compiler option that works around the problem?
>>>>>
>>>> I asked to test it (-D_MT) but never got any answer.
>>>
>>> I'd be surprised if defining _MT helped against compiler bugs.
>>
>> Well, -mthreads fixed it, and it should be the same as -D_MT -lmingwthrd.
>> But we shouldn't
>> need libmingwthrd, or do we?
>
> I've tried to add -mthreads to compiler options but nothing has changed,
> qemu still fails.
This is likely a different bug than the original thread related bug.
I'm using the mingw gcc 4.6.2, and I see the same thing as shown here:
http://virtuallyfun.superglobalmegacorp.com/?p=1846
Something goes wrong during optimization with gcc 4.6.2, but it doesn't
appear to be TLS related. Digging into it a bit,
qemu_coroutine_switch() seems to break if it gets inlined. Can anyone
else confirm if this one-line patch works for them?
diff --git a/coroutine-win32.c b/coroutine-win32.c
index 4179609..504873b 100644
--- a/coroutine-win32.c
+++ b/coroutine-win32.c
@@ -36,6 +36,7 @@ typedef struct
static __thread CoroutineWin32 leader;
static __thread Coroutine *current;
+__attribute__ ((noinline))
CoroutineAction qemu_coroutine_switch(Coroutine *from_, Coroutine *to_,
CoroutineAction action)
{
Bob
- [Qemu-devel] Fiber switching and stack protection, Pavel Dovgaluk, 2012/04/06
- Re: [Qemu-devel] Fiber switching and stack protection, Kevin Wolf, 2012/04/12
- Re: [Qemu-devel] Fiber switching and stack protection, Paolo Bonzini, 2012/04/12
- Re: [Qemu-devel] Fiber switching and stack protection, Stefan Weil, 2012/04/12
- Re: [Qemu-devel] Fiber switching and stack protection, Paolo Bonzini, 2012/04/12
- Re: [Qemu-devel] Fiber switching and stack protection, Pavel Dovgaluk, 2012/04/13
- Re: [Qemu-devel] Fiber switching and stack protection,
Bob Breuer <=
- Re: [Qemu-devel] Fiber switching and stack protection, Pavel Dovgaluk, 2012/04/16
- Re: [Qemu-devel] Fiber switching and stack protection, Paolo Bonzini, 2012/04/16
- Re: [Qemu-devel] Fiber switching and stack protection, Pavel Dovgaluk, 2012/04/16
- Message not available
- Re: [Qemu-devel] Fiber switching and stack protection, Roy Tam, 2012/04/16