diff options
| author | 2022-10-25 17:47:18 -0400 | |
|---|---|---|
| committer | 2022-10-27 16:01:05 -0400 | |
| commit | 3e6840a74cf2203223058d4fa1e0a0e4784cbd70 (patch) | |
| tree | 00ccd57f561496a995cc6a7de3ab54bdbb1e014f /src/core | |
| parent | Merge pull request #9125 from liamwhite/dummy-scheduler (diff) | |
| download | yuzu-3e6840a74cf2203223058d4fa1e0a0e4784cbd70.tar.gz yuzu-3e6840a74cf2203223058d4fa1e0a0e4784cbd70.tar.xz yuzu-3e6840a74cf2203223058d4fa1e0a0e4784cbd70.zip | |
arm_interface: curb infinite recursion in stacktrace generation
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_32.cpp | 2 | ||||
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_64.cpp | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index d1e70f19d..287ba102e 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp | |||
| @@ -450,7 +450,7 @@ std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_32::GetBacktrace(Core::S | |||
| 450 | // Frame records are two words long: | 450 | // Frame records are two words long: |
| 451 | // fp+0 : pointer to previous frame record | 451 | // fp+0 : pointer to previous frame record |
| 452 | // fp+4 : value of lr for frame | 452 | // fp+4 : value of lr for frame |
| 453 | while (true) { | 453 | for (size_t i = 0; i < 256; i++) { |
| 454 | out.push_back({"", 0, lr, 0, ""}); | 454 | out.push_back({"", 0, lr, 0, ""}); |
| 455 | if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 8)) { | 455 | if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 8)) { |
| 456 | break; | 456 | break; |
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 22b5d5656..afb7fb3a0 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp | |||
| @@ -517,7 +517,7 @@ std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_64::GetBacktrace(Core::S | |||
| 517 | // Frame records are two words long: | 517 | // Frame records are two words long: |
| 518 | // fp+0 : pointer to previous frame record | 518 | // fp+0 : pointer to previous frame record |
| 519 | // fp+8 : value of lr for frame | 519 | // fp+8 : value of lr for frame |
| 520 | while (true) { | 520 | for (size_t i = 0; i < 256; i++) { |
| 521 | out.push_back({"", 0, lr, 0, ""}); | 521 | out.push_back({"", 0, lr, 0, ""}); |
| 522 | if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 16)) { | 522 | if (!fp || (fp % 4 != 0) || !memory.IsValidVirtualAddressRange(fp, 16)) { |
| 523 | break; | 523 | break; |