diff options
Diffstat (limited to 'results/classifier/108/other/1878501')
| -rw-r--r-- | results/classifier/108/other/1878501 | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/results/classifier/108/other/1878501 b/results/classifier/108/other/1878501 new file mode 100644 index 000000000..71ecba925 --- /dev/null +++ b/results/classifier/108/other/1878501 @@ -0,0 +1,93 @@ +other: 0.933 +graphic: 0.924 +device: 0.869 +files: 0.857 +permissions: 0.834 +PID: 0.822 +performance: 0.821 +vnc: 0.801 +debug: 0.800 +semantic: 0.786 +socket: 0.778 +network: 0.754 +KVM: 0.619 +boot: 0.541 + +qemu-i386 does not define AT_SYSINFO + +qemu-i386 does not define the AT_SYSINFO auxval when running i386 Linux binaries. + +On most libcs, this is properly handled, but this is mandatory for the i686 Bionic (Android) libc or it will segfault. + +This is due to a blind assumption that getauxval(AT_SYSINFO) will return a valid function pointer: + +The code varies from version to version, but it looks like this: + +void *__libc_sysinfo; +// mangled as _Z19__libc_init_sysinfov +void __libc_init_sysinfo() { + bool dummy; + // __bionic_getauxval = getauxval + __libc_sysinfo = reinterpret_cast<void *>(__bionic_getauxval(AT_SYSINFO, dummy)); +} + +A simple way to reproduce is to compile a basic C program against the NDK: + +int main(void) { return 0; } + +$ i686-linux-android-clang -static empty.c -o empty +$ qemu-i386 -cpu max ./empty +qemu: uncaught target signal 11 (Segmentation fault) - core dumped +Segmentation fault + +The place where it segfaults is misleading: It will, at least on the current NDK, crash on __set_thread_area, this is due to it calling a function pointer to __libc_sysinfo returned by __kernel_syscall. + +QEMU 4.1.1 (aarch64) +Pixel 2 XL via Termux + +Richard, + +this problem seems related to the work you already done on vsyscalls: + + b26491b4d4f8 ("linux-user/i386: Emulate x86_64 vsyscalls") + +I don't know if we should support AT_SYSINFO or consider this as a bug of the target libc. + +We do not define AT_SYSINFO because we do not implement the vdso. +All we have so far is the vsyscall page, which is not the same thing. + +I've had patches for the vdso for a number of years; perhaps it's +time to update and re-send that... + +The QEMU project is currently moving its bug tracking to another system. +For this we need to know which bugs are still valid and which could be +closed already. Thus we are setting the bug state to "Incomplete" now. + +If the bug has already been fixed in the latest upstream version of QEMU, +then please close this ticket as "Fix released". + +If it is not fixed yet and you think that this bug report here is still +valid, then you have two options: + +1) If you already have an account on gitlab.com, please open a new ticket +for this problem in our new tracker here: + + https://gitlab.com/qemu-project/qemu/-/issues + +and then close this ticket here on Launchpad (or let it expire auto- +matically after 60 days). Please mention the URL of this bug ticket on +Launchpad in the new ticket on GitLab. + +2) If you don't have an account on gitlab.com and don't intend to get +one, but still would like to keep this ticket opened, then please switch +the state back to "New" or "Confirmed" within the next 60 days (other- +wise it will get closed as "Expired"). We will then eventually migrate +the ticket automatically to the new system (but you won't be the reporter +of the bug in the new system and thus you won't get notified on changes +anymore). + +Thank you and sorry for the inconvenience. + + +[Expired for QEMU because there has been no activity for 60 days.] + |