Comment 10 for bug 1838448

Revision history for this message
Ian McInerney (imcinerney) wrote : Re: crash on vrml export

I was just able to reproduce this on the Fedora release build for 5.1.2. I had to uncheck all the options, and it was set to meters. When I had the options checked it wouldn't crash. I tried briefly on the HEAD of the 5.1 branch, but it didn't crash. I was running that as a debug build though, so it could be this is release build specific.

It crashes on:
/usr/include/c++/9/bits/stl_vector.h:1042: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::reference = int&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed.

The relevant backtrace is:
#0 0x00007ffff6cafe75 in raise () at /lib64/libc.so.6
#1 0x00007ffff6c9a895 in abort () at /lib64/libc.so.6
#2 0x00007fffd6cd8a28 in std::__replacement_assert(char const*, int, char const*, char const*)
    (__file=__file@entry=0x7fffd7815558 "/usr/include/c++/9/bits/stl_vector.h", __line=__line@entry=1042, __function=__function@entry=0x7fffd78218d8 "std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::reference = int&;"..., __condition=__condition@entry=0x7fffd78155a8 "__builtin_expect(__n < this->size(), true)")
    at /usr/include/c++/9/x86_64-redhat-linux/bits/c++config.h:2510
#3 0x00007fffd6efbd94 in std::vector<int, std::allocator<int> >::operator[](unsigned long) (__n=0, this=0x7fffffff74d0) at /usr/src/debug/kicad-5.1.2-1.fc30.x86_64/pcbnew/exporters/export_vrml.cpp:1853
#4 0x00007fffd6efbd94 in create_vrml_shell(IFSG_TRANSFORM&, VRML_COLOR_INDEX, VRML_LAYER*, double, double) (PcbOutput=..., colorID=VRML_COLOR_TIN, layer=<optimized out>, top_z=<optimized out>, bottom_z=<optimized out>)
    at /usr/src/debug/kicad-5.1.2-1.fc30.x86_64/pcbnew/exporters/export_vrml.cpp:1833
#5 0x00007fffd6efc6e8 in write_layers(MODEL_VRML&, char const*, std::ofstream*, BOARD*) (aModel=
    ..., aFileName=0x555557eb5cb0 "/home/imcinerney/Documents/dev/kicad/testItems/BugSpecific/1838448/00_pr_invest/00_pr_invest.wrl", aOutputFile=aOutputFile@entry=0x0, aPcb=<optimized out>)
    at /usr/src/debug/kicad-5.1.2-1.fc30.x86_64/pcbnew/exporters/export_vrml.cpp:525
#6 0x00007fffd6f0260a in PCB_EDIT_FRAME::ExportVRML_File(wxString const&, double, bool, bool, bool, wxString const&, double, double)
    (this=<optimized out>, aFullFileName=..., aMMtoWRMLunit=<optimized out>, aExport3DFiles=<optimized out>, aUseRelativePaths=<optimized out>, aUsePlainPCB=<optimized out>, a3D_Subdir=..., aXRef=<optimized out>, aYRef=<optimized out>)
    at /usr/include/wx-3.0/wx/buffer.h:157
#7 0x00007fffd6d611f8 in PCB_EDIT_FRAME::OnExportVRML(wxCommandEvent&) () at /usr/src/debug/kicad-5.1.2-1.fc30.x86_64/pcbnew/dialogs/dialog_export_vrml.cpp:249
#8 0x00007ffff746df0b in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#9 0x00007ffff746e013 in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () at /lib64/libwx_baseu-3.0.so.0
#10 0x00007ffff746e380 in wxEvtHandler::TryHereOnly(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#11 0x00007fffd7668a00 in EDA_BASE_FRAME::ProcessEvent(wxEvent&) (this=0x5555574e1270, aEvent=...) at /usr/src/debug/kicad-5.1.2-1.fc30.x86_64/common/eda_base_frame.cpp:173
#12 0x00007ffff746e1e3 in wxEvtHandler::DoTryChain(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#13 0x00007ffff746e4b1 in wxEvtHandler::ProcessEvent(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#14 0x00007ffff7a1223a in wxWindowBase::TryAfter(wxEvent&) () at /lib64/libwx_gtk3u_core-3.0.so.0
#15 0x00007ffff746e23b in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /lib64/libwx_baseu-3.0.so.0
#16 0x00007ffff79c205e in wxMenuBase::SendEvent(int, int) () at /lib64/libwx_gtk3u_core-3.0.so.0