Skip to content
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

MIEngine: Fix Disassembly fail on GPU if startAddress is offset #1420

Merged

Conversation

intel-rganesh
Copy link
Contributor

Fix Disassembly failure on GPU if startAddress is offset

Issue description & fix:
When opening Disassembly View, VS requests disassembly for a certain amount of instructions.
In some of those requests, start address calculation results in an address in the middle of the instruction.
GDB is unable to execute the command if the start address of the disassembly range is the middle of the instruction - returns "unknown error -1", and thus MIEngine does not have any data for the VS to populate the entries - as a result, nulls are returned to VS, represented by "??".
The fix is to loop the disassembly request if it fails while decrementing the start address - this way at some point it will align with the beginning of the instruction. The loop will perform at most Process.MaxInstructionSize-times (assuming worst-case initial address at the end of the instruction).

It does happen that the end address is offset as well, but it does not affect the disassembly process.

Signed-off-by: intel-rganesh rakesh.ganesh@intel.com

@WardenGnaw WardenGnaw merged commit dad92af into microsoft:main Oct 23, 2023
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants