From 11b8276cc4abb3c85d198251b9396faf8fab350d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 11 Jan 2022 15:33:16 +0100 Subject: [PATCH] Disable container overflow detection in Mac STL ASAN CI build This seems to result in a false positive in BitmapComboBoxTestCase with the following stack: ERROR: AddressSanitizer: container-overflow on address 0x00010d5331c0 at pc 0x00010743e1e8 bp 0x00016b6f8940 sp 0x00016b6f8938 WRITE of size 8 at 0x00010d5331c0 thread T0 #0 0x10743e1e4 in wxString::ConvertedBuffer::ConvertedBuffer() string.h:3598 #1 0x10743ddbc in wxString::ConvertedBuffer::ConvertedBuffer() string.h:3598 #2 0x10743f49c in wxString::wxString(wxString const&) string.h:1157 #3 0x1074324ac in wxString::wxString(wxString const&) string.h:1157 #4 0x10747a4c4 in void std::__1::allocator::construct(wxString*, wxString const&) memory:916 #5 0x10747a3f8 in void std::__1::allocator_traits >::construct(std::__1::allocator&, wxString*, wxString const&) allocator_traits.h:288 #6 0x107479e2c in std::__1::vector >::__construct_at_end(unsigned long, wxString const&) vector:1063 #7 0x107479b3c in std::__1::vector >::insert(std::__1::__wrap_iter, unsigned long, wxString const&) vector:1889 #8 0x10756085c in wxBaseArray >::Insert(wxString, unsigned long, unsigned long) dynarray.h:181 #9 0x108028fbc in wxVListBoxComboPopup::Insert(wxString const&, int) odcombo.cpp:539 #10 0x108030180 in wxOwnerDrawnComboBox::DoInsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) odcombo.cpp:1122 #11 0x10826d690 in wxBitmapComboBox::DoInsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) bmpcboxg.cpp:169 #12 0x10485271c in wxItemContainer::InsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) ctrlsub.h:160 #13 0x1048522a0 in wxItemContainer::InsertItems(wxArrayStringsAdapter const&, unsigned int) ctrlsub.h:165 #14 0x10483c08c in wxItemContainer::Insert(wxArrayString const&, unsigned int) ctrlsub.h:247 #15 0x10483dac8 in ItemContainerTestCase::Count() itemcontainertest.cpp:96 #16 0x104866e04 in BitmapComboBoxTestCase::runTest() bitmapcomboboxtest.cpp:50 ... 0x00010d5331c0 is located 64 bytes inside of 160-byte region [0x00010d533180,0x00010d533220) allocated by thread T0 here: #0 0x105546714 in wrap__Znwm+0x74 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x4a714) #1 0x10747ae10 in void* std::__1::__libcpp_operator_new(unsigned long) new:235 #2 0x10747ad6c in std::__1::__libcpp_allocate(unsigned long, unsigned long) new:261 #3 0x10747ace8 in std::__1::allocator::allocate(unsigned long) memory:870 #4 0x10747ab88 in std::__1::allocator_traits >::allocate(std::__1::allocator&, unsigned long) allocator_traits.h:260 #5 0x10747aac4 in std::__1::__split_buffer&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator&) __split_buffer:314 #6 0x10747a110 in std::__1::__split_buffer&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator&) __split_buffer:313 #7 0x107479c30 in std::__1::vector >::insert(std::__1::__wrap_iter, unsigned long, wxString const&) vector:1904 #8 0x10756085c in wxBaseArray >::Insert(wxString, unsigned long, unsigned long) dynarray.h:181 #9 0x108028fbc in wxVListBoxComboPopup::Insert(wxString const&, int) odcombo.cpp:539 #10 0x108030180 in wxOwnerDrawnComboBox::DoInsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) odcombo.cpp:1122 #11 0x10826d690 in wxBitmapComboBox::DoInsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) bmpcboxg.cpp:169 #12 0x1075590bc in wxItemContainer::DoAppendItems(wxArrayStringsAdapter const&, void**, wxClientDataType) ctrlsub.h:352 #13 0x10484c9e0 in wxItemContainer::AppendItems(wxArrayStringsAdapter const&, void**, wxClientDataType) ctrlsub.h:117 #14 0x10484c8d4 in wxItemContainer::AppendItems(wxArrayStringsAdapter const&) ctrlsub.h:122 #15 0x10483999c in wxItemContainer::Append(wxArrayString const&) ctrlsub.h:209 #16 0x10483ccfc in ItemContainerTestCase::Count() itemcontainertest.cpp:82 #17 0x104866e04 in BitmapComboBoxTestCase::runTest() bitmapcomboboxtest.cpp:50 ... --- .github/workflows/ci_mac.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci_mac.yml b/.github/workflows/ci_mac.yml index 1f40159a01..fb8fe5c64b 100644 --- a/.github/workflows/ci_mac.yml +++ b/.github/workflows/ci_mac.yml @@ -203,7 +203,11 @@ jobs: if: matrix.skip_testing != true working-directory: tests run: | - export ASAN_OPTIONS=fast_unwind_on_malloc=0 + # We currently need to disable container overflow detection as we get + # what seems to be a false positive in BitmapComboBoxTestCase triggered + # by creating a new string from std::allocator::construct() + # used by std::vector<>::insert(). + export ASAN_OPTIONS='fast_unwind_on_malloc=0 detect_container_overflow=0' # Exclude tests that are currently known to fail wx_tests_selection='~[valnum] ~wxPersistTLW ~wxPersistDVC ~wxTopLevel::Show ~wxFont::Weight ~wxFont::NativeFontInfo ~WebView ~RadioButton::Single ~RadioButton::Focus ~wxHtmlPrintout::Pagination ~ChoiceTestCase ~ComboBoxTestCase ~CheckListBoxTestCase ~ListBoxTestCase ~RearrangeListTestCase ~wxTextCtrl::GetBestSize ~TextCtrlTestCase ~ClippingBoxTestCase::wxClientDC ~wxExecute::RedirectUTF8 ~Ellipsization::NormalCase ~SpinCtrl::* ~SpinCtrlDouble::* ~NotebookTestCase ~SettingsTestCase ~XRC::LoadURL ~Window::Show ~ModalDialogsTestCase ~Button::Click ~Button::Disabled ~wxDVC::GetItemRect ~wxDVC::AppendTextColumn ~Grid::KeyboardSelection ~Grid::CellClick ~Grid::ReorderedColumnsCellClick ~Grid::CellSelect ~wxStyledTextCtrl::AutoComp ~EvtLoopTestCase ~EventPropagationTestCase' ./test_gui $wx_tests_selection