View Issue Details

IDProjectCategoryView StatusLast Update
0006178DarkRadiantGeneralpublic22.11.2022 20:16
Reporterorbweaver Assigned Toorbweaver  
PrioritynormalSeveritynormalReproducibilityrandom
Status assignedResolutionopen 
PlatformLinuxOSUbuntuOS Version22.04
Product Version3.6.0 
Summary0006178: Sporadic assertion failure on shutdown due to LocalBitmapArtProvider destruction
DescriptionA sporadic (but frequent) assertion failure occurs on shutdown on Linux. The assertion message is "../src/common/object.cpp(352): assert "m_count > 0" failed in DecRef(): invalid ref data count". It occurs perhaps once every 3 - 4 runs, and does not seem to require any specific UI interaction beyond starting DarkRadiant and immediately exiting.

Since this is a debug assertion not an actual segfault, it *probably* doesn't affect release builds.
Steps To Reproduce1. Start DarkRadiant on Linux with a debug build.
2. Exit.
3. Repeat until error occurs.
Additional Information* thread 0000001, name = 'darkradiant', stop reason = signal SIGTRAP
  * frame #0: 0x00007ffff63d5a7c libc.so.6`pthread_kill + 300
    frame 0000001: 0x00007ffff6381476 libc.so.6`raise + 22
    frame 0000002: 0x00007ffff71acd05 libwx_gtk3u_core-3.0.so.0`wxGUIAppTraits::ShowAssertDialog(wxString const&) at utilsgtk.cpp:345:17
    frame 0000003: 0x00007ffff759bee7 libwx_baseu-3.0.so.0`ShowAssertDialog(wxString const&, int, wxString const&, wxString const&, wxString const&, wxAppTraits*) at appbase.cpp:1326:52
    frame 0000004: 0x00007ffff759c14c libwx_baseu-3.0.so.0`wxAppConsoleBase::OnAssertFailure(wchar_t const*, int, wchar_t const*, wchar_t const*, wchar_t const*) at appbase.cpp:805:21
    frame 0000005: 0x00007ffff717c724 libwx_gtk3u_core-3.0.so.0`wxApp::OnAssertFailure(this=0x00005555560c7850, file=<unavailable>, line=<unavailable>, func=<unavailable>, cond=<unavailable>, msg=<unavailable>) at app.cpp:540:31
    frame 0000006: 0x00007ffff759d146 libwx_baseu-3.0.so.0`wxDefaultAssertHandler(wxString const&, int, wxString const&, wxString const&, wxString const&) at appbase.cpp:1116:34
    frame 0000007: 0x00007ffff7596578 libwx_baseu-3.0.so.0`wxOnAssert(char const*, int, char const*, char const*, char const*) at appbase.cpp:1193:23
    frame #8: 0x00007ffff760f3a6 libwx_baseu-3.0.so.0`wxRefCounter::DecRef(this=0x00007fffd4623490) at object.cpp:352:5
    frame 0000009: 0x00007ffff760f3e6 libwx_baseu-3.0.so.0`wxObject::UnRef(this=0x00007fffd41dde28) at object.cpp:388:26
    frame 0000010: 0x00007ffff722cbfc libwx_gtk3u_core-3.0.so.0`wxArtProviderBitmapsHash_wxImplementation_HashTable::DeleteNode(_wxHashTable_NodeBase*) at artprov.cpp:44:1
    frame 0000011: 0x00007ffff75f7e68 libwx_baseu-3.0.so.0`_wxHashTableBase2::DeleteNodes(buckets=193, table=0x00005555562c13c0, dtor=(libwx_gtk3u_core-3.0.so.0`wxArtProviderBitmapsHash_wxImplementation_HashTable::DeleteNode(_wxHashTable_NodeBase*)))(_wxHashTable_NodeBase*)) at hashmap.cpp:106:17
    frame 0000012: 0x00007ffff722e9eb libwx_gtk3u_core-3.0.so.0`wxArtProviderCache::Clear() [inlined] wxArtProviderBitmapsHash_wxImplementation_HashTable::clear(this=0x00005555561e8540) at artprov.cpp:44:1
    frame 0000013: 0x00007ffff722e9d8 libwx_gtk3u_core-3.0.so.0`wxArtProviderCache::Clear(this=0x00005555561e8540) at artprov.cpp:102:24
    frame 0000014: 0x00007ffff722f153 libwx_gtk3u_core-3.0.so.0`wxArtProvider::Remove(provider=<unavailable>) at artprov.cpp:184:24
    frame 0000015: 0x0000555555bf98ea darkradiant`wxutil::LocalBitmapArtProvider::~LocalBitmapArtProvider(this=0x0000555556905dc0) at LocalBitmapArtProvider.h:34:30
    frame 0000016: 0x0000555555bf9926 darkradiant`wxutil::LocalBitmapArtProvider::~LocalBitmapArtProvider(this=0x0000555556905dc0) at LocalBitmapArtProvider.h:35:5
    frame 0000017: 0x0000555555bfaa05 darkradiant`std::default_delete<wxutil::LocalBitmapArtProvider>::operator(this=0x00005555560c7c08, __ptr=0x0000555556905dc0)(wxutil::LocalBitmapArtProvider*) const at unique_ptr.h:85:2
    frame 0000018: 0x0000555555bfaa68 darkradiant`std::__uniq_ptr_impl<wxutil::LocalBitmapArtProvider, std::default_delete<wxutil::LocalBitmapArtProvider> >::reset(this=0x00005555560c7c08, __p=0x0000000000000000) at unique_ptr.h:182:16
    frame 0000019: 0x0000555555bfa4c7 darkradiant`std::unique_ptr<wxutil::LocalBitmapArtProvider, std::default_delete<wxutil::LocalBitmapArtProvider> >::reset(this=nullptr, __p=0x0000000000000000) at unique_ptr.h:456:12
    frame 0000020: 0x0000555555bf7951 darkradiant`RadiantApp::cleanupWxWidgets(this=0x00005555560c7850) at RadiantApp.cpp:140:29
    frame 0000021: 0x0000555555bf79fc darkradiant`RadiantApp::OnExit(this=0x00005555560c7850) at RadiantApp.cpp:159:21
    frame 0000022: 0x00007ffff7600be2 libwx_baseu-3.0.so.0`wxEntry(int&, wchar_t**) at init.cpp:500:45
    frame 0000023: 0x0000555555bedd2d darkradiant`main(argc=1, argv=0x00007fffffffded8) at main.cpp:7:1
    frame 0000024: 0x00007ffff6368d90 libc.so.6`___lldb_unnamed_symbol3139 + 128
    frame 0000025: 0x00007ffff6368e40 libc.so.6`__libc_start_main + 128
    frame 0000026: 0x0000555555afd6f5 darkradiant`_start + 37
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
22.11.2022 20:15 orbweaver New Issue
22.11.2022 20:15 orbweaver Status new => assigned
22.11.2022 20:15 orbweaver Assigned To => orbweaver
22.11.2022 20:16 orbweaver Description Updated