projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
cmake: tsan
[awesomized/libmemcached]
/
test
/
setup.cpp
diff --git
a/test/setup.cpp
b/test/setup.cpp
index 493b591f0825cb5ea271e3008ea191a0dffd531d..22c7c2ada9cfc4060aa1c610f0dca73bb3df034d 100644
(file)
--- a/
test/setup.cpp
+++ b/
test/setup.cpp
@@
-1,11
+1,14
@@
#include "mem_config.h"
#include "mem_config.h"
+#include "test/conf.h"
#include "test/lib/env.hpp"
#include "test/lib/env.hpp"
+#include "test/lib/random.hpp"
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <csignal>
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <csignal>
#include <iostream>
#include <string>
+#include <unistd.h>
static void sigchld(int, siginfo_t *si, void *) {
switch (si->si_code) {
static void sigchld(int, siginfo_t *si, void *) {
switch (si->si_code) {
@@
-30,7
+33,6
@@
static void sigchld(int, siginfo_t *si, void *) {
static inline void setup_signals() {
struct sigaction sa;
static inline void setup_signals() {
struct sigaction sa;
-
memset(&sa, 0, sizeof(sa));
sa.sa_flags = SA_NOCLDSTOP | SA_RESTART | SA_SIGINFO | SA_NODEFER;
memset(&sa, 0, sizeof(sa));
sa.sa_flags = SA_NOCLDSTOP | SA_RESTART | SA_SIGINFO | SA_NODEFER;
@@
-54,6
+56,9
@@
static inline void setup_signals() {
"verify_asan_link_order=1," \
"abort_on_error=0," \
""
"verify_asan_link_order=1," \
"abort_on_error=0," \
""
+# define LSAN_OPTIONS \
+ "suppressions=" SOURCES_ROOT "/test/LeakSanitizer.suppressions," \
+ ""
static inline void setup_asan(char **argv) {
const auto set = getenv("ASAN_OPTIONS");
static inline void setup_asan(char **argv) {
const auto set = getenv("ASAN_OPTIONS");
@@
-63,8
+68,18
@@
static inline void setup_asan(char **argv) {
perror("exec()");
}
}
perror("exec()");
}
}
+static inline void setup_lsan(char **argv) {
+ const auto set = getenv("LSAN_OPTIONS");
+
+ if (!set || !*set) {
+ SET_ENV_EX(lsan, "LSAN_OPTIONS", LSAN_OPTIONS, 0);
+ execvp(argv[0], argv);
+ perror("exec()");
+ }
+}
#else
# define setup_asan(a) (void) a
#else
# define setup_asan(a) (void) a
+# define setup_lsan(a) (void) a
#endif
#if LIBMEMCACHED_WITH_SASL_SUPPORT
#endif
#if LIBMEMCACHED_WITH_SASL_SUPPORT
@@
-76,9
+91,15
@@
static inline void setup_sasl() {
# define setup_sasl()
#endif
# define setup_sasl()
#endif
+static inline void setup_random() {
+ random_setup();
+}
+
int setup(int &, char ***argv) {
setup_signals();
int setup(int &, char ***argv) {
setup_signals();
+ setup_random();
setup_asan(*argv);
setup_asan(*argv);
+ setup_lsan(*argv);
setup_sasl();
return 0;
setup_sasl();
return 0;