summary refs log tree commit diff stats
path: root/results/classifier/105/instruction/1052857
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-03 12:04:13 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-06-03 12:04:13 +0000
commit256709d2eb3fd80d768a99964be5caa61effa2a0 (patch)
tree05b2352fba70923126836a64b6a0de43902e976a /results/classifier/105/instruction/1052857
parent2ab14fa96a6c5484b5e4ba8337551bb8dcc79cc5 (diff)
downloadqemu-analysis-256709d2eb3fd80d768a99964be5caa61effa2a0.tar.gz
qemu-analysis-256709d2eb3fd80d768a99964be5caa61effa2a0.zip
add new classifier result
Diffstat (limited to 'results/classifier/105/instruction/1052857')
-rw-r--r--results/classifier/105/instruction/105285761
1 files changed, 61 insertions, 0 deletions
diff --git a/results/classifier/105/instruction/1052857 b/results/classifier/105/instruction/1052857
new file mode 100644
index 000000000..03b4ef795
--- /dev/null
+++ b/results/classifier/105/instruction/1052857
@@ -0,0 +1,61 @@
+instruction: 0.810
+device: 0.801
+other: 0.794
+socket: 0.765
+graphic: 0.735
+mistranslation: 0.696
+semantic: 0.695
+network: 0.690
+boot: 0.679
+vnc: 0.650
+assembly: 0.649
+KVM: 0.432
+
+qemu-user compiled static for ppc fails on 64bit hosts
+
+On debian I used debootstrap to set up a powerpc chroot. If I then copy in a statically linked qemu-user ppc binary it will work for some commands in the chroot and fail for others. Steps to reproduce:
+
+host$ mkdir powerpc
+host$ sudo debootstrap --arch=powerpc --foreign wheezy powerpc http://ftp.debian.org/debian
+host$ sudo cp /usr/bin/qemu-ppc-static powerpc/usr/bin/
+host$  LANG=C sudo chroot powerpc /usr/bin/qemu-ppc-static /bin/bash
+I have no name!@guest:/# pwd
+/
+I have no name!@guest:/# cd home/
+I have no name!@guest:/home# ls
+qemu-ppc-static: /tmp/buildd/qemu-1.1.2+dfsg/linux-user/signal.c:4341: setup_frame: Assertion `({ unsigned long __guest = (unsigned long)(ka->_sa_handler) - guest_base; (__guest < (1ul << 32)) && (!reserved_va || (__guest < reserved_va)); })' failed.
+
+I have also built this from the git HEAD sources (hash 6b80f7db8a7f84d21e46d01e30c8497733bb23a0) and I get the same result.
+
+I ran into this issue also and did a bit of investigating. This is only an issue when ran on a 64bit host. The actual problem line is 
+
+err |= __put_user(h2g(ka->_sa_handler), &sc->handler);
+
+inside of linux_user/signal.c. What I am unsure of is when the h2g() macro, the cause of the assert, is valid to be used. In this case, under 64bit, GUEST_BASE has a value (32bit it is 0) but ka->_sa_handler has a low value. Assuming that the low value is a direct result of being a guest address and not a host address then the h2g() shouldn't be called.
+
+I removed the macro from that line which kept the assert from appearing but qemu still died after running 'ls'. I am attempting to fix this bug but I have limited understanding of qemu itself so no promises of me doing a fix, let alone a proper fix.
+
+On 1 January 2013 06:56, Samuel Seay <email address hidden> wrote:
+> I ran into this issue also and did a bit of investigating. This is only
+> an issue when ran on a 64bit host. The actual problem line is
+>
+> err |= __put_user(h2g(ka->_sa_handler), &sc->handler);
+>
+> inside of linux_user/signal.c. What I am unsure of is when the h2g()
+> macro, the cause of the assert, is valid to be used.
+
+Strongly suspect that (PPC-specific) code is just busted -- no other guest
+architecture's signal handling code does an h2g on ka->_sa_handler,
+because it's a guest address already.
+
+cc'ing our PPC maintainer :-)
+
+-- PMM
+
+
+I just submitted a patch to the dev mailing list. Just in case there is an issue with the submitted patch, or if Erik wants it sooner, I attached the patch I submitted.
+
+As far as I can see, the fix has been included here:
+http://git.qemu.org/?p=qemu.git;a=commitdiff;h=beb526b12134a6b674
+... so closing this ticket now.
+