Skip to content

Commit 46cb618

Browse files
Add in-process native crash handler with symbolicated backtrace to user-accessible file
Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/32bf9963-5972-40a3-829b-d3f16f69ad4f Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
1 parent a55d255 commit 46cb618

5 files changed

Lines changed: 500 additions & 1 deletion

File tree

osu.Android/Native/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,15 @@ set(OBOE_LIB oboe)
7777
find_library(vulkan-lib vulkan REQUIRED)
7878
find_library(log-lib log REQUIRED)
7979
find_library(android-lib android REQUIRED)
80+
# `dl` is needed for dladdr() in crash_handler.cpp (symbol resolution from PCs).
81+
# It is normally auto-linked on Android, but make the dependency explicit so we
82+
# don't accidentally lose dladdr if the toolchain default ever changes.
83+
find_library(dl-lib dl REQUIRED)
8084

8185
add_library(osu_native SHARED
8286
oboe_bridge.cpp
8387
vulkan_bridge.cpp
88+
crash_handler.cpp
8489
)
8590

8691

@@ -89,4 +94,5 @@ target_link_libraries(osu_native
8994
${vulkan-lib}
9095
${log-lib}
9196
${android-lib}
97+
${dl-lib}
9298
)

osu.Android/Native/OboeAudioBridge.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,5 +215,6 @@ public void Dispose()
215215
[DllImport(lib_name)] internal static extern void nADPFReportActualDuration(IntPtr sessionPtr, long actualDurationNanos);
216216
[DllImport(lib_name)] internal static extern void nADPFUpdateTargetDuration(IntPtr sessionPtr, long targetDurationNanos);
217217
[DllImport(lib_name)] internal static extern void nADPFCloseSession(IntPtr sessionPtr);
218+
[DllImport(lib_name)] internal static extern void nInstallCrashHandler([MarshalAs(UnmanagedType.LPUTF8Str)] string? logPath);
218219
}
219220
}

0 commit comments

Comments
 (0)