arm_interface: curb infinite recursion in stacktrace generation
This commit is contained in:
parent
2dd6a2352d
commit
3e6840a74c
|
@ -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;
|
||||||
|
|
Reference in New Issue