Improve support for valgrind error on reachable (#8503)
Summary: MyRocks apparently uses valgrind to check for unreachable unfreed data, which is stricter than our valgrind checks. Internal ref: D29257815 This patch adds valgrind support to STATIC_AVOID_DESTRUCTION so that it's not reported with those stricter checks. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8503 Test Plan: make valgrind_test Also, with modified VALGRIND_OPTS (see Makefile), more kinds of failures seen before than after this commit. Reviewed By: ajkr, yizhang82 Differential Revision: D29597784 Pulled By: pdillinger fbshipit-source-id: 360de157a176aec4d1be99ca20d160ecd47c0873
This commit is contained in:
parent
da90e23998
commit
a53d6d25e0
1
Makefile
1
Makefile
@ -494,6 +494,7 @@ VALGRIND_ERROR = 2
|
||||
VALGRIND_VER := $(join $(VALGRIND_VER),valgrind)
|
||||
|
||||
VALGRIND_OPTS = --error-exitcode=$(VALGRIND_ERROR) --leak-check=full
|
||||
# Not yet supported: --show-leak-kinds=definite,possible,reachable --errors-for-leak-kinds=definite,possible,reachable
|
||||
|
||||
TEST_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES)) $(GTEST)
|
||||
BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(BENCH_LIB_SOURCES))
|
||||
|
2
env/env_posix.cc
vendored
2
env/env_posix.cc
vendored
@ -7,6 +7,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file. See the AUTHORS file for names of contributors
|
||||
|
||||
#include "port/lang.h"
|
||||
#if !defined(OS_WIN)
|
||||
|
||||
#include <dirent.h>
|
||||
@ -511,6 +512,7 @@ Env* Env::Default() {
|
||||
ThreadLocalPtr::InitSingletons();
|
||||
CompressionContextCache::InitSingleton();
|
||||
INIT_SYNC_POINT_SINGLETONS();
|
||||
// ~PosixEnv must be called on exit
|
||||
static PosixEnv default_env;
|
||||
return &default_env;
|
||||
}
|
||||
|
@ -27,6 +27,10 @@
|
||||
#endif // __SANITIZE_ADDRESS__
|
||||
#endif // __clang__
|
||||
|
||||
#ifdef ROCKSDB_VALGRIND_RUN
|
||||
#define MUST_FREE_HEAP_ALLOCATIONS 1
|
||||
#endif // ROCKSDB_VALGRIND_RUN
|
||||
|
||||
// Coding guidelines say to avoid static objects with non-trivial destructors,
|
||||
// because it's easy to cause trouble (UB) in static destruction. This
|
||||
// macro makes it easier to define static objects that are normally never
|
||||
|
Loading…
Reference in New Issue
Block a user