Messages in this thread | | | Date | Fri, 5 Aug 2011 13:09:45 -0700 | From | Andi Kleen <> | Subject | New vsyscall emulation breaks JITs |
| |
Andy,
We found that your new vsyscall emulation in
commit 5cec93c216db77c45f7ce970d46283bcb1933884 Author: Andy Lutomirski <luto@MIT.EDU> Date: Sun Jun 5 13:50:24 2011 -0400
x86-64: Emulate legacy vsyscalls
breaks JITs that execute x86 code and use the legacy vsyscalls.
The problem is that the JIT translates the vsyscall page into its code buffer and executes the "int 0xcc" there. Then when the kernel gets the interrupt it doesn't see the vsyscall page as the source and crashes the program.
For some reason several modern executables also seem to still use the old vsyscall page, so this problem can be hit quickly.
This happened with pin (http://www.pintool.org/), however I expect it will affect all user space x86 JITs (valgrind, dynamo, qemu-user, etc.)
What to do? Right now this broke existing setups.
-Andi -- ak@linux.intel.com -- Speaking for myself only
| |