Skip to content

Commit 87bad99

Browse files
authored
Fix MacOSX signal handler (#277)
1 parent 88cd629 commit 87bad99

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

ddprof-lib/src/main/cpp/os_dd.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
namespace ddprof {
88
class OS : public ::OS {
99
public:
10-
inline static SigAction replaceSigsegvHandler(SigAction action) {
11-
return ::OS::replaceCrashHandler(action);
12-
}
13-
10+
static SigAction replaceSigsegvHandler(SigAction action);
1411
static SigAction replaceSigbusHandler(SigAction action);
1512

1613
inline static int getMaxThreadId(int floor) {

ddprof-lib/src/main/cpp/os_linux_dd.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ void ddprof::OS::mallocArenaMax(int arena_max) {
2929
#endif
3030
}
3131

32+
SigAction ddprof::OS::replaceSigsegvHandler(SigAction action) {
33+
return ::OS::replaceCrashHandler(action);
34+
}
35+
3236
SigAction ddprof::OS::replaceSigbusHandler(SigAction action) {
3337
struct sigaction sa;
3438
sigaction(SIGBUS, NULL, &sa);

ddprof-lib/src/main/cpp/os_macos_dd.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@ void ddprof::OS::mallocArenaMax(int arena_max) {
1717
}
1818

1919
SigAction ddprof::OS::replaceSigbusHandler(SigAction action) {
20+
return ::OS::replaceCrashHandler(action);
21+
}
22+
23+
SigAction ddprof::OS::replaceSigsegvHandler(SigAction action) {
2024
struct sigaction sa;
21-
sigaction(SIGBUS, NULL, &sa);
25+
sigaction(SIGSEGV, NULL, &sa);
2226
SigAction old_action = sa.sa_sigaction;
2327
sa.sa_sigaction = action;
24-
sigaction(SIGBUS, &sa, NULL);
28+
sigaction(SIGSEGV, &sa, NULL);
2529
return old_action;
2630
}
2731

0 commit comments

Comments
 (0)