Skip to content

Commit

Permalink
Fix static initialization order of default memory manager (#8098)
Browse files Browse the repository at this point in the history
Summary:
Velox GHA CI job `Run Benchmarks - Baseline` is now failing by this error:

```
terminate called after throwing an instance of 'facebook::velox::VeloxRuntimeError'
  what():  Exception: VeloxRuntimeError
Error Source: RUNTIME
Error Code: INVALID_STATE
Reason: The memory manager is not set
Retriable: False
Expression: instanceRef != nullptr
Function: getInstance
File: ../../velox/common/memory/Memory.cpp
Line: 129
Stack trace:
# 0  std::shared_ptr<facebook::velox::VeloxException::State const> facebook::velox::VeloxException::State::make<facebook::velox::VeloxException::make(char const*, unsigned long, char const*, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, bool, facebook::velox::VeloxException::Type, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1&)https://github.com/facebookincubator/velox/issues/1}>(facebook::velox::VeloxException::Type, facebook::velox::VeloxException::make(char const*, unsigned long, char const*, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, bool, facebook::velox::VeloxException::Type, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1&)#1})
# 1  facebook::velox::VeloxException::VeloxException(char const*, unsigned long, char const*, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, bool, facebook::velox::VeloxException::Type, std::basic_string_view<char, std::char_traits<char> >)
# 2  facebook::velox::VeloxRuntimeError::VeloxRuntimeError(char const*, unsigned long, char const*, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, bool, std::basic_string_view<char, std::char_traits<char> >)
# 3  void facebook::velox::detail::veloxCheckFail<facebook::velox::VeloxRuntimeError, char const*>(facebook::velox::detail::VeloxCheckFailArgs const&, char const*)
# 4  facebook::velox::memory::MemoryManager::getInstance()
# 5  __static_initialization_and_destruction_0(int, int)
# 6  _GLOBAL__sub_I__ZN5fLI6417FLAGS_fuzzer_seedE
# 7  __libc_csu_init
# 8  __libc_start_main
# 9  _start
```

The error should be fixed by this patch.

Follow up to #8079
Related to #7168

Pull Request resolved: #8098

Reviewed By: tanjialiang

Differential Revision: D52301375

Pulled By: xiaoxmeng

fbshipit-source-id: 01bbd4bed6b6b4aa5d018b9d13c126d4bee44cd4
  • Loading branch information
zhztheplayer authored and facebook-github-bot committed Dec 19, 2023
1 parent ef47305 commit b57f14b
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions velox/benchmarks/basic/VectorFuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ namespace {

using namespace facebook::velox;

std::shared_ptr<memory::MemoryPool> pool{
memory::MemoryManager::getInstance()->addLeafPool()};
memory::MemoryPool* pool() {
static auto leaf = memory::MemoryManager::getInstance()->addLeafPool();
return leaf.get();
}

VectorFuzzer::Options getOpts(size_t n, double nullRatio = 0) {
VectorFuzzer::Options opts;
Expand All @@ -39,25 +41,25 @@ VectorFuzzer::Options getOpts(size_t n, double nullRatio = 0) {
}

BENCHMARK_MULTI(flatInteger, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzFlat(BIGINT()));
return n;
}

BENCHMARK_RELATIVE_MULTI(flatIntegerHalfNull, n) {
VectorFuzzer fuzzer(getOpts(n, 0.5), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n, 0.5), pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzFlat(BIGINT()));
return n;
}

BENCHMARK_RELATIVE_MULTI(flatDouble, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzFlat(DOUBLE()));
return n;
}

BENCHMARK_RELATIVE_MULTI(flatBool, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzFlat(BOOLEAN()));
return n;
}
Expand All @@ -66,7 +68,7 @@ BENCHMARK_RELATIVE_MULTI(flatVarcharAscii, n) {
auto opts = getOpts(n);
opts.charEncodings = {UTF8CharList::ASCII};

VectorFuzzer fuzzer(opts, pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(opts, pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzFlat(VARCHAR()));
return n;
}
Expand All @@ -75,37 +77,37 @@ BENCHMARK_RELATIVE_MULTI(flatVarcharUtf8, n) {
auto opts = getOpts(n);
opts.charEncodings = {UTF8CharList::EXTENDED_UNICODE};

VectorFuzzer fuzzer(opts, pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(opts, pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzFlat(VARCHAR()));
return n;
}

BENCHMARK_DRAW_LINE();

BENCHMARK_RELATIVE_MULTI(constantInteger, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzConstant(BIGINT()));
return n;
}

BENCHMARK_RELATIVE_MULTI(dictionaryInteger, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
folly::doNotOptimizeAway(fuzzer.fuzzDictionary(fuzzer.fuzzFlat(BIGINT())));
return n;
}

BENCHMARK_DRAW_LINE();

BENCHMARK_RELATIVE_MULTI(flatArray, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
const size_t elementsSize = n * fuzzer.getOptions().containerLength;
folly::doNotOptimizeAway(
fuzzer.fuzzArray(fuzzer.fuzzFlat(BIGINT(), elementsSize), n));
return n;
}

BENCHMARK_RELATIVE_MULTI(flatMap, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
const size_t elementsSize = n * fuzzer.getOptions().containerLength;
folly::doNotOptimizeAway(fuzzer.fuzzMap(
fuzzer.fuzzFlat(BIGINT(), elementsSize),
Expand All @@ -115,7 +117,7 @@ BENCHMARK_RELATIVE_MULTI(flatMap, n) {
}

BENCHMARK_RELATIVE_MULTI(flatMapArrayNested, n) {
VectorFuzzer fuzzer(getOpts(n), pool.get(), FLAGS_fuzzer_seed);
VectorFuzzer fuzzer(getOpts(n), pool(), FLAGS_fuzzer_seed);
const size_t elementsSize = n * fuzzer.getOptions().containerLength;

folly::doNotOptimizeAway(fuzzer.fuzzMap(
Expand Down

0 comments on commit b57f14b

Please sign in to comment.