Compare commits

..

5 Commits

Author SHA1 Message Date
Coxxs
01220db18c Merge branch 'exception-minidump' into 'master'
Create minidump at ProcessUnhandledException

See merge request [ryubing/ryujinx!217](https://git.ryujinx.app/ryubing/ryujinx/-/merge_requests/217)
2026-04-02 05:12:31 -05:00
Ryujinx Administrator
ecd1c1240c bump to GLI 2.0.31 (uses legacy.git.ryujinx.app) 2026-04-02 01:23:03 -05:00
Coxxs
55c2ae2b3d Check if Switch is running before creating minidump 2025-12-22 12:28:21 +08:00
Coxxs
b51999a1ba Print a message first in case it crashes again during minidump creation 2025-12-22 12:28:21 +08:00
Coxxs
bfc0d62732 Create minidump at ProcessUnhandledException 2025-12-22 12:28:21 +08:00
4 changed files with 31 additions and 2 deletions

View File

@@ -50,7 +50,7 @@ jobs:
- name: Install gli
run: |
mkdir -p $HOME/.bin
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64' 2.0.30
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64' 2.0.31
chmod +x gli
mv gli $HOME/.bin/
echo "$HOME/.bin" >> $GITHUB_PATH

View File

@@ -44,7 +44,7 @@ jobs:
- name: Install gli
run: |
mkdir -p $HOME/.bin
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64' 2.0.30
gh release download -R GreemDev/GLI -O gli -p 'gli-linux-x64' 2.0.31
chmod +x gli
mv gli $HOME/.bin/
echo "$HOME/.bin" >> $GITHUB_PATH

View File

@@ -570,6 +570,11 @@ namespace Ryujinx.HLE.HOS
}
}
public string DebugGetApplicationProcessMinidump()
{
return DebugGetApplicationProcess()?.Debugger?.GetMinidump();
}
internal KProcess DebugGetApplicationProcess()
{
lock (KernelContext.Processes)

View File

@@ -386,6 +386,30 @@ namespace Ryujinx.Ava
exceptions.Add(initialException);
}
if (isTerminating && HLE.Switch.Shared is { } device)
{
try
{
// Print a short message first just in case it crashes again during minidump creation (should not happen)
Logger.Error?.Print(LogClass.Application, $"Unhandled exception caught: {initialException.GetType().Name}. Creating guest program minidump...");
var minidump = device.System?.DebugGetApplicationProcessMinidump();
if (minidump == null)
{
Logger.Warning?.Print(LogClass.Application, "Failed to create minidump");
}
else
{
Logger.Info?.Print(LogClass.Application, minidump);
}
}
catch (Exception e)
{
Logger.Error?.Print(LogClass.Application, $"Failed to create minidump: {e.Message}");
}
}
foreach (Exception e in exceptions)
{
string message = $"Unhandled exception caught: {e}";