diff --git a/ddprof-lib/src/main/cpp/os_dd.h b/ddprof-lib/src/main/cpp/os_dd.h index 3a897d0ce..c9f6b0345 100644 --- a/ddprof-lib/src/main/cpp/os_dd.h +++ b/ddprof-lib/src/main/cpp/os_dd.h @@ -7,10 +7,7 @@ namespace ddprof { class OS : public ::OS { public: - inline static SigAction replaceSigsegvHandler(SigAction action) { - return ::OS::replaceCrashHandler(action); - } - + static SigAction replaceSigsegvHandler(SigAction action); static SigAction replaceSigbusHandler(SigAction action); inline static int getMaxThreadId(int floor) { diff --git a/ddprof-lib/src/main/cpp/os_linux_dd.cpp b/ddprof-lib/src/main/cpp/os_linux_dd.cpp index 56bb2b569..e28f7f0db 100644 --- a/ddprof-lib/src/main/cpp/os_linux_dd.cpp +++ b/ddprof-lib/src/main/cpp/os_linux_dd.cpp @@ -29,6 +29,10 @@ void ddprof::OS::mallocArenaMax(int arena_max) { #endif } +SigAction ddprof::OS::replaceSigsegvHandler(SigAction action) { + return ::OS::replaceCrashHandler(action); +} + SigAction ddprof::OS::replaceSigbusHandler(SigAction action) { struct sigaction sa; sigaction(SIGBUS, NULL, &sa); diff --git a/ddprof-lib/src/main/cpp/os_macos_dd.cpp b/ddprof-lib/src/main/cpp/os_macos_dd.cpp index fa8ad2c9e..7a9c090b7 100644 --- a/ddprof-lib/src/main/cpp/os_macos_dd.cpp +++ b/ddprof-lib/src/main/cpp/os_macos_dd.cpp @@ -17,11 +17,15 @@ void ddprof::OS::mallocArenaMax(int arena_max) { } SigAction ddprof::OS::replaceSigbusHandler(SigAction action) { + return ::OS::replaceCrashHandler(action); +} + +SigAction ddprof::OS::replaceSigsegvHandler(SigAction action) { struct sigaction sa; - sigaction(SIGBUS, NULL, &sa); + sigaction(SIGSEGV, NULL, &sa); SigAction old_action = sa.sa_sigaction; sa.sa_sigaction = action; - sigaction(SIGBUS, &sa, NULL); + sigaction(SIGSEGV, &sa, NULL); return old_action; }