qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Looking for a linux-user mode test


From: Sean Bruno
Subject: Re: [Qemu-devel] Looking for a linux-user mode test
Date: Wed, 28 Dec 2016 10:12:50 -0700
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1


On 12/28/16 10:05, Peter Maydell wrote:
> On 28 December 2016 at 15:06, Sean Bruno <address@hidden> wrote:
>> After some recent-ish changes to how user mode executes things/stuff,
>> I'm running into issues with the out of tree bsd-user mode code that
>> FreeBSD has been maintaining.  It looks like the host_signal_handler()
>> is never executed or registered correctly in our code.  I'm curious if
>> the linux-user code can handle this bit of configure script from m4.
>>
>> https://people.freebsd.org/~sbruno/stack.c
> 
> Hmm. That code does:
>  * set up a SIGSEGV signal handler to run on its own stack
>  * go into an infinite recursion, expecting to run out of
>    stack and trigger a SEGV
> which is a bit of an obscure corner case of signal handling.
> 
> We recently fixed a lot of signal handler related bugs in linux-user
> by doing a significant overhaul of that code. If bsd-user is still
> using the old broken approach it's probably still got lots of bugs
> in it. Alternatively, it's possible we changed some of the core
> code in that process and broke bsd-user by mistake.
> 
> Ideally all of that rework (including the support for properly
> interrupting syscalls without races) should be ported over to
> bsd-user at some point.

If you have a moment to point me at the merge commit that pulled in the
majority of this overhaul, I'll take a moment to review it for
application to bsd-user.

> 
>> If someone has the time/inclination, can this code be compiled for ARMv6
>> and executed in a linux chroot with the -strace argument applied?  I see
>> the following, which after much debugging seems to indicate that the
>> host_signal_handler() code is never executed as this code is requesting
>> that SIGSEGV be masked to its own handler.
> 
> Built for ARMv7 since I don't have an ARMv6 cross compiler
> or system, but it works ok for linux (also, built with -static
> rather than run in a chroot, for convenience):
> 
> e104462:xenial:qemu$ ./build/arm-linux/arm-linux-user/qemu-arm -strace
> ~/linaro/qemu-misc-tests/stack
> 29798 uname(0xf6fff1f0) = 0
> 29798 brk(NULL) = 0x0007f000
> 29798 brk(0x0007fd00) = 0x0007fd00
> 29798 readlink("/proc/self/exe",0xf6ffe328,4096) = 43
> 29798 brk(0x000a0d00) = 0x000a0d00
> 29798 brk(0x000a1000) = 0x000a1000
> 29798 access("/etc/ld.so.nohwcap",F_OK) = -1 errno=2 (No such file or 
> directory)
> 29798 sigaltstack(0xf6fff2e0,(nil)) = 0
> 29798 rt_sigaction(SIGSEGV,0xf6fff1b0,NULL) = 0
> --- SIGSEGV {si_signo=SIGSEGV, si_code=1, si_addr = 0xf67ffffc} ---
> 29798 exit_group(0)
> 
> (the enhancement to linux-user's strace to print the line on signal
> delivery is also a pretty new change.)
> 

Thanks.  This is what I expect to see.

>> https://people.freebsd.org/~sbruno/qemu-bsd-user-arm.txt
>>
>> Prior to 7e6c57e2957c7d868f74bd0d53b5e861b495e1c7 this DTRT for our
>> ARMv6 targets.
> 
> This commit hash doesn't seem to be in QEMU master.
> 

*sigh* ... that was the merge commit to the bsd-user branch I maintain.
Ignore it.

> thanks
> -- PMM
> 

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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