Pcbnew: Crash on redo while moving a footprint

Bug #1793948 reported by Michael Geselbracht
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
KiCad
Fix Released
Critical
Seth Hillbrand

Bug Description

When Ctrl-Y is pressed while a footprint is being moved, pcbnew crashes.

Steps to reproduce:

1. Open an existing desing and (m)ove a FP.
2. Press Ctrl-Z (Undo)
3. Start to (m)ove the same or another FP but instead of placing it press Ctrl-Y
   -> Crash

Happens with 5.0 branch on Linux and the current nightly (Sep 22) on Windows 10.

Application: kicad
Version: (5.0.1-dev-77-gf85dc5764), debug build
Libraries:
    wxWidgets 3.0.3
    libcurl/7.47.0 OpenSSL/1.0.2g zlib/1.2.8 libidn/1.32 librtmp/2.3
Platform: Linux 4.15.0-34-generic x86_64, 64 bit, Little endian, wxGTK
Build Info:
    wxWidgets: 3.0.3 (wchar_t,wx containers,compatible with 2.8) GTK+ 2.24
    Boost: 1.58.0
    OpenCASCADE Community Edition: 6.9.1
    Curl: 7.47.0
    Compiler: GCC 5.4.0 with C++ ABI 1009

Build settings:
    USE_WX_GRAPHICS_CONTEXT=OFF
    USE_WX_OVERLAY=OFF
    KICAD_SCRIPTING=ON
    KICAD_SCRIPTING_MODULES=ON
    KICAD_SCRIPTING_WXPYTHON=ON
    KICAD_SCRIPTING_ACTION_MENU=ON
    BUILD_GITHUB_PLUGIN=ON
    KICAD_USE_OCE=ON
    KICAD_USE_OCC=OFF
    KICAD_SPICE=ON

GDB output:

Thread 1 "kicad" received signal SIGSEGV, Segmentation fault.
0x00007fffe5040b5e in std::vector<ITEM_PICKER, std::allocator<ITEM_PICKER> >::size (this=0x10) at /usr/include/c++/5/bits/stl_vector.h:655
655 { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
(gdb) bt
#0 0x00007fffe5040b5e in std::vector<ITEM_PICKER, std::allocator<ITEM_PICKER> >::size (this=0x10) at /usr/include/c++/5/bits/stl_vector.h:655
#1 0x00007fffe50409be in PICKED_ITEMS_LIST::GetCount (this=0x0) at /data/src/kicad-source-mirror/include/undo_redo_container.h:192
#2 0x00007fffe517ae34 in PCB_BASE_EDIT_FRAME::PutDataInPreviousState (this=0x27d0ae0, aList=0x0, aRedoCommand=true, aRebuildRatsnet=true) at /data/src/kicad-source-mirror/pcbnew/undo_redo.cpp:426
#3 0x00007fffe517ac3b in PCB_BASE_EDIT_FRAME::RestoreCopyFromRedoList (this=0x27d0ae0, aEvent=...) at /data/src/kicad-source-mirror/pcbnew/undo_redo.cpp:395
#4 0x00007ffff648736e in wxAppConsoleBase::CallEventHandler (this=0x824730, handler=0x27d0ae0, functor=..., event=...) at ../src/common/appbase.cpp:623
#5 0x00007ffff660d4d7 in wxEvtHandler::ProcessEventIfMatchesId (entry=..., handler=<optimized out>, event=...) at ../src/common/event.cpp:1390
#6 0x00007ffff660d5cb in wxEventHashTable::HandleEvent (this=<optimized out>, event=..., self=self@entry=0x27d0ae0) at ../src/common/event.cpp:996
#7 0x00007ffff660d97b in wxEvtHandler::TryHereOnly (this=0x27d0ae0, event=...) at ../src/common/event.cpp:1587
#8 0x00007fffe5811ad0 in EDA_BASE_FRAME::ProcessEvent (this=0x27d0ae0, aEvent=...) at /data/src/kicad-source-mirror/common/eda_base_frame.cpp:194
#9 0x00007ffff660d783 in wxEvtHandler::DoTryChain (this=<optimized out>, event=...) at ../src/common/event.cpp:1552
#10 0x00007ffff660da65 in wxEvtHandler::ProcessEvent (this=0x27d0f48, event=...) at ../src/common/event.cpp:1493
#11 0x00007ffff6fafb38 in wxWindowBase::TryAfter (this=0x3b07e00, event=...) at ../src/common/wincmn.cpp:3427
#12 0x00007ffff660d7d7 in wxEvtHandler::SafelyProcessEvent (this=<optimized out>, event=...) at ../src/common/event.cpp:1611
#13 0x00007ffff6fb10ec in wxWindowBase::HandleWindowEvent (this=this@entry=0x3b07e00, event=...) at ../src/common/wincmn.cpp:1525
#14 0x00007ffff6f54b6f in wxMenuBase::SendEvent (this=this@entry=0x42e4800, itemid=<optimized out>, checked=<optimized out>) at ../src/common/menucmn.cpp:666
#15 0x00007ffff6e3783b in menuitem_activate (item=0x42a3cb0) at ../src/gtk/menu.cpp:587
#16 0x00007ffff439cfa5 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007ffff43aefc1 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#18 0x00007ffff43b7d5c in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ffff43b808f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff4addfec in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#21 0x00007ffff439cfa5 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff43aefc1 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007ffff43b77f9 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007ffff43b808f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#25 0x00007ffff490478f in gtk_accel_group_activate () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#26 0x00007ffff4905bdd in gtk_accel_groups_activate () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0

Revision history for this message
eelik (eelik) wrote :

I can reproduce. To be more exact, I dragged with mouse and without releasing the button, pressed Ctrl+Y.

Application: kicad
Version: (6.0.0-rc1-dev-576-gae13e441a), debug build
Libraries:
    wxWidgets 3.0.3
Platform: Linux 4.13.0-46-generic x86_64, 64 bit, Little endian, wxGTK
Build Info:
    wxWidgets: 3.0.3 (wchar_t,wx containers,compatible with 2.8) GTK+ 2.24
    Boost: 1.62.0
    Compiler: GCC 7.2.0 with C++ ABI 1011

Build settings:
    USE_WX_GRAPHICS_CONTEXT=OFF
    USE_WX_OVERLAY=OFF
    KICAD_SCRIPTING=ON
    KICAD_SCRIPTING_MODULES=ON
    KICAD_SCRIPTING_WXPYTHON=ON
    KICAD_SCRIPTING_ACTION_MENU=ON
    BUILD_GITHUB_PLUGIN=OFF
    KICAD_USE_OCE=OFF
    KICAD_USE_OCC=OFF
    KICAD_SPICE=OFF

Seth Hillbrand (sethh)
Changed in kicad:
milestone: none → 5.0.1
importance: Undecided → Critical
Revision history for this message
KiCad Janitor (kicad-janitor) wrote :

Fixed in revision e0316af69c23c92f6b699d33379666e689fcbf8b
https://git.launchpad.net/kicad/patch/?id=e0316af69c23c92f6b699d33379666e689fcbf8b

Changed in kicad:
status: New → Fix Committed
assignee: nobody → Seth Hillbrand (sethh)
Changed in kicad:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.