[ovs-dev] [PATCH] Remove "fault" module.
Ben Pfaff
blp at nicira.com
Tue Dec 22 00:40:16 UTC 2009
This module, which catches segmentation faults and prints a backtrace
before exiting, was useful for a while, but I believe that it has now
outlived its purpose. It is altogether better to have a core dump from
which one can extract much more information than a usually-poor backtrace,
and core dumps are much better integrated into a typical Unix system.
In addition, the "fault" module was of course not all that portable.
---
configure.ac | 1 -
lib/automake.mk | 2 -
lib/fault.c | 73 --------------------------------------------
lib/fault.h | 23 --------------
lib/vlog-modules.def | 1 -
m4/openvswitch.m4 | 5 ---
ovsdb/automake.mk | 2 +-
ovsdb/ovsdb-server.c | 2 -
tests/automake.mk | 2 +-
tests/test-dhcp-client.c | 2 -
utilities/automake.mk | 9 ++---
utilities/ovs-controller.c | 2 -
utilities/ovs-openflowd.c | 2 -
vswitchd/automake.mk | 5 +--
vswitchd/ovs-brcompatd.c | 2 -
vswitchd/ovs-vswitchd.c | 2 -
16 files changed, 7 insertions(+), 128 deletions(-)
delete mode 100644 lib/fault.c
delete mode 100644 lib/fault.h
diff --git a/configure.ac b/configure.ac
index a94ff93..92d5ac0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,7 +58,6 @@ OVS_CHECK_MALLOC_HOOKS
OVS_CHECK_VALGRIND
OVS_CHECK_TTY_LOCK_DIR
OVS_CHECK_SOCKET_LIBS
-OVS_CHECK_FAULT_LIBS
AC_CHECK_FUNCS([strsignal])
diff --git a/lib/automake.mk b/lib/automake.mk
index cace97c..a9c7ed2 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -45,8 +45,6 @@ lib_libopenvswitch_a_SOURCES = \
lib/dynamic-string.h \
lib/fatal-signal.c \
lib/fatal-signal.h \
- lib/fault.c \
- lib/fault.h \
lib/flow.c \
lib/flow.h \
lib/hash.c \
diff --git a/lib/fault.c b/lib/fault.c
deleted file mode 100644
index 14e229e..0000000
--- a/lib/fault.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2008, 2009 Nicira Networks.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <config.h>
-#include "fault.h"
-#include <dlfcn.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <signal.h>
-#include "util.h"
-
-#include "vlog.h"
-#define THIS_MODULE VLM_fault
-
-static void
-fault_handler(int sig_nr)
-{
- VLOG_EMER("Caught signal %d.", sig_nr);
- log_backtrace();
- fflush(stdout);
- fflush(stderr);
-
- signal(sig_nr, SIG_DFL);
- raise(sig_nr);
-}
-
-void
-log_backtrace(void)
-{
- /* During the loop:
-
- frame[0] points to the next frame.
- frame[1] points to the return address. */
- void **frame;
- for (frame = __builtin_frame_address(0);
- frame != NULL && frame[0] != NULL;
- frame = frame[0]) {
- Dl_info addrinfo;
- if (!dladdr(frame[1], &addrinfo) || !addrinfo.dli_sname) {
- fprintf(stderr, " 0x%08"PRIxPTR"\n", (uintptr_t) frame[1]);
- } else {
- fprintf(stderr, " 0x%08"PRIxPTR" (%s+0x%tx)\n",
- (uintptr_t) frame[1], addrinfo.dli_sname,
- (char *) frame[1] - (char *) addrinfo.dli_saddr);
- }
- }
- fflush(stderr);
-}
-
-void
-register_fault_handlers(void)
-{
- signal(SIGABRT, fault_handler);
- signal(SIGBUS, fault_handler);
- signal(SIGFPE, fault_handler);
- signal(SIGILL, fault_handler);
- signal(SIGSEGV, fault_handler);
-}
diff --git a/lib/fault.h b/lib/fault.h
deleted file mode 100644
index 0d12927..0000000
--- a/lib/fault.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2008 Nicira Networks.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FAULT_H
-#define FAULT_H 1
-
-void register_fault_handlers(void);
-void log_backtrace(void);
-
-#endif /* fault.h */
diff --git a/lib/vlog-modules.def b/lib/vlog-modules.def
index 3a4f92a..023190a 100644
--- a/lib/vlog-modules.def
+++ b/lib/vlog-modules.def
@@ -38,7 +38,6 @@ VLOG_MODULE(executer)
VLOG_MODULE(ezio_term)
VLOG_MODULE(fail_open)
VLOG_MODULE(fatal_signal)
-VLOG_MODULE(fault)
VLOG_MODULE(flow)
VLOG_MODULE(in_band)
VLOG_MODULE(jsonrpc)
diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
index ceb1073..f9b7e57 100644
--- a/m4/openvswitch.m4
+++ b/m4/openvswitch.m4
@@ -98,11 +98,6 @@ AC_DEFUN([OVS_CHECK_OPENSSL],
AC_DEFINE([HAVE_OPENSSL], [1], [Define to 1 if OpenSSL is installed.])
fi])
-dnl Checks for libraries needed by lib/fault.c.
-AC_DEFUN([OVS_CHECK_FAULT_LIBS],
- [AC_CHECK_LIB([dl], [dladdr], [FAULT_LIBS=-ldl])
- AC_SUBST([FAULT_LIBS])])
-
dnl Checks for libraries needed by lib/socket-util.c.
AC_DEFUN([OVS_CHECK_SOCKET_LIBS],
[AC_CHECK_LIB([socket], [connect])
diff --git a/ovsdb/automake.mk b/ovsdb/automake.mk
index 2732c53..0f6232e 100644
--- a/ovsdb/automake.mk
+++ b/ovsdb/automake.mk
@@ -49,7 +49,7 @@ EXTRA_DIST += ovsdb/ovsdb-client.1.in
# ovsdb-server
sbin_PROGRAMS += ovsdb/ovsdb-server
ovsdb_ovsdb_server_SOURCES = ovsdb/ovsdb-server.c
-ovsdb_ovsdb_server_LDADD = ovsdb/libovsdb.a lib/libopenvswitch.a $(FAULT_LIBS)
+ovsdb_ovsdb_server_LDADD = ovsdb/libovsdb.a lib/libopenvswitch.a
# ovsdb-server.1
man_MANS += ovsdb/ovsdb-server.1
DISTCLEANFILES += ovsdb/ovsdb-server.1
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index 125001f..8f3d56a 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -24,7 +24,6 @@
#include "command-line.h"
#include "daemon.h"
-#include "fault.h"
#include "file.h"
#include "json.h"
#include "jsonrpc.h"
@@ -67,7 +66,6 @@ main(int argc, char *argv[])
size_t i;
set_program_name(argv[0]);
- register_fault_handlers();
time_init();
vlog_init();
signal(SIGPIPE, SIG_IGN);
diff --git a/tests/automake.mk b/tests/automake.mk
index 60c0393..a393a04 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -135,7 +135,7 @@ tests_test_type_props_SOURCES = tests/test-type-props.c
noinst_PROGRAMS += tests/test-dhcp-client
tests_test_dhcp_client_SOURCES = tests/test-dhcp-client.c
-tests_test_dhcp_client_LDADD = lib/libopenvswitch.a $(FAULT_LIBS)
+tests_test_dhcp_client_LDADD = lib/libopenvswitch.a
noinst_PROGRAMS += tests/test-stp
tests_test_stp_SOURCES = tests/test-stp.c
diff --git a/tests/test-dhcp-client.c b/tests/test-dhcp-client.c
index e4471c7..24e2d41 100644
--- a/tests/test-dhcp-client.c
+++ b/tests/test-dhcp-client.c
@@ -23,7 +23,6 @@
#include "command-line.h"
#include "dhcp.h"
#include "fatal-signal.h"
-#include "fault.h"
#include "poll-loop.h"
#include "util.h"
#include "vlog.h"
@@ -51,7 +50,6 @@ main(int argc, char *argv[])
int error;
set_program_name(argv[0]);
- register_fault_handlers();
vlog_init();
parse_options(argc, argv);
diff --git a/utilities/automake.mk b/utilities/automake.mk
index aec78b5..1ae50bf 100644
--- a/utilities/automake.mk
+++ b/utilities/automake.mk
@@ -55,29 +55,28 @@ utilities_ovs_appctl_SOURCES = utilities/ovs-appctl.c
utilities_ovs_appctl_LDADD = lib/libopenvswitch.a
utilities_ovs_controller_SOURCES = utilities/ovs-controller.c
-utilities_ovs_controller_LDADD = lib/libopenvswitch.a $(FAULT_LIBS) $(SSL_LIBS)
+utilities_ovs_controller_LDADD = lib/libopenvswitch.a $(SSL_LIBS)
utilities_ovs_discover_SOURCES = utilities/ovs-discover.c
utilities_ovs_discover_LDADD = lib/libopenvswitch.a
utilities_ovs_dpctl_SOURCES = utilities/ovs-dpctl.c
-utilities_ovs_dpctl_LDADD = lib/libopenvswitch.a $(FAULT_LIBS)
+utilities_ovs_dpctl_LDADD = lib/libopenvswitch.a
utilities_ovs_kill_SOURCES = utilities/ovs-kill.c
utilities_ovs_kill_LDADD = lib/libopenvswitch.a
utilities_ovs_ofctl_SOURCES = utilities/ovs-ofctl.c
-utilities_ovs_ofctl_LDADD = lib/libopenvswitch.a $(FAULT_LIBS) $(SSL_LIBS)
+utilities_ovs_ofctl_LDADD = lib/libopenvswitch.a $(SSL_LIBS)
utilities_ovs_openflowd_SOURCES = utilities/ovs-openflowd.c
utilities_ovs_openflowd_LDADD = \
ofproto/libofproto.a \
lib/libopenvswitch.a \
- $(FAULT_LIBS) \
$(SSL_LIBS)
utilities_ovs_vsctl_SOURCES = utilities/ovs-vsctl.c vswitchd/vswitch-idl.c
-utilities_ovs_vsctl_LDADD = lib/libopenvswitch.a $(FAULT_LIBS)
+utilities_ovs_vsctl_LDADD = lib/libopenvswitch.a
utilities_ovs_wdt_SOURCES = utilities/ovs-wdt.c
diff --git a/utilities/ovs-controller.c b/utilities/ovs-controller.c
index e2816cf..f0ee87d 100644
--- a/utilities/ovs-controller.c
+++ b/utilities/ovs-controller.c
@@ -26,7 +26,6 @@
#include "command-line.h"
#include "compiler.h"
#include "daemon.h"
-#include "fault.h"
#include "learning-switch.h"
#include "ofpbuf.h"
#include "openflow/openflow.h"
@@ -84,7 +83,6 @@ main(int argc, char *argv[])
int i;
set_program_name(argv[0]);
- register_fault_handlers();
time_init();
vlog_init();
parse_options(argc, argv);
diff --git a/utilities/ovs-openflowd.c b/utilities/ovs-openflowd.c
index ba97faf..d824eba 100644
--- a/utilities/ovs-openflowd.c
+++ b/utilities/ovs-openflowd.c
@@ -29,7 +29,6 @@
#include "daemon.h"
#include "dirs.h"
#include "dpif.h"
-#include "fault.h"
#include "leak-checker.h"
#include "list.h"
#include "netdev.h"
@@ -118,7 +117,6 @@ main(int argc, char *argv[])
struct netflow_options nf_options;
set_program_name(argv[0]);
- register_fault_handlers();
time_init();
vlog_init();
parse_options(argc, argv, &s);
diff --git a/vswitchd/automake.mk b/vswitchd/automake.mk
index 29e4034..694c308 100644
--- a/vswitchd/automake.mk
+++ b/vswitchd/automake.mk
@@ -19,7 +19,6 @@ vswitchd_ovs_vswitchd_SOURCES = \
vswitchd_ovs_vswitchd_LDADD = \
ofproto/libofproto.a \
lib/libopenvswitch.a \
- $(FAULT_LIBS) \
$(SSL_LIBS)
vswitchd_ovs_brcompatd_SOURCES = \
@@ -27,9 +26,7 @@ vswitchd_ovs_brcompatd_SOURCES = \
vswitchd/vswitch-idl.c \
vswitchd/vswitch-idl.h
-vswitchd_ovs_brcompatd_LDADD = \
- lib/libopenvswitch.a \
- $(FAULT_LIBS)
+vswitchd_ovs_brcompatd_LDADD = lib/libopenvswitch.a
EXTRA_DIST += \
vswitchd/ovs-vswitchd.8.in \
diff --git a/vswitchd/ovs-brcompatd.c b/vswitchd/ovs-brcompatd.c
index 62faaaa..594d474 100644
--- a/vswitchd/ovs-brcompatd.c
+++ b/vswitchd/ovs-brcompatd.c
@@ -39,7 +39,6 @@
#include "dirs.h"
#include "dynamic-string.h"
#include "fatal-signal.h"
-#include "fault.h"
#include "leak-checker.h"
#include "netdev.h"
#include "netlink.h"
@@ -1147,7 +1146,6 @@ main(int argc, char *argv[])
int retval;
set_program_name(argv[0]);
- register_fault_handlers();
time_init();
vlog_init();
vlog_set_levels(VLM_ANY_MODULE, VLF_CONSOLE, VLL_WARN);
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index 4cefc40..b699ae4 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -28,7 +28,6 @@
#include "compiler.h"
#include "daemon.h"
#include "dpif.h"
-#include "fault.h"
#include "leak-checker.h"
#include "netdev.h"
#include "ovsdb-idl.h"
@@ -64,7 +63,6 @@ main(int argc, char *argv[])
int retval;
set_program_name(argv[0]);
- register_fault_handlers();
time_init();
vlog_init();
remote = parse_options(argc, argv);
--
1.6.3.3
More information about the dev
mailing list