[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Fiber switching and stack protection
From: |
Pavel Dovgaluk |
Subject: |
Re: [Qemu-devel] Fiber switching and stack protection |
Date: |
Mon, 16 Apr 2012 10:24:17 +0400 |
> >>>>> 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) {
I applied your patch to qemu 1.0 and it stopped crashing.
By the way, I also created implementation of coroutine-win32.c, which
uses WinAPI TLS functions directly (without using __thread specifiers).
It works fine too.
Pavel Dovgaluk
- [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, 2012/04/13
- Re: [Qemu-devel] Fiber switching and stack protection,
Pavel Dovgaluk <=
- 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