mirror of
https://git.eden-emu.dev/archive/citron
synced 2026-04-08 12:18:49 -04:00
feat: Enhanced Nintendo SDK crash detection and recovery system
* Enhanced ARM interface backtrace logging with Nintendo SDK crash detection - Detects nnSdk module crashes and initialization-time failures - Provides detailed recovery suggestions and logging - Identifies recoverable vs non-recoverable crashes * Improved physical core crash handling - Enhanced prefetch abort and data abort recovery - Continues execution for Nintendo SDK crashes instead of suspending - Better logging for crash analysis and debugging * Expanded SVC exception handling - Added Nintendo SDK-specific crash recovery logic - Enhanced general crash recovery for low-address and assertion failures - Improved UE4 crash handling integration * Updated Horizon OS version to 20.4.0 - Updated HOS_VERSION_MINOR from 1 to 4 - Updated HOS_VERSION_MICRO from 5 to 0 - Updated version hash and display strings accordingly * Fixed Vulkan turbo mode performance metrics - Added proper type casting for execution time comparisons - Prevents potential integer overflow issues Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
@@ -215,7 +215,7 @@ void TurboMode::UpdatePerformanceMetrics(std::chrono::nanoseconds execution_time
|
||||
|
||||
// Update max execution time
|
||||
u64 current_max = performance_stats.max_execution_time_ns.load(std::memory_order_relaxed);
|
||||
while (time_ns > current_max &&
|
||||
while (static_cast<u64>(time_ns) > current_max &&
|
||||
!performance_stats.max_execution_time_ns.compare_exchange_weak(current_max, time_ns,
|
||||
std::memory_order_relaxed)) {
|
||||
// Retry if compare_exchange failed
|
||||
@@ -223,7 +223,7 @@ void TurboMode::UpdatePerformanceMetrics(std::chrono::nanoseconds execution_time
|
||||
|
||||
// Update min execution time
|
||||
u64 current_min = performance_stats.min_execution_time_ns.load(std::memory_order_relaxed);
|
||||
while (time_ns < current_min &&
|
||||
while (static_cast<u64>(time_ns) < current_min &&
|
||||
!performance_stats.min_execution_time_ns.compare_exchange_weak(current_min, time_ns,
|
||||
std::memory_order_relaxed)) {
|
||||
// Retry if compare_exchange failed
|
||||
|
||||
Reference in New Issue
Block a user