From 0e380630386dfa13d766ec688a7aed9221d83096 Mon Sep 17 00:00:00 2001 From: Alvin Moore Date: Mon, 7 Aug 2017 11:56:12 -0700 Subject: [PATCH 1/3] Added min version compilation option for OS X --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index de59197f71..cf8fcb228c 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ else ifeq ($(PLATFORM),Darwin) CXX := /usr/bin/clang CFLAGS += -mmacosx-version-min=10.7 -stdlib=libc++ - CXXFLAGS += -std=c++11 -stdlib=libc++ -msse4.2 -Wno-undefined-var-template -Wno-unknown-warning-option + CXXFLAGS += -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++ -msse4.2 -Wno-undefined-var-template -Wno-unknown-warning-option .LIBPATTERNS := lib%.dylib lib%.a From c7402eb10ce677b786e04b2bacb9878ee87d7dc7 Mon Sep 17 00:00:00 2001 From: "A.J. Beamon" Date: Mon, 7 Aug 2017 15:55:08 -0700 Subject: [PATCH 2/3] fix: call initSignalSafeUnwind in fdbcli and backup to avoid hangs in slow task profiling. --- fdbbackup/backup.actor.cpp | 2 ++ fdbcli/fdbcli.actor.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/fdbbackup/backup.actor.cpp b/fdbbackup/backup.actor.cpp index 22c78f5227..cfbedc5e5f 100644 --- a/fdbbackup/backup.actor.cpp +++ b/fdbbackup/backup.actor.cpp @@ -23,6 +23,7 @@ #include "flow/serialize.h" #include "flow/IRandom.h" #include "flow/genericactors.actor.h" +#include "flow/SignalSafeUnwind.h" #include "fdbclient/FDBTypes.h" #include "fdbclient/BackupAgent.h" @@ -1820,6 +1821,7 @@ extern uint8_t *g_extra_memory; int main(int argc, char* argv[]) { platformInit(); + initSignalSafeUnwind(); int status = FDB_EXIT_SUCCESS; diff --git a/fdbcli/fdbcli.actor.cpp b/fdbcli/fdbcli.actor.cpp index 6fe87c0132..56c7bf9a00 100644 --- a/fdbcli/fdbcli.actor.cpp +++ b/fdbcli/fdbcli.actor.cpp @@ -30,6 +30,7 @@ #include "fdbclient/FDBOptions.g.h" #include "flow/DeterministicRandom.h" +#include "flow/SignalSafeUnwind.h" #include "fdbrpc/TLSConnection.h" #include "fdbrpc/Platform.h" @@ -2841,6 +2842,7 @@ ACTOR Future timeExit(double duration) { int main(int argc, char **argv) { platformInit(); + initSignalSafeUnwind(); Error::init(); registerCrashHandler(); From 5a8cd34224cf805d1c11f928b8defe86b40a2979 Mon Sep 17 00:00:00 2001 From: "A.J. Beamon" Date: Tue, 8 Aug 2017 09:03:04 -0700 Subject: [PATCH 3/3] Disable profiling if we aren't using the cached dl_iterate_phdr values. --- flow/SignalSafeUnwind.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/flow/SignalSafeUnwind.cpp b/flow/SignalSafeUnwind.cpp index bb5244583d..a2cade1021 100644 --- a/flow/SignalSafeUnwind.cpp +++ b/flow/SignalSafeUnwind.cpp @@ -76,7 +76,11 @@ extern "C" int dl_iterate_phdr( } else { // This path is NOT async signal safe, and serves until and unless initSignalSafeUnwind() is called initChain(); - return chain_dl_iterate_phdr(callback, data); + + setProfilingEnabled(0); + int result = chain_dl_iterate_phdr(callback, data); + setProfilingEnabled(1); + return result; } }