Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix model load in debug build #4656

Merged
merged 2 commits into from
Apr 4, 2024

Conversation

buzzhuzz
Copy link
Contributor

Debug build exit with error on model load due to failed assertion (file path redacted):

orca-slicer: <...>/OrcaSlicer/src/libslic3r/Model.cpp:1361: void Slic3r::ModelObject::update_min_max_z(): Assertion `! this->instances.empty()' failed.

Assertion failed due to model->ensure_on_bed() being called for object which yet to be load from file.

Do not call ensure_on_bed() for models read from file since they may be read with no default instance.

ensure_on_bed() called later within withing Plater::load_model_objects() for each object added.

@buzzhuzz
Copy link
Contributor Author

Full call stack for the assertion failed:

#6  0x00007ffff0439206 in __assert_fail
    (assertion=0x55555b491c1d "! this->instances.empty()", file=0x55555b491350 "/home/dbuzz/packages/3d/OrcaSlicer/src/libslic3r/Model.cpp", line=1361, function=0x55555b491bf0 "void Slic3r::ModelObject::update_min_max_z()") at ./assert/assert.c:101
#7  0x00005555561fc257 in Slic3r::ModelObject::update_min_max_z (this=0x555563a808a0) at /home/dbuzz/packages/3d/OrcaSlicer/src/libslic3r/Model.cpp:1361
#8  0x00005555561fc190 in Slic3r::ModelObject::min_z (this=0x555563a808a0) at /home/dbuzz/packages/3d/OrcaSlicer/src/libslic3r/Model.cpp:1349
#9  0x00005555561fdb8a in Slic3r::ModelObject::ensure_on_bed (this=0x555563a808a0, allow_negative_z=false) at /home/dbuzz/packages/3d/OrcaSlicer/src/libslic3r/Model.cpp:1609
#10 0x0000555557799a5a in Slic3r::GUI::Plater::priv::load_files (this=0x55556048f690, input_files=std::vector of length 1, capacity 1 = {...}, strategy=Slic3r::LoadStrategy::LoadModel, ask_multi=false)
    at /home/dbuzz/packages/3d/OrcaSlicer/src/slic3r/GUI/Plater.cpp:4059
#11 0x00005555577cfe19 in Slic3r::GUI::Plater::load_files (this=0x5555602de0d0, input_files=std::vector of length 1, capacity 1 = {...}, strategy=Slic3r::LoadStrategy::LoadModel, ask_multi=false)
    at /home/dbuzz/packages/3d/OrcaSlicer/src/slic3r/GUI/Plater.cpp:9677
#12 0x00005555577d5e87 in Slic3r::GUI::Plater::add_file (this=0x5555602de0d0) at /home/dbuzz/packages/3d/OrcaSlicer/src/slic3r/GUI/Plater.cpp:10269
#13 0x00005555577af3fd in Slic3r::GUI::Plater::priv::on_action_add (this=0x55556048f690) at /home/dbuzz/packages/3d/OrcaSlicer/src/slic3r/GUI/Plater.cpp:6697
#14 0x0000555557863c0f in wxEventFunctorMethod<wxEventTypeTag<Slic3r::GUI::SimpleEvent>, Slic3r::GUI::Plater::priv, Slic3r::GUI::SimpleEvent, Slic3r::GUI::Plater::priv>::operator()
    (this=0x555560aa0b90, handler=0x5555609056c0, event=...) at /home/dbuzz/packages/3d/OrcaSlicer/deps/build/destdir/usr/local/include/wx-3.1/wx/event.h:440
#15 0x000055555b103532 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) ()
#16 0x000055555b10390f in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
#17 0x000055555b103a74 in wxEvtHandler::TryHereOnly(wxEvent&) ()
#18 0x000055555b103b1e in wxEvtHandler::ProcessEventLocally(wxEvent&) ()
#19 0x000055555b103bc9 in wxEvtHandler::ProcessEvent(wxEvent&) ()
#20 0x000055555b1033c3 in wxEvtHandler::ProcessPendingEvents() ()
#21 0x000055555b015087 in wxAppConsoleBase::ProcessPendingEvents() ()
#22 0x000055555af10bd2 in wxApp::DoIdle() ()
#23 0x000055555af10cb7 in wxapp_idle_callback ()
#24 0x00007ffff6d2ca11 in g_main_dispatch (context=0x55555e526f60) at ../../../glib/gmain.c:3476
#25 0x00007ffff6d8846f in g_main_context_dispatch_unlocked (context=0x55555e526f60) at ../../../glib/gmain.c:4284
#26 g_main_context_iterate_unlocked.isra.0 (context=0x55555e526f60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4349
#27 0x00007ffff6d2d46f in g_main_loop_run (loop=0x55555e6bb410) at ../../../glib/gmain.c:4551
#28 0x00007ffff73f61ed in gtk_main () at ../../../gtk/gtkmain.c:1329
#29 0x000055555af217a5 in wxGUIEventLoop::DoRun() ()
#30 0x000055555b04b901 in wxEventLoopBase::Run() ()
#31 0x000055555b015e5f in wxAppConsoleBase::OnRun() ()
#32 0x000055555b09d748 in wxEntry(int&, wchar_t**) ()
#33 0x00005555576754e8 in Slic3r::GUI::GUI_Run (params=...) at /home/dbuzz/packages/3d/OrcaSlicer/src/slic3r/GUI/GUI_Init.cpp:64
#34 0x0000555555db402c in Slic3r::CLI::run (this=0x7fffffffdac0, argc=1, argv=0x7fffffffdcf8) at /home/dbuzz/packages/3d/OrcaSlicer/src/OrcaSlicer.cpp:1005
#35 0x0000555555dfc9d0 in main (argc=1, argv=0x7fffffffdcf8) at /home/dbuzz/packages/3d/OrcaSlicer/src/OrcaSlicer.cpp:5647

Debug build exit with error on model load due to failed assertion (file
path redacted):

    orca-slicer: <...>/OrcaSlicer/src/libslic3r/Model.cpp:1361: void Slic3r::ModelObject::update_min_max_z(): Assertion `! this->instances.empty()' failed.

