Merge pull request #9138 from liamwhite/hbl-stacktrace

arm_interface: curb infinite recursion in stacktrace generation
master
liamwhite 2022-10-27 20:07:48 +07:00 committed by GitHub
commit 8ce6256722
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

@ -450,7 +450,7 @@ std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_32::GetBacktrace(Core::S
// Frame records are two words long: // Frame records are two words long:
// fp+0 : pointer to previous frame record // fp+0 : pointer to previous frame record
// fp+4 : value of lr for frame // fp+4 : value of lr for frame
while (true) { for (size_t i = 0; i < 256; i++) {
out.push_back({"", 0, lr, 0, ""}); out.push_back({"", 0, lr, 0, ""});
if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 8)) { if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 8)) {
break; break;

@ -517,7 +517,7 @@ std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_64::GetBacktrace(Core::S
// Frame records are two words long: // Frame records are two words long:
// fp+0 : pointer to previous frame record // fp+0 : pointer to previous frame record
// fp+8 : value of lr for frame // fp+8 : value of lr for frame
while (true) { for (size_t i = 0; i < 256; i++) {
out.push_back({"", 0, lr, 0, ""}); out.push_back({"", 0, lr, 0, ""});
if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 16)) { if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 16)) {
break; break;