diff options
Diffstat (limited to 'results/classifier/118/all/1042388')
| -rw-r--r-- | results/classifier/118/all/1042388 | 390 |
1 files changed, 390 insertions, 0 deletions
diff --git a/results/classifier/118/all/1042388 b/results/classifier/118/all/1042388 new file mode 100644 index 000000000..74cb37d3d --- /dev/null +++ b/results/classifier/118/all/1042388 @@ -0,0 +1,390 @@ +semantic: 0.947 +performance: 0.932 +assembly: 0.930 +register: 0.929 +arm: 0.927 +permissions: 0.924 +architecture: 0.921 +peripherals: 0.911 +risc-v: 0.905 +x86: 0.903 +graphic: 0.903 +debug: 0.901 +virtual: 0.900 +hypervisor: 0.898 +ppc: 0.897 +user-level: 0.892 +device: 0.890 +vnc: 0.889 +kernel: 0.886 +VMM: 0.885 +boot: 0.878 +PID: 0.871 +network: 0.868 +mistranslation: 0.863 +KVM: 0.852 +socket: 0.851 +TCG: 0.849 +files: 0.838 +i386: 0.543 + +qemu: Unsupported syscall: 257 (timer_create) + +Running qemu-arm-static for git HEAD. When I try to install ghc from debian into my arm chroot I get: + +Setting up ghc (7.4.1-4) ... +qemu: Unsupported syscall: 257 +ghc: timer_create: Function not implemented +qemu: Unsupported syscall: 257 +ghc-pkg: timer_create: Function not implemented +dpkg: error processing ghc (--configure): + subprocess installed post-installation script returned error exit status 1 +Errors were encountered while processing: + ghc +E: Sub-process /usr/bin/dpkg returned an error code (1) + +Yes, qemu's linux-user emulation layer doesn't currently support any of the posix timer syscalls. + + +Peter Maydell wrote: + +> Yes, qemu's linux-user emulation layer doesn't currently support any of +> the posix timer syscalls. + +Any idea how much work is involved to implement this? + + +On 27 August 2012 22:33, Erik de Castro Lopo <email address hidden> wrote: +> Peter Maydell wrote: +>> Yes, qemu's linux-user emulation layer doesn't currently support any of +>> the posix timer syscalls. +> +> Any idea how much work is involved to implement this? + +A couple of days for somebody who knows what they're doing and has +a convenient test case. + +-- PMM + + +Implementing timer_create along is probably not enough, one would have to implement rest of the related syscalls: + + * timer_create(): Create a timer. + * timer_settime(2): Arm (start) or disarm (stop) a timer. + * timer_gettime(2): Fetch the time remaining until the next expiration of a timer, along with the interval setting of the timer. + * timer_getoverrun(2): Return the overrun count for the last timer expiration. + * timer_delete(2): Disarm and delete a timer. + +Convinient testcases for timer* syscalls exist apparently in ltp suite. + +I have a fix for this. I can now successfully install ghc and compile programs with it. + +In the process of cleaning up the patch and working on a test for the test suite. + + +Erik, + +Is this patch available for public consumption? It doesn't seem to be upstream. + +Thanks, +#matt + +Matt Robinson wrote: + +> Is this patch available for public consumption? It doesn't seem to be +> upstream. + +Unfortunately not yet. I'm working on getting permission to release it. + +Cheers, +Erik +-- +---------------------------------------------------------------------- +Erik de Castro Lopo +http://www.mega-nerd.com/ + + +Any news on this? + +@Eric any news on your patch? Could you please link it here? + +Still waiting on approval from my employer's lawyers to release it. Have no idea how long this is going to take. + + +Until proper patch is available I'm using attached temp workaround. + +After some testing GHC and produced executables appear to work correctly in foreign arch chroot. + +I'm sure there will be issues but I only need compilation to work in foreign arch chroot because I will deploy produced executables to Raspberry Pi anyway. + +cabal-installing works too but I had to comment out anything related to Template Haskell from (to be installed) packages. + +versions: + +qemu 1.4.1 (static build) +host: Linux proton 3.9.2-1-ARCH #1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU/Linux +foreign: Linux proton 3.9.2-1-ARCH #1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 armv6l GNU/Linux +chroot created from 2013-02-09-wheezy-raspbian.img +ghc 7.4.1-4+rpi1 armhf + + +The two patches have been sent to the qemu-devel mailing list and I will also attach them here. +?field.comment=The two patches have been sent to the qemu-devel mailing list and I will also attach them here. + + +Latest version of my patch. Also submitted to the qemu-devel mailing list. + + +Bah, the patch in #13 segfaults in some circumstances, the previous one doesn't. + + +This has been fixed in Git in the following commits: + + commit f4f1e10a58cb5ec7806d47d20671e668a52c3e70 + Author: Erik de Castro Lopo <email address hidden> + Date: Fri Nov 29 18:39:23 2013 +1100 + + linux-user: Implement handling of 5 POSIX timer syscalls. + + Implement timer_create, timer_settime, timer_gettime, timer_getoverrun + and timer_delete. + + Signed-off-by: Erik de Castro Lopo <email address hidden> + Signed-off-by: Riku Voipio <email address hidden> + + commit 905bba13ca292cb8c83fe5ccdf8a95bd04168bb1 + Author: Erik de Castro Lopo <email address hidden> + Date: Fri Nov 29 18:39:22 2013 +1100 + + linux-user: Add target struct defs needed for POSIX timer syscalls. + + Signed-off-by: Erik de Castro Lopo <email address hidden> + Signed-off-by: Riku Voipio <email address hidden> + +Thi s bug can be closed as resolved. + + +will it be solved in the next qemu upload, right? how long will it take to have it on launchpad builders? + +Its currently in git HEAD. It will be in the next full release which I think is 2.0. + + +If someone wants to fix what's currently in Ubtuntu they should make a package which includes those two patches. + + +mmm I don't know, I built it in my ppa, with your patch. +Upgraded the system +https://code.launchpad.net/~costamagnagianfranco/+archive/firefox/+packages +Preparing to replace qemu-user 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-user_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-user ... +Preparing to replace qemu-keymaps 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-keymaps_1.7.0+dfsg-2ubuntu4~saucy1_all.deb) ... +Unpacking replacement qemu-keymaps ... +Preparing to replace qemu-system-ppc 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system-ppc_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system-ppc ... +Preparing to replace qemu-system-sparc 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system-sparc_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system-sparc ... +Preparing to replace qemu-system-x86 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system-x86_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system-x86 ... +Preparing to replace qemu-system-arm 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system-arm_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system-arm ... +Preparing to replace qemu-system-misc 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system-misc_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system-misc ... +Preparing to replace qemu-system-mips 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system-mips_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system-mips ... +Preparing to replace qemu-system 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-system_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-system ... +Preparing to replace qemu-utils 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-utils_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-utils ... +Preparing to replace qemu 1.5.0+dfsg-3ubuntu5.2 (using .../qemu_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu ... +Preparing to replace qemu-user-static 1.5.0+dfsg-3ubuntu5.2 (using .../qemu-user-static_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb) ... +Unpacking replacement qemu-user-static ... + + +pbuilder-dist sid armhf login +apt-get install ghc +Setting up ghc (7.6.3-6) ... +qemu: Unsupported syscall: 257 +ghc: timer_create: Function not implemented +update-alternatives: using /usr/bin/ghc to provide /usr/bin/haskell-compiler (haskell-compiler) in auto mode +qemu: Unsupported syscall: 257 +ghc-pkg: timer_create: Function not implemented +dpkg: error processing package ghc (--configure): + subprocess installed post-installation script returned error exit status 1 + + +I just tried it here on my system using: + + - QEMU compiled from git HEAD. + - ghc 7.6.3-6 from Debian + +and I was able to start compiling GHC from git. I didn't let it run to completion because I only have my laptop available at the moment. + +I suggest you try debugging some more and maybe try building something smaller than GHC. + + + +but I just tried to install ghc, not to build it, can you try my ppa? + +I don't have a machine running Ubuntu. I onlu lodged a bug here because this is the official bug tracker for Qemu. + + +This my Debian system: + + $ uname -a + Linux rolly 3.11-2-amd64 #1 SMP Debian 3.11.10-1 (2013-12-04) x86_64 GNU/Linux + +I normally run my qemu chroot using schroot as follows: + + schroot -c armhf + +If I need to install packages I schroot as root: + + schroot -c armhf -u root + +In the chroot, I get: + + Linux rolly 3.11-2-amd64 #1 SMP Debian 3.11.10-1 (2013-12-04) armv7l GNU/Linux + +and as root I have successfully removed and installed ghc from the Debian repositories. + + +$:~/branches/ettercap (master) $ apt-cache show qemu +Package: qemu +Priority: optional +Section: otherosfs +Installed-Size: 556 +Maintainer: Ubuntu Developers <email address hidden> +Architecture: amd64 +Version: 1.7.0+dfsg-2ubuntu4~saucy1 +Suggests: qemu-user-static +Depends: qemu-system (>= 1.7.0+dfsg-2ubuntu4~saucy1), qemu-user (>= 1.7.0+dfsg-2ubuntu4~saucy1), qemu-utils (>= 1.7.0+dfsg-2ubuntu4~saucy1) +Filename: pool/main/q/qemu/qemu_1.7.0+dfsg-2ubuntu4~saucy1_amd64.deb +Size: 230798 + +-------------------------------- + +$ pbuilder-dist sid armhf login +[sudo] password for locutus: +W: /home/locutus/.pbuilderrc does not exist +I: Building the build Environment +I: extracting base tarball [/home/locutus/pbuilder/sid-armhf-base.tgz] + +this command runs qemu + +ps ax |grep qemu + 1860 pts/8 S 0:00 sudo HOME=/home/locutus ARCHITECTURE=armhf DISTRIBUTION=sid ARCH=armhf DIST=sid DEB_BUILD_OPTIONS= pbuilder --login --distribution sid --buildresult /home/locutus/pbuilder/sid-armhf_result/ --basetgz /home/locutus/pbuilder/sid-armhf-base.tgz --mirror http://ftp.debian.org/debian --debootstrapopts --keyring=/usr/share/keyrings/debian-archive-keyring.gpg --components main contrib non-free --debootstrapopts --arch=armhf --debootstrap qemu-debootstrap + 1861 pts/8 S 0:00 /bin/bash /usr/sbin/pbuilder --login --distribution sid --buildresult /home/locutus/pbuilder/sid-armhf_result/ --basetgz /home/locutus/pbuilder/sid-armhf-base.tgz --mirror http://ftp.debian.org/debian --debootstrapopts --keyring=/usr/share/keyrings/debian-archive-keyring.gpg --components main contrib non-free --debootstrapopts --arch=armhf --debootstrap qemu-debootstrap + 2616 pts/8 S+ 0:00 /usr/bin/qemu-arm-static /bin/bash + + +I don't see any difference between your and my method, both of them seems to be calling qemu-debootstrap + + +Fixed upstream, thanks Eric! Marking as affecting Ubuntu, as even trusty's qemu does not have that fix yet. For the record, lp:platform-api uses posix timers for the sensor emulation, so running its tests will reproduce this qemu problem (and verify its fix). + +The attachment "temp workaround to enable compilation and execution of GHC and produced executables in foreign arch chroot" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team. + +[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.] + +Unfortunately it is still not working with these two patches. The "Unsupported syscall: 257" is gone, but now it fails on EINVAL. I attach a little test C file which uses a timer. It works fine on x86 and a real arm machine, but under QEMU I get: + +$ gcc -o timer_test -Wall timer_test.c -lrt +$ ./timer_test +Failed to create timer: Invalid argument +qemu: uncaught target signal 6 (Aborted) - core dumped +Aborted (core dumped) + +So timer_create() does not actually seem to work? I tried some variations like 50 ms, or using CLOCK_REALTIME instead of CLOCK_MONOTONIC, all with the same result. + +Thanks for the test case Martin. Problem confirmed. + +The issue is that timer_create allows a number of different callback mechanisms and I had only implemented the one I need. + + Working on it now. + + + +@erikd, + +this is marked Fix Released in QEMU project, but comment #28 suggests that commit f4f1e10a58cb5ec7806d47d20671e668a52c3e70 does not in fact solve this bug. If there is a set of patches upstream that does fix the bug, please let me know and I'll pull them into trusty. Thanks much! + +The fix that was commited to the Qemu git tree fixed the original test case I had. @pittit then found another test case that fails and I intend to fix that when I find a good chunk of free time. Problem is I only work on Wemu sporadically and it takes me quite a bit of time to get up to speed when I return to work on it. + +Have you had any more time to look into this? Should the QEMU (project) task also be re-marked open? + +I've been looking at it over the last week or so and I have submitted a patch toe the qemu-devel mailing list to fix another timer_create() problem sometime in the last week. + +Unfortunately the test case @pittit submitted is far harder to support than the original test case. In this case the timer_create() syscall gets passed pointers to functions and data in the target's address space and I have not figured out how to handle that yet. + + +On 9 August 2014 07:15, Erik de Castro Lopo <email address hidden> wrote: +> Unfortunately the test case @pittit submitted is far harder to support +> than the original test case. In this case the timer_create() syscall +> gets passed pointers to functions and data in the target's address space +> and I have not figured out how to handle that yet. + +Didn't we discuss this on the list a while back? You're confusing +the libc API with the kernel syscall API here -- the kernel definitely +does not take a pointer to a function to call here. (The timer_create +manpage explicitly says that the SIGEV_THREAD functionality +is implemented in the C library, not the kernel.) You can see +this if you strace it: + +clone(child_stack=0xb76e5494, +flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, +parent_tidptr=0xb76e5bd8, {entry_number:6, base_addr:0xb76e5b70, +limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, +limit_in_pages:1, seg_not_present:0, useable:1}, +child_tidptr=0xb76e5bd8) = 12666 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +futex(0xb76d324c, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +timer_create(CLOCK_REALTIME, {0x984b098, 32, SIGEV_THREAD_ID, +{12666}}, {0x1}) = 0 +timer_settime(0x1, 0, {it_interval={0, 0}, it_value={0, 50000000}}, NULL) = 0 + +Under the hood libc is creating a new thread with clone, and +what the timer_create() syscall gets passed is a struct including +the thread ID to be sent a signal when the timer expires (here +that's 12666). + +So all you need to do is support SIGEV_THREAD_ID, +which I think doesn't require much more than copying +across the thread ID struct field. + +(On the other hand that does mean that all programs which +use SIGEV_THREAD are by definition multithreaded, which +puts them into "this isn't supported" territory because of our +well known and longstanding threading issues.) + +-- PMM + + +Patch which seems to at least make the test case work (tested with i386-on-i386 linux-user): http://patchwork.ozlabs.org/patch/378769/ + + +Unfortunately it doesn't work with armhf on amd64 linux-user. + +Use the test program from comment #27 I get: + + > schroot -c armhf -- ./timer_test_armhf + About to call host's timer_create (0, 0x7fff6ee80720, 0x625b1f40) + Host's timer_create returns -22 + Failed to create timer: Invalid argument + qemu: uncaught target signal 6 (Aborted) - core dumped + E: Child terminated by signal ‘Aborted’ + +(Yes I made very certain the schroot was using my freshly compiled version of qemu-arm-static). + + +@erikd, + +can you check whether this has been fixed in wily? + +I finally got round to looking into why the test case from comment #27 worked on x86-64 guests and i386-guest-on-i386-host but not on arm-on-x86-64. This turns out to be a wrong structure definition which meant we weren't handling the 32-bit-guest-on-64-bit-host combinations correctly. I've sent a patch: + +http://patchwork.ozlabs.org/patch/665274/ + +I think this should tie up the last loose end in this bug report so once it gets into master we can close it. + + |