Skip to content

Crash in PNS::LOGGER::Log (was: Crash while routing differential pair and switching layers)

Description

Still using the project in issue #8514 (closed), I got a third crash.

Here is the backtrace:

#0  boost::uuids::to_string[abi:cxx11](boost::uuids::uuid const&) (u=...) at /usr/include/boost/uuid/uuid_io.hpp:156
#1  KIID::AsString() const (this=0x69e7d1006a47090) at /home/dag/src/c64/resid/kicad/common/kiid.cpp:220
#2  0x00007f97cf53eb03 in PNS::LOGGER::Log(PNS::LOGGER::EVENT_TYPE, VECTOR2<int>, PNS::ITEM const*) [clone .isra.0] (this=0x56151138f330, evt=evt@entry=PNS::LOGGER::EVT_MOVE, item=item@entry=0x561510ecd630, pos=..., pos=...)
    at /home/dag/src/c64/resid/kicad/pcbnew/router/pns_logger.cpp:74
#3  0x00007f97cf094342 in PNS::ROUTER::Move(VECTOR2<int> const&, PNS::ITEM*) (this=0x56150eeb19d0, aP=..., endItem=0x561510ecd630) at /home/dag/src/c64/resid/kicad/pcbnew/router/pns_router.cpp:412
#4  0x00007f97cf0668b4 in ROUTER_TOOL::handleLayerSwitch(TOOL_EVENT const&, bool) (this=<optimized out>, aEvent=..., aForceVia=<optimized out>) at /home/dag/src/c64/resid/kicad/pcbnew/router/router_tool.cpp:992
#5  0x00007f97cf20aed0 in std::function<int (TOOL_EVENT const&)>::operator()(TOOL_EVENT const&) const (__args#0=<optimized out>, this=0x561510be2090) at /usr/include/c++/11/bits/std_function.h:560
#6  COROUTINE<int, TOOL_EVENT const&>::callerStub(long) (aData=<optimized out>) at /home/dag/src/c64/resid/kicad/include/tool/coroutine.h:428
#7  0x00007f97cf55fad1 in make_fcontext () at /home/dag/src/c64/resid/kicad/thirdparty/libcontext/libcontext.cpp:715
#8  0x000056150c8e9900 in  ()
#9  0x00007f97ce96fdcd in wxScopedCharTypeBuffer<wchar_t>::GetNullData() () at /usr/include/wx-3.0/wx/buffer.h:182
#10 wxScopedCharTypeBuffer<wchar_t>::DecRef() (this=0x56150f7994f8) at /usr/include/wx-3.0/wx/buffer.h:198
#11 wxScopedCharTypeBuffer<wchar_t>::~wxScopedCharTypeBuffer() (this=0x56150f7994f8, this=<optimized out>) at /usr/include/wx-3.0/wx/buffer.h:127
#12 wxString::wxString(char const*) (this=0x56150f7995c0, psz=<optimized out>, this=<optimized out>, psz=<optimized out>) at /usr/include/wx-3.0/wx/string.h:1242
#13 0x00007f9802ea2a70 in g_cclosure_marshal_VOID__VOIDv () at /lib64/libgobject-2.0.so.0
#14 0x0000000000000001 in  ()
#15 0x00007f9802ea6be0 in g_cclosure_marshal_VOID__VOID () at /lib64/libgobject-2.0.so.0
#16 0x000056150efc6fc0 in  ()
#17 0x0000000000000000 in  ()

Steps to reproduce

This time, I removed all the track segments for the differential pair shown in #8538 (closed), before rerouting from the same microvia. When the rerouting was completed, I believe I pressed "+" (don't ask me why), and got the crash.

I did an "export TOM_EXTRA_DEBUG=1" before compiling, in case this should make any difference.

KiCad Version

Application: KiCad

Version: (5.99.0-10830-g25678ee00d), release build

Libraries:
	wxWidgets 3.0.5
	libcurl/7.76.1 OpenSSL/1.1.1k-fips zlib/1.2.11 brotli/1.0.9 libidn2/2.3.1 libpsl/0.21.1 (+libidn2/2.3.0) libssh/0.9.5/openssl/zlib nghttp2/1.43.0

Platform: Linux 5.12.8-300.fc34.x86_64 x86_64, 64 bit, Little endian, wxGTK, cinnamon, x11

Build Info:
	Date: Jun  4 2021 07:41:14
	wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
	Boost: 1.75.0
	OCC: 7.5.0
	Curl: 7.76.1
	ngspice: 34
	Compiler: GCC 11.1.1 with C++ ABI 1016

Build settings:
	KICAD_USE_OCC=ON
	KICAD_SPICE=ON
Edited by Jeff Young