diff options
Diffstat (limited to 'results/classifier/118/review/1068900')
| -rw-r--r-- | results/classifier/118/review/1068900 | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/results/classifier/118/review/1068900 b/results/classifier/118/review/1068900 new file mode 100644 index 000000000..0d09f2e53 --- /dev/null +++ b/results/classifier/118/review/1068900 @@ -0,0 +1,77 @@ +mistranslation: 0.977 +user-level: 0.813 +device: 0.738 +semantic: 0.612 +graphic: 0.588 +network: 0.588 +register: 0.522 +ppc: 0.518 +socket: 0.479 +vnc: 0.478 +architecture: 0.472 +files: 0.465 +performance: 0.442 +risc-v: 0.439 +permissions: 0.417 +kernel: 0.416 +arm: 0.392 +x86: 0.391 +boot: 0.368 +PID: 0.319 +peripherals: 0.316 +debug: 0.296 +TCG: 0.295 +virtual: 0.265 +VMM: 0.261 +hypervisor: 0.214 +KVM: 0.152 +i386: 0.137 +assembly: 0.120 +-------------------- +debug: 0.235 +virtual: 0.207 +TCG: 0.127 +hypervisor: 0.071 +user-level: 0.051 +kernel: 0.033 +files: 0.013 +PID: 0.013 +network: 0.011 +performance: 0.010 +x86: 0.008 +i386: 0.007 +semantic: 0.005 +architecture: 0.004 +arm: 0.004 +device: 0.003 +ppc: 0.003 +register: 0.003 +socket: 0.002 +peripherals: 0.002 +assembly: 0.001 +boot: 0.001 +permissions: 0.001 +risc-v: 0.001 +graphic: 0.001 +KVM: 0.000 +vnc: 0.000 +mistranslation: 0.000 +VMM: 0.000 + +Thread cancellation broken in app-level emulation + +Thread cancellation (and certain other implementation-internal things such as set*id() and timers) are implemented in userspace on Linux by stealing a couple of the realtime signals for internal use by the implementation, leaving them unavailable to applications. Unfortunately, this bites qemu application-level emulation when the application being run uses thread cancellation or other features that need such signals. The signal handler is unable to be set (because sigaction on the host rejects the signal numbers) and attempts to send the signals result in it being received not by the emulated application code, but by the libc/libpthread code on which qemu is running; this in turn seems to cause qemu to crash. + +The best solution I can think of is for qemu to steal one of the realtime signals for its own use, and multiplex signal numbers outside the range SIGRTMIN..SIGRTMAX, as well as the stolen signal itself, on top of this stolen signal. This would both allow cancellation to work, and would allow applications the full range of realtime signals when the guest has more signals than the host (e.g. MIPS running on x86 host). + +Patch for the issue is available here: + +https://lists.eait.uq.edu.au/pipermail/microblaze-linux/2012-October/005760.html + + +Arg, somehow I added the above comment on the wrong bug. Thus bug is not fixed. The other bug report I recently filed was fixed. + +The URL from comment #1 is unfortunately not valid anymore. If this issue is still pending, could you please post your patch again to the qemu-devel mailing list to get it discussed and included? Thanks! + +[Expired for QEMU because there has been no activity for 60 days.] + |