crash in Footprint Chooser when clicking around in, version 36331e25
Description
When clicking around in the Footprint Chooser, sometimes there is seemingly-random crashing.
Steps to reproduce
- Add https://github.com/markadev/KiCad-AppleII and https://github.com/HeadBoffin/RP_Silicon_KiCad to the footprint libraries; as I'm running the git version straight out of the build directory, there are only the 5 items loaded
- Enter schematic editor, select symbol, Properties, Footprint Chooser
- Start clicking around from item to item; it doesn't seem to necessarily depend on which item you click. It may take a while, and larger symbols seem to make it happen much faster. (in my case, the RPi Nano symbol seems to be the quickest to get to crash)
- kaboom in BOARD::UpdateMaxClearanceCache():
Exception thrown: read access violation.
zone-> was 0xFFFFFFFFFFFFFE0F.
_pcbnew.dll!BOARD::UpdateMaxClearanceCache() Line 803 C++
_pcbnew.dll!BOARD::IncrementTimeStamp() Line 270 C++
_pcbnew.dll!ZONE::~ZONE() Line 96 C++
[External Code]
_pcbnew.dll!FOOTPRINT::~FOOTPRINT() Line 236 C++
[External Code]
_pcbnew.dll!BOARD::DeleteAllFootprints() Line 1124 C++
_pcbnew.dll!FOOTPRINT_CHOOSER_FRAME::on3DviewReq(wxCommandEvent & event) Line 526 C++
wxbase32u_vc_custom.dll!wxAppConsoleBase::CallEventHandler(wxEvtHandler * handler, wxEventFunctor & functor, wxEvent & event) Line 673 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEventIfMatchesId(const wxEventTableEntryBase & entry, wxEvtHandler * handler, wxEvent & event) Line 1439 C++
wxbase32u_vc_custom.dll!wxEvtHandler::SearchDynamicEventTable(wxEvent & event) Line 1901 C++
wxbase32u_vc_custom.dll!wxEvtHandler::TryHereOnly(wxEvent & event) Line 1624 C++
[Inline Frame] wxbase32u_vc_custom.dll!wxEvtHandler::TryBeforeAndHere(wxEvent &) Line 4007 C++
[Inline Frame] wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEventLocally(wxEvent &) Line 1561 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEvent(wxEvent & event) Line 1534 C++
_pcbnew.dll!EDA_BASE_FRAME::ProcessEvent(wxEvent & aEvent) Line 292 C++
wxmsw32u_core_vc_custom.dll!wxWindowBase::TryAfter(wxEvent & event) Line 3536 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEvent(wxEvent & event) Line 1547 C++
_pcbnew.dll!PANEL_FOOTPRINT_CHOOSER::onFootprintSelected(wxCommandEvent & aEvent) Line 352 C++
wxbase32u_vc_custom.dll!wxAppConsoleBase::CallEventHandler(wxEvtHandler * handler, wxEventFunctor & functor, wxEvent & event) Line 673 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEventIfMatchesId(const wxEventTableEntryBase & entry, wxEvtHandler * handler, wxEvent & event) Line 1439 C++
wxbase32u_vc_custom.dll!wxEvtHandler::SearchDynamicEventTable(wxEvent & event) Line 1901 C++
wxbase32u_vc_custom.dll!wxEvtHandler::TryHereOnly(wxEvent & event) Line 1624 C++
[Inline Frame] wxbase32u_vc_custom.dll!wxEvtHandler::TryBeforeAndHere(wxEvent &) Line 4007 C++
[Inline Frame] wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEventLocally(wxEvent &) Line 1561 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEvent(wxEvent & event) Line 1534 C++
wxmsw32u_core_vc_custom.dll!wxWindowBase::TryAfter(wxEvent & event) Line 3536 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEvent(wxEvent & event) Line 1547 C++
wxmsw32u_core_vc_custom.dll!wxWindowBase::TryAfter(wxEvent & event) Line 3536 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEvent(wxEvent & event) Line 1547 C++
wxmsw32u_core_vc_custom.dll!wxWindowBase::TryAfter(wxEvent & event) Line 3536 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessEvent(wxEvent & event) Line 1547 C++
wxbase32u_vc_custom.dll!wxEvtHandler::ProcessPendingEvents() Line 1398 C++
wxbase32u_vc_custom.dll!wxAppConsoleBase::ProcessPendingEvents() Line 572 C++
[Inline Frame] wxbase32u_vc_custom.dll!wxEventLoopManual::ProcessEvents() Line 225 C++
wxbase32u_vc_custom.dll!wxEventLoopManual::DoRun() Line 288 C++
wxbase32u_vc_custom.dll!wxEventLoopBase::Run() Line 87 C++
_pcbnew.dll!KIWAY_PLAYER::ShowModal(wxString * aResult, wxWindow * aResultantFocusWindow) Line 136 C++
_pcbnew.dll!FOOTPRINT_CHOOSER_FRAME::ShowModal(wxString * aFootprint, wxWindow * aParent) Line 378 C++
_eeschema.dll!TEXT_BUTTON_FP_CHOOSER::OnButtonClick() Line 278 C++
wxmsw32u_core_vc_custom.dll!wxComboCtrlBase::HandleButtonMouseEvent(wxMouseEvent & event, int flags)
[rest of backtrace elided]
- The specific lines of the crash:
for( ZONE* zone : footprint->Zones() )
worstClearance = std::max( worstClearance, zone->GetLocalClearance().value() );
- I do have a minidump if desired, as well as the project/schematic files
KiCad Version
Application: KiCad x64 on x64
Version: 8.99.0-245-ga4da829ccc, release build
Libraries:
wxWidgets 3.2.4
FreeType 2.13.2
HarfBuzz 8.3.0
FontConfig 2.14.2
libcurl/8.6.0-DEV Schannel zlib/1.3.1
Platform: Windows 10 (build 19044), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
Date: Mar 4 2024 12:33:42
wxWidgets: 3.2.4 (wchar_t,wx containers)
Boost: 1.84.0
OCC: 7.7.1
Curl: 8.6.0-DEV
ngspice: 42
Compiler: Visual C++ 1939 without C++ ABI
Build settings: