-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
X64: cmpxchg16b raises UC_ERR_INSN_INVALID #1095
Comments
Stepping through the latest version of unicorn, I can confirm the void helper_cmpxchg16b(CPUX86State *env, target_ulong a0) function is emitted and called during execution. cmpxchange16b = b"\xf0\x49\x0f\xc7\x0c\x24" + b"\xff\x25\x00\x00\x00\x00" Still investigating why I see/(saw?) illegal instruction in the first place and if it might still be an issue. |
This may be a bug in Qemu 2.1.2? You can look at the latest Qemu code to
see if there is any changes, and port back the fix if possible.
|
There were quite some changes for this opcode... My understanding of the qemu/unicorn loop is not deep enough to understand if this might fix a bug or just reordered things/introduced new functionality. |
Even without my PR this seems to be fixed for master. |
While emulating the Linux Kernel in x64 bit mode, I encountered crashes with cmpxchg16b.
The following testcase ("lock cmpxchg16b xmmword ptr [r12]") crashes, for example:
The text was updated successfully, but these errors were encountered: