[C++] Add support for glog on Windows

Windows doesn't have sigaction() but has signal().

glog also uses signal():
https://github.com/google/glog/blob/master/src/signalhandler.cc#L390
This commit is contained in:
Kouhei Sutou committed 2019-05-18 21:04:07 +09:00
1 parent 3ab2f52b4f
commit 216d2da8ce
3 files changed
+7 -1

No files matched your search

-1
View File
@@ -47,7 +47,6 @@ cmake ^
-DARROW_VERBOSE_THIRDPARTY_BUILD=OFF ^
-DARROW_PACKAGE_PREFIX=%MINGW_PREFIX% ^
-DARROW_JEMALLOC=OFF ^
-DARROW_USE_GLOG=OFF ^
-DARROW_PARQUET=ON ^
-DARROW_PYTHON=ON ^
-DPythonInterp_FIND_VERSION=ON ^
+1
View File
@@ -32,6 +32,7 @@ pacman --sync --refresh --noconfirm ^
"%MINGW_PACKAGE_PREFIX%-double-conversion" ^
"%MINGW_PACKAGE_PREFIX%-flatbuffers" ^
"%MINGW_PACKAGE_PREFIX%-gflags" ^
"%MINGW_PACKAGE_PREFIX%-glog" ^
"%MINGW_PACKAGE_PREFIX%-gobject-introspection" ^
"%MINGW_PACKAGE_PREFIX%-gtest" ^
"%MINGW_PACKAGE_PREFIX%-gtk-doc" ^
+6
View File
@@ -161,6 +161,11 @@ void ArrowLog::UninstallSignalAction() {
// This signal list comes from glog's signalhandler.cc.
// https://github.com/google/glog/blob/master/src/signalhandler.cc#L58-L70
std::vector<int> installed_signals({SIGSEGV, SIGILL, SIGFPE, SIGABRT, SIGTERM});
#ifdef WIN32
for (int signal_num : installed_signals) {
ARROW_CHECK(signal(signal_num, SIG_DFL) != SIG_ERR);
}
#else
struct sigaction sig_action;
memset(&sig_action, 0, sizeof(sig_action));
sigemptyset(&sig_action.sa_mask);
@@ -169,6 +174,7 @@ void ArrowLog::UninstallSignalAction() {
ARROW_CHECK(sigaction(signal_num, &sig_action, NULL) == 0);
}
#endif
#endif
}
void ArrowLog::ShutDownArrowLog() {