[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Confusion regarding temporaries with branch conditional
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] Confusion regarding temporaries with branch conditional |
Date: |
Wed, 30 Nov 2016 12:09:20 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
On 11/30/2016 10:12 AM, Alex Bennée wrote:
>
> Richard Henderson <address@hidden> writes:
>
>> On 11/30/2016 08:55 AM, Alex Bennée wrote:
>>>
>>> Nikunj A Dadhania <address@hidden> writes:
>>>
>>>> Hi,
>>>>
>>>> I was writing one instruction and hit following issue:
>>>>
>>>> [snip]/qemu/tcg/tcg.c:2039: tcg fatal error
>>>> qemu-ppc64le: [snip]/qemu/translate-all.c:175: tb_lock: Assertion
>>>> `!have_tb_lock' failed.
>>>> Segmentation fault (core dumped)
>>>
>>> This is confusing because something is trying to take the tb_lock while
>>> you are in code generation. tb_lock is held for code generation to
>>> ensure serialisation of generation.
>>
>> Yes, I've seen this myself. I never got around to reporting the "problem"
>> properly. It's a confusing side effect of a SIGSEGV arriving during tcg code
>> generation. The signal handler longjmps back with unexpected locks
>> held.
>
> So this is a SEGV which belongs to the translation code rather than the
> guest?
Yes.
> There are places in the cpu loop where we exit that should reset the
> locks on a restart - see tb_lock_reset() so I'm not quite sure what has
> happened here.
It should be easy enough to force a segv from within the compile step to
reproduce this.
r~