{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/osquery/issues/3555","repository_url":"https://api.github.com/repos/facebook/osquery","labels_url":"https://api.github.com/repos/facebook/osquery/issues/3555/labels{/name}","comments_url":"https://api.github.com/repos/facebook/osquery/issues/3555/comments","events_url":"https://api.github.com/repos/facebook/osquery/issues/3555/events","html_url":"https://github.com/facebook/osquery/pull/3555","id":249856657,"number":3555,"title":"sanitizers: Skip several tests that fail custom alloc checks","user":{"login":"theopolis","id":981645,"avatar_url":"https://avatars3.githubusercontent.com/u/981645?v=4","gravatar_id":"","url":"https://api.github.com/users/theopolis","html_url":"https://github.com/theopolis","followers_url":"https://api.github.com/users/theopolis/followers","following_url":"https://api.github.com/users/theopolis/following{/other_user}","gists_url":"https://api.github.com/users/theopolis/gists{/gist_id}","starred_url":"https://api.github.com/users/theopolis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theopolis/subscriptions","organizations_url":"https://api.github.com/users/theopolis/orgs","repos_url":"https://api.github.com/users/theopolis/repos","events_url":"https://api.github.com/users/theopolis/events{/privacy}","received_events_url":"https://api.github.com/users/theopolis/received_events","type":"User","site_admin":false},"labels":[{"id":196858822,"url":"https://api.github.com/repos/facebook/osquery/labels/CLA%20Signed","name":"CLA Signed","color":"009900","default":false},{"id":425221720,"url":"https://api.github.com/repos/facebook/osquery/labels/dynamic%20analysis","name":"dynamic analysis","color":"d93f0b","default":false},{"id":118805409,"url":"https://api.github.com/repos/facebook/osquery/labels/Linux","name":"Linux","color":"d4c5f9","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2017-08-13T06:56:16Z","updated_at":"2017-08-13T08:42:30Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/facebook/osquery/pulls/3555","html_url":"https://github.com/facebook/osquery/pull/3555","diff_url":"https://github.com/facebook/osquery/pull/3555.diff","patch_url":"https://github.com/facebook/osquery/pull/3555.patch"},"body":"This PR makes me cry a little but IMO it is a good compensation for valuable sanitizer warning that are eaten by difficult-to-fix custom allocator problems. My suspicion is that static linking 20+ MB of content causes systemic issues. I've at least not been able to track down why random alignment problems occur with sanitizer tests.\r\n\r\nExamples of the CHECK failures:\r\n```\r\nASAN_OPTIONS=\"suppressions=tools/analysis/asan.supp\" PATH=/usr/local/osquery/bin:$PATH ./build/linux/osquery/osqueryi -A magic                                                                                                             teddy@maverics\r\nW0812 23:55:39.674396 15851 virtual_table.cpp:520] Table magic was queried without a required column in the WHERE clause\r\nW0812 23:55:39.674463 15851 virtual_table.cpp:531] Please see the table documentation: https://osquery.io/docs/#magic\r\nFATAL: ThreadSanitizer CHECK failed: /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:255 \"((IsAligned(p, page_size_))) != (0)\" (0x0, 0x0)\r\n    #0 __tsan::TsanCheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc:48:25 (osqueryi+0xb3d3bd)\r\n    #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_termination.cc:79:5 (osqueryi+0xb53eff)\r\n    #2 GetHeader /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:255:5 (osqueryi+0xb3078f)\r\n    #3 GetHeader /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:259 (osqueryi+0xb3078f)\r\n    #4 __sanitizer::LargeMmapAllocator<__tsan::MapUnmapCallback>::Deallocate(__sanitizer::AllocatorStats*, void*) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:94 (osqueryi+0xb3078f)\r\n    #5 Deallocate /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_combined.h:123:18 (osqueryi+0xb2d47a)\r\n    #6 __tsan::user_free(__tsan::ThreadState*, unsigned long, void*, bool) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_mman.cc:178 (osqueryi+0xb2d47a)\r\n    #7 free /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:630:3 (osqueryi+0xae6004)\r\n    #8 magic_getpath <null> (osqueryi+0x21e3a04)\r\n    #9 file_apprentice <null> (osqueryi+0x21e4400)\r\n    #10 osquery::tables::genMagicData[abi:cxx11](osquery::QueryContext&) /home/teddy/git/osquery/osquery/tables/system/posix/magic.cpp:31:7 (osqueryi+0x1521a2e)\r\n    #11 osquery::magicTablePlugin::generate[abi:cxx11](osquery::QueryContext&) /home/teddy/git/osquery/build/xenial/generated/additional_amalgamation.cpp:794:20 (osqueryi+0x15f41f4)\r\n    #12 osquery::tables::sqlite::xFilter(sqlite3_vtab_cursor*, int, char const*, int, sqlite3_value**) /home/teddy/git/osquery/osquery/sql/virtual_table.cpp:556:25 (osqueryi+0x11d47ff)\r\n    #13 sqlite3VdbeExec /home/teddy/git/osquery/third-party/sqlite3/sqlite3.c:85030:8 (osqueryi+0xc2b111)\r\n    #14 sqlite3Step /home/teddy/git/osquery/third-party/sqlite3/sqlite3.c:76699:10 (osqueryi+0xbacd5d)\r\n    #15 sqlite3_step /home/teddy/git/osquery/third-party/sqlite3/sqlite3.c:76760:16 (osqueryi+0xbac440)\r\n    #16 shell_exec(char const*, int (*)(void*, int, char**, char**, int*), callback_data*, char**) /home/teddy/git/osquery/osquery/devtools/shell.cpp:826:12 (osqueryi+0xb6775e)\r\n    #17 do_meta_command(char*, callback_data*) /home/teddy/git/osquery/osquery/devtools/shell.cpp:1259:10 (osqueryi+0xb6c652)\r\n    #18 osquery::launchIntoShell(int, char**) /home/teddy/git/osquery/osquery/devtools/shell.cpp:1692:10 (osqueryi+0xb6ad02)\r\n    #19 main /home/teddy/git/osquery/osquery/main/shell.cpp:117:15 (osqueryi+0xb8f55e)\r\n    #20 __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)\r\n    #21 _start <null> (osqueryi+0xae1028)\r\n```\r\n\r\n```\r\n[ RUN      ] FileEventsTableTests.test_configure_subscriptions\r\nWARNING: Logging before InitGoogleLogging() is written to STDERR\r\nI0812 23:31:31.967200  8637 events.cpp:824] Event publisher failed setup: audit: Publisher disabled via configuration\r\nI0812 23:31:31.967763  8637 events.cpp:824] Event publisher failed setup: kernel: Cannot access /dev/osquery\r\nI0812 23:31:31.967840  8637 events.cpp:824] Event publisher failed setup: syslog: Publisher disabled via configuration\r\nFATAL: ThreadSanitizer CHECK failed: /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:255 \"((IsAligned(p, page_size_))) != (0)\" (0x0, 0x0)\r\n    #0 __tsan::TsanCheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc:48:25 (osquery_tables_tests+0xba93bd)\r\n    #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_termination.cc:79:5 (osquery_tables_tests+0xbbfeff)\r\n    #2 GetHeader /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:255:5 (osquery_tables_tests+0xb9c78f)\r\n    #3 GetHeader /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:259 (osquery_tables_tests+0xb9c78f)\r\n    #4 __sanitizer::LargeMmapAllocator<__tsan::MapUnmapCallback>::Deallocate(__sanitizer::AllocatorStats*, void*) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:94 (osquery_tables_tests+0xb9c78f)\r\n    #5 Deallocate /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_combined.h:123:18 (osquery_tables_tests+0xb9947a)\r\n    #6 __tsan::user_free(__tsan::ThreadState*, unsigned long, void*, bool) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_mman.cc:178 (osquery_tables_tests+0xb9947a)\r\n    #7 free /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:630:3 (osquery_tables_tests+0xb52004)\r\n    #8 udev_new <null> (osquery_tables_tests+0x19c6be0)\r\n    #9 osquery::UdevEventPublisher::setUp() /home/teddy/git/osquery/osquery/events/linux/udev.cpp:31:13 (osquery_tables_tests+0x122afd4)\r\n    #10 osquery::EventFactory::registerEventPublisher(std::shared_ptr<osquery::Plugin> const&) /home/teddy/git/osquery/osquery/events/events.cpp:820:36 (osquery_tables_tests+0xffe18a)\r\n    #11 osquery::attachEvents() /home/teddy/git/osquery/osquery/events/events.cpp:1063:5 (osquery_tables_tests+0x1002d40)\r\n    #12 osquery::FileEventsTableTests_test_configure_subscriptions_Test::TestBody() /home/teddy/git/osquery/osquery/tables/events/tests/file_events_tests.cpp:89:3 (osquery_tables_tests+0xbd4c2b)\r\n    #13 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_tables_tests+0x1952a03)\r\n    #14 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_tables_tests+0x19026a1)\r\n    #15 testing::Test::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2474:5 (osquery_tables_tests+0x19024fb)\r\n    #16 testing::TestInfo::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2656:11 (osquery_tables_tests+0x1904732)\r\n    #17 testing::TestCase::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2774:28 (osquery_tables_tests+0x1906748)\r\n    #18 testing::internal::UnitTestImpl::RunAllTests() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4649:43 (osquery_tables_tests+0x191758b)\r\n    #19 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_tables_tests+0x195bea3)\r\n    #20 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_tables_tests+0x1916ce7)\r\n    #21 testing::UnitTest::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4257:10 (osquery_tables_tests+0x1916971)\r\n    #22 RUN_ALL_TESTS() /home/teddy/git/osquery/third-party/googletest/googletest/include/gtest/gtest.h:2233:46 (osquery_tables_tests+0xbd1e04)\r\n    #23 main /home/teddy/git/osquery/osquery/main/tests.cpp:135:17 (osquery_tables_tests+0xbd1c08)\r\n    #24 __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)\r\n    #25 _start <null> (osquery_tables_tests+0xb4d028)\r\n\r\n```\r\n\r\n```\r\n[ RUN      ] YARATest.test_match_true\r\nFATAL: ThreadSanitizer CHECK failed: /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:255 \"((IsAligned(p, page_size_))) != (0)\" (0x0, 0x0)\r\n    #0 __tsan::TsanCheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc:48:25 (osquery_tables_tests+0xba93bd)\r\n    #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_termination.cc:79:5 (osquery_tables_tests+0xbbfeff)\r\n    #2 GetHeader /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:255:5 (osquery_tables_tests+0xb9c78f)\r\n    #3 GetHeader /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:259 (osquery_tables_tests+0xb9c78f)\r\n    #4 __sanitizer::LargeMmapAllocator<__tsan::MapUnmapCallback>::Deallocate(__sanitizer::AllocatorStats*, void*) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_secondary.h:94 (osquery_tables_tests+0xb9c78f)\r\n    #5 Deallocate /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_allocator_combined.h:123:18 (osquery_tables_tests+0xb9947a)\r\n    #6 __tsan::user_free(__tsan::ThreadState*, unsigned long, void*, bool) /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_mman.cc:178 (osquery_tables_tests+0xb9947a)\r\n    #7 free /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:630:3 (osquery_tables_tests+0xb52004)\r\n    #8 yara_yyparse <null> (osquery_tables_tests+0x2066dcf)\r\n    #9 yr_lex_parse_rules_file <null> (osquery_tables_tests+0x2066851)\r\n    #10 osquery::compileSingleFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, _YR_RULES**) /home/teddy/git/osquery/osquery/tables/yara/yara_utils.cpp:75:9 (osquery_tables_tests+0x1678b8e)\r\n    #11 osquery::YARATest::scanFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/teddy/git/osquery/osquery/tables/yara/tests/yara_tests.cpp:44:21 (osquery_tables_tests+0xc8a5e4)\r\n    #12 osquery::YARATest_test_match_true_Test::TestBody() /home/teddy/git/osquery/osquery/tables/yara/tests/yara_tests.cpp:62:11 (osquery_tables_tests+0xc8a04f)\r\n    #13 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_tables_tests+0x1952a13)\r\n    #14 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_tables_tests+0x19026b1)\r\n    #15 testing::Test::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2474:5 (osquery_tables_tests+0x190250b)\r\n    #16 testing::TestInfo::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2656:11 (osquery_tables_tests+0x1904742)\r\n    #17 testing::TestCase::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2774:28 (osquery_tables_tests+0x1906758)\r\n    #18 testing::internal::UnitTestImpl::RunAllTests() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4649:43 (osquery_tables_tests+0x191759b)\r\n    #19 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_tables_tests+0x195beb3)\r\n    #20 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_tables_tests+0x1916cf7)\r\n    #21 testing::UnitTest::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4257:10 (osquery_tables_tests+0x1916981)\r\n    #22 RUN_ALL_TESTS() /home/teddy/git/osquery/third-party/googletest/googletest/include/gtest/gtest.h:2233:46 (osquery_tables_tests+0xbd1e04)\r\n    #23 main /home/teddy/git/osquery/osquery/main/tests.cpp:135:17 (osquery_tables_tests+0xbd1c08)\r\n    #24 __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)\r\n    #25 _start <null> (osquery_tables_tests+0xb4d028)\r\n```\r\n\r\nAn example of a swallowed-up warning:\r\n```\r\n[----------] 1 test from KinesisTests\r\n[ RUN      ] KinesisTests.test_send\r\n-- [DEBUG] Shutting down HTTP server via timeout (10) seconds.\r\n-- [DEBUG] Shutting down HTTP server via timeout (10) seconds.\r\nE0812 23:31:17.233366  8480 aws_util.cpp:189] Exception making HTTP request to URL (http://169.254.169.254/latest/meta-data/iam/security-credentials): No route to host\r\n-- [DEBUG] Shutting down HTTP server via timeout (10) seconds.\r\n==================\r\nWARNING: ThreadSanitizer: data race (pid=8480)\r\n  Write of size 8 at 0x7b2800006020 by thread T4:\r\n    #0 free /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:629:3 (osquery_additional_tests+0xbf1ff1)\r\n    #1 std::__exception_ptr::exception_ptr::_M_release() /tmp/gcc-20170523-21480-1ln58b0/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/../../../../libstdc++-v3/libsupc++/eh_ptr.cc:123 (osquery_additional_tests+0x2582a63)\r\n    #2 std::__future_base::_Result<unsigned short>::~_Result() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/future:224:2 (osquery_additional_tests+0x152c999)\r\n    #3 std::__future_base::_Result<unsigned short>::_M_destroy() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/future:248:22 (osquery_additional_tests+0x152c86f)\r\n    #4 std::__future_base::_Result_base::_Deleter::operator()(std::__future_base::_Result_base*) const /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/future:198:52 (osquery_additional_tests+0xd16a84)\r\n    #5 std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>::~unique_ptr() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/unique_ptr.h:236:4 (osquery_additional_tests+0xd16405)\r\n    #6 std::__future_base::_State_baseV2::~_State_baseV2() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/future:313:40 (osquery_additional_tests+0xd164b7)\r\n    #7 void __gnu_cxx::new_allocator<std::__future_base::_State_baseV2>::destroy<std::__future_base::_State_baseV2>(std::__future_base::_State_baseV2*) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/ext/new_allocator.h:124:35 (osquery_additional_tests+0x152bfc4)\r\n    #8 _ZNSt16allocator_traitsISaINSt13__future_base13_State_baseV2EEE10_S_destroyIS1_EENSt9enable_ifIXsr6__and_INS3_16__destroy_helperIT_E4typeEEE5valueEvE4typeERS2_PS7_ /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:285:8 (osquery_additional_tests+0x152bf45)\r\n    #9 void std::allocator_traits<std::allocator<std::__future_base::_State_baseV2> >::destroy<std::__future_base::_State_baseV2>(std::allocator<std::__future_base::_State_baseV2>&, std::__future_base::_State_baseV2*) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:414:4 (osquery_additional_tests+0x152be35)\r\n    #10 std::_Sp_counted_ptr_inplace<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:531:2 (osquery_additional_tests+0x152b95c)\r\n    #11 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:150:6 (osquery_additional_tests+0xc74ea2)\r\n    #12 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:659:11 (osquery_additional_tests+0xc74e05)\r\n    #13 std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:925:31 (osquery_additional_tests+0xd128a9)\r\n    #14 std::shared_ptr<std::__future_base::_State_baseV2>::~shared_ptr() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:93:11 (osquery_additional_tests+0xd12ad5)\r\n    #15 std::promise<unsigned short>::~promise() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/future:1044:7 (osquery_additional_tests+0x152a5fd)\r\n    #16 boost::network::http::impl::http_async_protocol_handler<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::~http_async_protocol_handler() /usr/local/osquery/include/boost/network/protocol/http/client/connection/async_protocol_handler.hpp:27:8 (osquery_additional_tests+0x15294f8)\r\n    #17 boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::~http_async_connection() /usr/local/osquery/include/boost/network/protocol/http/client/connection/async_normal.hpp:46:8 (osquery_additional_tests+0x1529d95)\r\n    #18 void __gnu_cxx::new_allocator<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> >::destroy<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> >(boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>*) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/ext/new_allocator.h:124:35 (osquery_additional_tests+0x15974a5)\r\n    #19 _ZNSt16allocator_traitsISaIN5boost7network4http4impl21http_async_connectionINS2_4tags27http_async_8bit_udp_resolveELj1ELj1EEEEE10_S_destroyIS7_EENSt9enable_ifIXsr6__and_INS9_16__destroy_helperIT_E4typeEEE5valueEvE4typeERS8_PSD_ /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:285:8 (osquery_additional_tests+0x1597425)\r\n    #20 void std::allocator_traits<std::allocator<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> > >::destroy<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> >(std::allocator<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> >&, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>*) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:414:4 (osquery_additional_tests+0x1597315)\r\n    #21 std::_Sp_counted_ptr_inplace<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>, std::allocator<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> >, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:531:2 (osquery_additional_tests+0x152815c)\r\n    #22 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:150:6 (osquery_additional_tests+0xc74ea2)\r\n    #23 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:659:11 (osquery_additional_tests+0xc74e05)\r\n    #24 std::__shared_ptr<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:925:31 (osquery_additional_tests+0x15979a9)\r\n    #25 std::shared_ptr<boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u> >::~shared_ptr() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:93:11 (osquery_additional_tests+0x1521225)\r\n    #26 boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}::~function() /usr/local/osquery/include/boost/network/protocol/http/client/connection/async_normal.hpp:113:46 (osquery_additional_tests+0x1545ee5)\r\n    #27 asio::detail::rewrapped_handler<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, {lambda(std::error_code const&)#1}>::~rewrapped_handler() /usr/local/osquery/include/asio/detail/wrapped_handler.hpp:159:7 (osquery_additional_tests+0x1592aec)\r\n    #28 asio::detail::completion_handler<asio::detail::rewrapped_handler<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, {lambda(std::error_code const&)#1}> >::do_complete(asio::detail::task_io_service*, asio::detail::task_io_service_operation*, std::error_code const&, unsigned long) /usr/local/osquery/include/asio/detail/completion_handler.hpp:70:3 (osquery_additional_tests+0x15935d5)\r\n    #29 void asio::detail::strand_service::dispatch<asio::detail::rewrapped_handler<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, {lambda(std::error_code const&)#1}> >(asio::detail::strand_service::strand_impl*&, asio::detail::rewrapped_handler<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, {lambda(std::error_code const&)#1}>&) /usr/local/osquery/include/asio/detail/impl/strand_service.hpp:87:5 (osquery_additional_tests+0x1592e87)\r\n    #30 asio::async_result<asio::handler_type<asio::detail::rewrapped_handler<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, {lambda(std::error_code const&)#1}>, void ()>::type>::type asio::io_service::strand::dispatch<asio::detail::rewrapped_handler<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, {lambda(std::error_code const&)#1}> >(asio::handler_type&&) /usr/local/osquery/include/asio/strand.hpp:157:14 (osquery_additional_tests+0x1592928)\r\n    #31 void asio::detail::asio_handler_invoke<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, asio::io_service::strand, {lambda(std::error_code const&)#1}, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}>(asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>&, asio::detail::wrapped_handler<asio::io_service::strand, {lambda(std::error_code const&)#1}, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}>*) /usr/local/osquery/include/asio/detail/wrapped_handler.hpp:231:29 (osquery_additional_tests+0x15927ff)\r\n    #32 void asio_handler_invoke_helpers::invoke<asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>, asio::detail::is_continuation_if_running>(asio::detail::binder1<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running>, std::error_code>&, asio::detail::is_continuation_if_running&) /usr/local/osquery/include/asio/detail/handler_invoke_helpers.hpp:37:3 (osquery_additional_tests+0x1592448)\r\n    #33 asio::detail::wait_handler<asio::detail::wrapped_handler<asio::io_service::strand, boost::network::http::impl::http_async_connection<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::start(boost::network::http::basic_request<boost::network::http::tags::http_async_8bit_udp_resolve> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::function<void (boost::iterator_range<char const*> const&, std::error_code const&)>, std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)>)::{lambda(std::error_code const&)#1}, asio::detail::is_continuation_if_running> >::do_complete(asio::detail::task_io_service*, asio::detail::task_io_service_operation*, std::error_code const&, unsigned long) /usr/local/osquery/include/asio/detail/wait_handler.hpp:69:7 (osquery_additional_tests+0x159204c)\r\n    #34 asio::detail::task_io_service_operation::complete(asio::detail::task_io_service&, std::error_code const&, unsigned long) /usr/local/osquery/include/asio/detail/task_io_service_operation.hpp:37:5 (osquery_additional_tests+0x1500924)\r\n    #35 asio::detail::task_io_service::do_run_one(asio::detail::scoped_lock<asio::detail::posix_mutex>&, asio::detail::task_io_service_thread_info&, std::error_code const&) /usr/local/osquery/include/asio/detail/impl/task_io_service.ipp:371:12 (osquery_additional_tests+0x14ffa21)\r\n    #36 asio::detail::task_io_service::run(std::error_code&) /usr/local/osquery/include/asio/detail/impl/task_io_service.ipp:148:10 (osquery_additional_tests+0x14ff206)\r\n    #37 asio::io_service::run() /usr/local/osquery/include/asio/impl/io_service.ipp:58:25 (osquery_additional_tests+0x14ff075)\r\n    #38 boost::network::http::impl::async_client<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::async_client(bool, bool, bool, int, std::shared_ptr<asio::io_service>, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, long)::{lambda()#1}::operator()() const /usr/local/osquery/include/boost/network/protocol/http/client/async_impl.hpp:66:66 (osquery_additional_tests+0x15081d6)\r\n    #39 void std::_Bind_simple<boost::network::http::impl::async_client<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::async_client(bool, bool, bool, int, std::shared_ptr<asio::io_service>, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, long)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/functional:1530:18 (osquery_additional_tests+0x15080b5)\r\n    #40 std::_Bind_simple<boost::network::http::impl::async_client<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::async_client(bool, bool, bool, int, std::shared_ptr<asio::io_service>, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, long)::{lambda()#1} ()>::operator()() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/functional:1520:16 (osquery_additional_tests+0x1508025)\r\n    #41 std::thread::_Impl<std::_Bind_simple<boost::network::http::impl::async_client<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::async_client(bool, bool, bool, int, std::shared_ptr<asio::io_service>, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, long)::{lambda()#1} ()> >::_M_run() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/thread:115:13 (osquery_additional_tests+0x1507d39)\r\n    #42 execute_native_thread_routine /tmp/gcc-20170523-21480-1ln58b0/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/c++11/../../../../../libstdc++-v3/src/c++11/thread.cc:84 (osquery_additional_tests+0x2594b57)\r\n\r\n  Previous read of size 8 at 0x7b2800006020 by main thread (mutexes: write M174368353594171992):\r\n    #0 osquery::NetlibHttpClient::MakeRequest(Aws::Http::HttpRequest&, Aws::Utils::RateLimits::RateLimiterInterface*, Aws::Utils::RateLimits::RateLimiterInterface*) const /home/teddy/git/osquery/osquery/utils/aws_util.cpp:190:30 (osquery_additional_tests+0x15abf42)\r\n    #1 Aws::Internal::AWSHttpResourceClient::GetResource[abi:cxx11](char const*, char const*) const <null> (osquery_additional_tests+0x1c3b36d)\r\n    #2 testing::StrictMock<osquery::MockKinesisClient>::StrictMock() /home/teddy/git/osquery/third-party/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h:276:3 (osquery_additional_tests+0xe40249)\r\n    #3 void __gnu_cxx::new_allocator<testing::StrictMock<osquery::MockKinesisClient> >::construct<testing::StrictMock<osquery::MockKinesisClient>>(testing::StrictMock<osquery::MockKinesisClient>*) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/ext/new_allocator.h:120:23 (osquery_additional_tests+0xe401c1)\r\n    #4 _ZNSt16allocator_traitsISaIN7testing10StrictMockIN7osquery17MockKinesisClientEEEEE12_S_constructIS4_JEEENSt9enable_ifIXsr6__and_INS6_18__construct_helperIT_JDpT0_EE4typeEEE5valueEvE4typeERS5_PSA_DpOSB_ /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:256:8 (osquery_additional_tests+0xe40135)\r\n    #5 _ZNSt16allocator_traitsISaIN7testing10StrictMockIN7osquery17MockKinesisClientEEEEE9constructIS4_JEEEDTcl12_S_constructfp_fp0_spclsr3stdE7forwardIT0_Efp1_EEERS5_PT_DpOS8_ /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:402:4 (osquery_additional_tests+0xe3fc65)\r\n    #6 std::_Sp_counted_ptr_inplace<testing::StrictMock<osquery::MockKinesisClient>, std::allocator<testing::StrictMock<osquery::MockKinesisClient> >, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<>(std::allocator<testing::StrictMock<osquery::MockKinesisClient> >) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:522:4 (osquery_additional_tests+0xe3f5c5)\r\n    #7 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<testing::StrictMock<osquery::MockKinesisClient>, std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::_Sp_make_shared_tag, testing::StrictMock<osquery::MockKinesisClient>*, std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:617:18 (osquery_additional_tests+0xe3f1ab)\r\n    #8 std::__shared_ptr<testing::StrictMock<osquery::MockKinesisClient>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::_Sp_make_shared_tag, std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:1096:14 (osquery_additional_tests+0xe3f004)\r\n    #9 std::shared_ptr<testing::StrictMock<osquery::MockKinesisClient> >::shared_ptr<std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::_Sp_make_shared_tag, std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:319:4 (osquery_additional_tests+0xe3ef55)\r\n    #10 std::shared_ptr<testing::StrictMock<osquery::MockKinesisClient> > std::allocate_shared<testing::StrictMock<osquery::MockKinesisClient>, std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:613:14 (osquery_additional_tests+0xe3ee04)\r\n    #11 std::shared_ptr<testing::StrictMock<osquery::MockKinesisClient> > std::make_shared<testing::StrictMock<osquery::MockKinesisClient>>() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:629:14 (osquery_additional_tests+0xe38df8)\r\n    #12 osquery::KinesisTests_test_send_Test::TestBody() /home/teddy/git/osquery/osquery/logger/plugins/tests/aws_kinesis_tests.cpp:55:17 (osquery_additional_tests+0xe37311)\r\n    #13 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_additional_tests+0x1b32983)\r\n    #14 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_additional_tests+0x1ae2681)\r\n    #15 testing::Test::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2474:5 (osquery_additional_tests+0x1ae24db)\r\n    #16 testing::TestInfo::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2656:11 (osquery_additional_tests+0x1ae4712)\r\n    #17 testing::TestCase::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2774:28 (osquery_additional_tests+0x1ae6558)\r\n    #18 testing::internal::UnitTestImpl::RunAllTests() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4649:43 (osquery_additional_tests+0x1af739b)\r\n    #19 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_additional_tests+0x1b3b7b3)\r\n    #20 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_additional_tests+0x1af6af7)\r\n    #21 testing::UnitTest::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4257:10 (osquery_additional_tests+0x1af6781)\r\n    #22 RUN_ALL_TESTS() /home/teddy/git/osquery/third-party/googletest/googletest/include/gtest/gtest.h:2233:46 (osquery_additional_tests+0xc7a314)\r\n    #23 main /home/teddy/git/osquery/osquery/main/tests.cpp:135:17 (osquery_additional_tests+0xc7a118)\r\n\r\n  Mutex M174368353594171992 is already destroyed.\r\n\r\n  Thread T4 (tid=8602, running) created by main thread at:\r\n    #0 pthread_create /tmp/llvm-20170523-26378-1ew1c2v/llvm-4.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:897:3 (osquery_additional_tests+0xbf3345)\r\n    #1 __gthread_create /tmp/gcc-20170523-21480-1ln58b0/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu/bits/gthr-default.h:662 (osquery_additional_tests+0x2594c04)\r\n    #2 std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) /tmp/gcc-20170523-21480-1ln58b0/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/c++11/../../../../../libstdc++-v3/src/c++11/thread.cc:149 (osquery_additional_tests+0x2594c04)\r\n    #3 boost::network::http::impl::async_client<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::async_client(bool, bool, bool, int, std::shared_ptr<asio::io_service>, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, long) /usr/local/osquery/include/boost/network/protocol/http/client/async_impl.hpp:66:34 (osquery_additional_tests+0x14f798f)\r\n    #4 boost::network::http::basic_client_impl<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::basic_client_impl(bool, bool, bool, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, long, std::shared_ptr<asio::io_service>, int) /usr/local/osquery/include/boost/network/protocol/http/client/pimpl.hpp:78:9 (osquery_additional_tests+0x14f4b7c)\r\n    #5 boost::network::http::basic_client_facade<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::init_pimpl(boost::network::http::client_options<boost::network::http::tags::http_async_8bit_udp_resolve> const&) /usr/local/osquery/include/boost/network/protocol/http/client/facade.hpp:306:21 (osquery_additional_tests+0x14f3ea9)\r\n    #6 boost::network::http::basic_client_facade<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::basic_client_facade(boost::network::http::client_options<boost::network::http::tags::http_async_8bit_udp_resolve> const&) /usr/local/osquery/include/boost/network/protocol/http/client/facade.hpp:63:5 (osquery_additional_tests+0x14f3bc2)\r\n    #7 boost::network::http::basic_client<boost::network::http::tags::http_async_8bit_udp_resolve, 1u, 1u>::basic_client(boost::network::http::client_options<boost::network::http::tags::http_async_8bit_udp_resolve> const&) /usr/local/osquery/include/boost/network/protocol/http/client.hpp:60:51 (osquery_additional_tests+0x14ea045)\r\n    #8 osquery::TLSTransport::getClient() /home/teddy/git/osquery/osquery/remote/transports/tls.cpp:150:16 (osquery_additional_tests+0x14e97c8)\r\n    #9 osquery::NetlibHttpClient::MakeRequest(Aws::Http::HttpRequest&, Aws::Utils::RateLimits::RateLimiterInterface*, Aws::Utils::RateLimits::RateLimiterInterface*) const /home/teddy/git/osquery/osquery/utils/aws_util.cpp:121:44 (osquery_additional_tests+0x15aa64f)\r\n    #10 Aws::Internal::AWSHttpResourceClient::GetResource[abi:cxx11](char const*, char const*) const <null> (osquery_additional_tests+0x1c3b36d)\r\n    #11 testing::StrictMock<osquery::MockKinesisClient>::StrictMock() /home/teddy/git/osquery/third-party/googletest/googlemock/include/gmock/gmock-generated-nice-strict.h:276:3 (osquery_additional_tests+0xe40249)\r\n    #12 void __gnu_cxx::new_allocator<testing::StrictMock<osquery::MockKinesisClient> >::construct<testing::StrictMock<osquery::MockKinesisClient>>(testing::StrictMock<osquery::MockKinesisClient>*) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/ext/new_allocator.h:120:23 (osquery_additional_tests+0xe401c1)\r\n    #13 _ZNSt16allocator_traitsISaIN7testing10StrictMockIN7osquery17MockKinesisClientEEEEE12_S_constructIS4_JEEENSt9enable_ifIXsr6__and_INS6_18__construct_helperIT_JDpT0_EE4typeEEE5valueEvE4typeERS5_PSA_DpOSB_ /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:256:8 (osquery_additional_tests+0xe40135)\r\n    #14 _ZNSt16allocator_traitsISaIN7testing10StrictMockIN7osquery17MockKinesisClientEEEEE9constructIS4_JEEEDTcl12_S_constructfp_fp0_spclsr3stdE7forwardIT0_Efp1_EEERS5_PT_DpOS8_ /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/alloc_traits.h:402:4 (osquery_additional_tests+0xe3fc65)\r\n    #15 std::_Sp_counted_ptr_inplace<testing::StrictMock<osquery::MockKinesisClient>, std::allocator<testing::StrictMock<osquery::MockKinesisClient> >, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<>(std::allocator<testing::StrictMock<osquery::MockKinesisClient> >) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:522:4 (osquery_additional_tests+0xe3f5c5)\r\n    #16 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<testing::StrictMock<osquery::MockKinesisClient>, std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::_Sp_make_shared_tag, testing::StrictMock<osquery::MockKinesisClient>*, std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:617:18 (osquery_additional_tests+0xe3f1ab)\r\n    #17 std::__shared_ptr<testing::StrictMock<osquery::MockKinesisClient>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::_Sp_make_shared_tag, std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr_base.h:1096:14 (osquery_additional_tests+0xe3f004)\r\n    #18 std::shared_ptr<testing::StrictMock<osquery::MockKinesisClient> >::shared_ptr<std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::_Sp_make_shared_tag, std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:319:4 (osquery_additional_tests+0xe3ef55)\r\n    #19 std::shared_ptr<testing::StrictMock<osquery::MockKinesisClient> > std::allocate_shared<testing::StrictMock<osquery::MockKinesisClient>, std::allocator<testing::StrictMock<osquery::MockKinesisClient> >>(std::allocator<testing::StrictMock<osquery::MockKinesisClient> > const&) /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:613:14 (osquery_additional_tests+0xe3ee04)\r\n    #20 std::shared_ptr<testing::StrictMock<osquery::MockKinesisClient> > std::make_shared<testing::StrictMock<osquery::MockKinesisClient>>() /usr/local/osquery/opt/gcc/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/shared_ptr.h:629:14 (osquery_additional_tests+0xe38df8)\r\n    #21 osquery::KinesisTests_test_send_Test::TestBody() /home/teddy/git/osquery/osquery/logger/plugins/tests/aws_kinesis_tests.cpp:55:17 (osquery_additional_tests+0xe37311)\r\n    #22 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_additional_tests+0x1b32983)\r\n    #23 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_additional_tests+0x1ae2681)\r\n    #24 testing::Test::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2474:5 (osquery_additional_tests+0x1ae24db)\r\n    #25 testing::TestInfo::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2656:11 (osquery_additional_tests+0x1ae4712)\r\n    #26 testing::TestCase::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2774:28 (osquery_additional_tests+0x1ae6558)\r\n    #27 testing::internal::UnitTestImpl::RunAllTests() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4649:43 (osquery_additional_tests+0x1af739b)\r\n    #28 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2402:10 (osquery_additional_tests+0x1b3b7b3)\r\n    #29 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:2438:14 (osquery_additional_tests+0x1af6af7)\r\n    #30 testing::UnitTest::Run() /home/teddy/git/osquery/third-party/googletest/googletest/src/gtest.cc:4257:10 (osquery_additional_tests+0x1af6781)\r\n    #31 RUN_ALL_TESTS() /home/teddy/git/osquery/third-party/googletest/googletest/include/gtest/gtest.h:2233:46 (osquery_additional_tests+0xc7a314)\r\n    #32 main /home/teddy/git/osquery/osquery/main/tests.cpp:135:17 (osquery_additional_tests+0xc7a118)\r\n\r\nSUMMARY: ThreadSanitizer: data race /tmp/gcc-20170523-21480-1ln58b0/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/../../../../libstdc++-v3/libsupc++/eh_ptr.cc:123 in std::__exception_ptr::exception_ptr::_M_release()\r\n```"},"comment":{"url":"https://api.github.com/repos/facebook/osquery/issues/comments/322029610","html_url":"https://github.com/facebook/osquery/pull/3555#issuecomment-322029610","issue_url":"https://api.github.com/repos/facebook/osquery/issues/3555","id":322029610,"user":{"login":"facebook-github-bot","id":6422482,"avatar_url":"https://avatars3.githubusercontent.com/u/6422482?v=4","gravatar_id":"","url":"https://api.github.com/users/facebook-github-bot","html_url":"https://github.com/facebook-github-bot","followers_url":"https://api.github.com/users/facebook-github-bot/followers","following_url":"https://api.github.com/users/facebook-github-bot/following{/other_user}","gists_url":"https://api.github.com/users/facebook-github-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook-github-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook-github-bot/subscriptions","organizations_url":"https://api.github.com/users/facebook-github-bot/orgs","repos_url":"https://api.github.com/users/facebook-github-bot/repos","events_url":"https://api.github.com/users/facebook-github-bot/events{/privacy}","received_events_url":"https://api.github.com/users/facebook-github-bot/received_events","type":"User","site_admin":false},"created_at":"2017-08-13T08:42:30Z","updated_at":"2017-08-13T08:42:30Z","body":"@theopolis updated the pull request - [view changes](https://github.com/facebook/osquery/pull/3555/files/0966e12a863612bacb281f042f344e9268a33c14..2bad5b64a8019c7926f2236fa5214fdb64efc42b)"}}
{"actor":{"display_login":"facebook-github-bot"}}