Assertion failed due to model->ensure_on_bed() being called for object
which yet to be load from file.

Do not call ensure_on_bed() for models read from file since they may be
read with no default instance.

ensure_on_bed() called later within withing Plater::load_model_objects()
for each object added.
src/slic3r/GUI/Plater.cpp Show resolved Hide resolved
@SoftFever SoftFever added the wait for response waiting for response from PR creator label Apr 3, 2024
Copy link
Owner

@SoftFever SoftFever left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
Thank you

@SoftFever SoftFever merged commit ff7faca into SoftFever:main Apr 4, 2024
12 checks passed
@buzzhuzz buzzhuzz deleted the dbuzz/model-load-in-debug branch April 4, 2024 14:23
powpingdone pushed a commit to powpingdone/OrcaSlicer that referenced this pull request Apr 10, 2024
* Fix model load in debug build

Debug build exit with error on model load due to failed assertion (file
path redacted):

    orca-slicer: <...>/OrcaSlicer/src/libslic3r/Model.cpp:1361: void Slic3r::ModelObject::update_min_max_z(): Assertion `! this->instances.empty()' failed.

Assertion failed due to model->ensure_on_bed() being called for object
which yet to be load from file.

Do not call ensure_on_bed() for models read from file since they may be
read with no default instance.

ensure_on_bed() called later within withing Plater::load_model_objects()
for each object added.

* Rework according to code review comment
powpingdone pushed a commit to powpingdone/OrcaSlicer that referenced this pull request Apr 11, 2024
* Fix model load in debug build

Debug build exit with error on model load due to failed assertion (file
path redacted):

    orca-slicer: <...>/OrcaSlicer/src/libslic3r/Model.cpp:1361: void Slic3r::ModelObject::update_min_max_z(): Assertion `! this->instances.empty()' failed.

Assertion failed due to model->ensure_on_bed() being called for object
which yet to be load from file.

Do not call ensure_on_bed() for models read from file since they may be
read with no default instance.

ensure_on_bed() called later within withing Plater::load_model_objects()
for each object added.

* Rework according to code review comment
SoftFever pushed a commit that referenced this pull request Apr 13, 2024
* Fix model load in debug build

Debug build exit with error on model load due to failed assertion (file
path redacted):

    orca-slicer: <...>/OrcaSlicer/src/libslic3r/Model.cpp:1361: void Slic3r::ModelObject::update_min_max_z(): Assertion `! this->instances.empty()' failed.

Assertion failed due to model->ensure_on_bed() being called for object
which yet to be load from file.

Do not call ensure_on_bed() for models read from file since they may be
read with no default instance.

ensure_on_bed() called later within withing Plater::load_model_objects()
for each object added.

* Rework according to code review comment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wait for response waiting for response from PR creator
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants