supermerill / SuperSlicer

G-code generator for 3D printers (Prusa, Voron, Creality, etc.)
4.06k stars 516 forks source link

SuperSlicer (2.4.58.0) crashes on startup #2564

Open msrd0 opened 2 years ago

msrd0 commented 2 years ago

What happened?

When starting superslicer, it opens the loading screen, then the main screen and then immediately crashes. This is the backtrace:

#0  0x00007ffff27e934c in __pthread_kill_implementation () at /usr/lib/libc.so.6
#1  0x00007ffff279c4b8 in raise () at /usr/lib/libc.so.6
#2  0x00007ffff2786534 in abort () at /usr/lib/libc.so.6
#3  0x00007ffff7df17ee in __gnu_cxx::__verbose_terminate_handler() () at /usr/src/debug/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#4  0x00007ffff7dfdc4c in __cxxabiv1::__terminate(void (*)()) (handler=<optimized out>) at /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
#5  0x00007ffff7dfdcb9 in std::terminate() () at /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58
#6  0x0000555556008e64 in Slic3r::GUI::Plater::priv::~priv() ()
#7  0x000055555603bf91 in Slic3r::GUI::Plater::~Plater() ()
#8  0x000055555603bfc9 in Slic3r::GUI::Plater::~Plater() ()
#9  0x00007ffff39f767b in wxBookCtrlBase::DeletePage(unsigned long) (this=0x555557c600a0, nPage=<optimized out>) at ./src/common/bookctrl.cpp:384
#10 0x00007ffff39b162f in wxNotebook::DeleteAllPages() (this=0x555557c600a0) at ./src/gtk/notebook.cpp:413
#11 0x00007ffff39b051b in wxNotebook::~wxNotebook() (this=0x555557c600a0) at ./src/gtk/notebook.cpp:163
#12 0x00007ffff39b05f9 in wxNotebook::~wxNotebook() (this=0x555557c600a0) at ./src/gtk/notebook.cpp:155
#13 0x00007ffff3ae310f in wxWindowBase::Destroy() (this=0x555557c600a0) at ./src/common/wincmn.cpp:568
#14 wxWindowBase::DestroyChildren() (this=0x555557a54190) at ./src/common/wincmn.cpp:600
#15 0x00007ffff395961b in wxWindow::~wxWindow() (this=0x555557a54190) at ./src/gtk/window.cpp:2750
#16 0x0000555555ff0029 in Slic3r::GUI::MainFrame::~MainFrame() ()
#17 0x00007ffff39f10b4 in wxAppBase::DeleteAllTLWs() (this=<optimized out>) at ./src/common/appcmn.cpp:137
#18 wxAppBase::CleanUp() (this=0x555556f0ca30) at ./src/common/appcmn.cpp:150
#19 0x00007ffff3e83e52 in wxEntryCleanup() () at ./src/common/init.cpp:448
#20 0x00007ffff3e83ff5 in wxUninitialize() () at ./src/common/init.cpp:565
#21 wxInitializer::~wxInitializer() (this=0x7fffffff57c0) at ./include/wx/init.h:109
#22 wxEntry(int&, wchar_t**) (argc=@0x7ffff3fd5218: 1, argv=<optimized out>) at ./src/common/init.cpp:507
#23 0x0000555555f9e0bd in Slic3r::GUI::GUI_Run(Slic3r::GUI::GUI_InitParams&) ()
#24 0x0000555555780125 in Slic3r::CLI::run(int, char**) ()
#25 0x0000555555782d38 in main ()

Project file & How to reproduce

Just start superslicer

Version

2.4.58.0

Operating system

ArchLinux 5.16.16-zen1-1-zen

Printer model

No response

supermerill commented 2 years ago

The 2.4.58.0 has many bugs. Can you try a more recent one, like the 2.5.58.2, from a nightly? (note that i don't know what/how you got it, so i assume it's an appimage from github) (https://github.com/supermerill/SuperSlicer/suites/5761699031/artifacts/191585336)

msrd0 commented 2 years ago

I get the same problem with 2.4.58.1 (I compiled it from source), I somehow must've missed that there was a newer tag before. I also tried compiling the master branch but it failed with some linker error.

supermerill commented 2 years ago

If you compile, can you try with the nightly_dev branch?

msrd0 commented 2 years ago

I tried the nightly_dev branch, same crash. It says terminate called without an active exception right before it crashes (with SIGABRT), not sure how helpful that is.

supermerill commented 2 years ago

not very helpful, as the stacktrace show an error after the crash, hiding the problem. Did you compile whith debug flag?

msrd0 commented 2 years ago

yes I compiled with with debug flag in release mode (-O2 -g)

msrd0 commented 2 years ago

I managed to get a more complete backtrace:


#0  0x00007ffff27e934c in __pthread_kill_implementation () at /usr/lib/libc.so.6
#1  0x00007ffff279c4b8 in raise () at /usr/lib/libc.so.6
#2  0x00007ffff2786534 in abort () at /usr/lib/libc.so.6
#3  0x00007ffff7df17ee in __gnu_cxx::__verbose_terminate_handler() () at /usr/src/debug/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#4  0x00007ffff7dfdc4c in __cxxabiv1::__terminate(void (*)()) (handler=<optimized out>) at /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
#5  0x00007ffff7dfdcb9 in std::terminate() () at /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58
#6  0x0000555555fa3844 in std::thread::~thread() (this=0x555557ca2690) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/std_thread.h:152
#7  Slic3r::GUI::Mouse3DController::~Mouse3DController() (this=0x555557ca2510) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/Mouse3DController.hpp:29
#8  Slic3r::GUI::Plater::priv::~priv() (this=0x555557c9cfa0) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/Plater.cpp:2275
#9  0x0000555555fd64ec in std::default_delete<Slic3r::GUI::Plater::priv>::operator()(Slic3r::GUI::Plater::priv*) const (this=0x555557b06f88, __ptr=0x555557c9cfa0) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/unique_ptr.h:85
#10 std::unique_ptr<Slic3r::GUI::Plater::priv, std::default_delete<Slic3r::GUI::Plater::priv> >::~unique_ptr() (this=0x555557b06f88) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/unique_ptr.h:361
#11 Slic3r::GUI::Plater::~Plater() (this=0x555557b06cd0) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/Plater.hpp:146
#12 0x0000555555fd651d in Slic3r::GUI::Plater::~Plater() (this=0x555557b06cd0) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/Plater.hpp:146
#13 0x00007ffff39f767b in wxBookCtrlBase::DeletePage(unsigned long) (this=0x555557c12000, nPage=<optimized out>) at ./src/common/bookctrl.cpp:384
#14 0x00007ffff39b162f in wxNotebook::DeleteAllPages() (this=0x555557c12000) at ./src/gtk/notebook.cpp:413
#15 0x00007ffff39b051b in wxNotebook::~wxNotebook() (this=0x555557c12000) at ./src/gtk/notebook.cpp:163
#16 0x00007ffff39b05f9 in wxNotebook::~wxNotebook() (this=0x555557c12000) at ./src/gtk/notebook.cpp:155
#17 0x00007ffff3ae310f in wxWindowBase::Destroy() (this=0x555557c12000) at ./src/common/wincmn.cpp:568
#18 wxWindowBase::DestroyChildren() (this=0x5555574a0190) at ./src/common/wincmn.cpp:600
#19 0x00007ffff395961b in wxWindow::~wxWindow() (this=0x5555574a0190) at ./src/gtk/window.cpp:2750
#20 0x0000555555f8bb9d in Slic3r::GUI::MainFrame::~MainFrame() (this=0x5555574a0190) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/MainFrame.hpp:163
#21 0x00007ffff39f10b4 in wxAppBase::DeleteAllTLWs() (this=<optimized out>) at ./src/common/appcmn.cpp:137
#22 wxAppBase::CleanUp() (this=0x555556ef5c50) at ./src/common/appcmn.cpp:150
#23 0x00007ffff3e83e52 in wxEntryCleanup() () at ./src/common/init.cpp:448
#24 0x00007ffff3e83ff5 in wxUninitialize() () at ./src/common/init.cpp:565
#25 wxInitializer::~wxInitializer() (this=0x7fffffff5490) at ./include/wx/init.h:109
#26 wxEntry(int&, wchar_t**) (argc=@0x7ffff3fd5218: 1, argv=<optimized out>) at ./src/common/init.cpp:507
#27 0x0000555555f39959 in Slic3r::GUI::GUI_Run(Slic3r::GUI::GUI_InitParams&) (params=...) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/GUI_Init.cpp:54
#28 0x0000555555774b97 in Slic3r::CLI::run(int, char**) (this=<optimized out>, argc=1, argv=0x7fffffffdf98) at /usr/src/debug/SuperSlicer-nightly_dev/src/PrusaSlicer.cpp:625
#29 0x0000555555778bee in main(int, char**) (argc=351389, argv=0x6) at /usr/src/debug/SuperSlicer-nightly_dev/src/PrusaSlicer.cpp:858
supermerill commented 2 years ago

sadly, i don't think this stacktrace is the useful one (unless you have a 3D mouse). what's going on is probably an execption is a thread that makes the app terminate. What it's displayed here is the stacktrace of the last thread to be killed (the gui one).

Ideally, can you launch it in a debugger and makes it to stop at the first exception raised? that stacktrace should be much more useful.

msrd0 commented 2 years ago

You are right, I do not have a 3D mouse. The first exception thrown is this one:


Thread 1 "slic3r_main" hit Catchpoint 1 (exception thrown), 0x00007ffff7dfdf22 in __cxxabiv1::__cxa_throw (obj=0x555558a863d0, tinfo=0x7ffff7c837d0 <typeinfo for boost::filesystem::filesystem_error>, dest=0x7ffff7c6b0a0 <boost::filesystem::filesystem_error::~filesystem_error()>) at /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_throw.cc:78
78      /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_throw.cc: No such file or directory.
(gdb) bt
#0  0x00007ffff7dfdf22 in __cxxabiv1::__cxa_throw(void*, std::type_info*, void (*)(void*)) (obj=0x555558a863d0, tinfo=0x7ffff7c837d0 <typeinfo for boost::filesystem::filesystem_error>, dest=0x7ffff7c6b0a0 <boost::filesystem::filesystem_error::~filesystem_error()>)
    at /usr/src/debug/gcc/libstdc++-v3/libsupc++/eh_throw.cc:78
#1  0x00007ffff7c682cf in  () at /usr/lib/libboost_filesystem.so.1.78.0
#2  0x00007ffff7c6e576 in boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, unsigned int, boost::system::error_code*) () at /usr/lib/libboost_filesystem.so.1.78.0
#3  0x0000555556139d98 in boost::filesystem::directory_iterator::directory_iterator(boost::filesystem::path const&, boost::filesystem::directory_options) (this=0x7fffffff4528, p=..., opts=boost::filesystem::directory_options::none)
    at /usr/include/boost/filesystem/directory.hpp:326
#4  Slic3r::GUI::BundleMap::load() () at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/ConfigWizard.cpp:137
#5  0x00005555561519d9 in Slic3r::GUI::ConfigWizard::priv::load_vendors() (this=0x555558a8e800) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/ConfigWizard.cpp:2011
#6  0x0000555556157579 in Slic3r::GUI::ConfigWizard::ConfigWizard(wxWindow*) (this=<optimized out>, parent=<optimized out>) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/ConfigWizard.cpp:2921
#7  0x0000555555f55664 in Slic3r::GUI::GUI_App::run_wizard(Slic3r::GUI::ConfigWizard::RunReason, Slic3r::GUI::ConfigWizard::StartPage) (this=0x555556ef5c50, reason=Slic3r::GUI::ConfigWizard::RR_DATA_EMPTY, start_page=Slic3r::GUI::ConfigWizard::SP_WELCOME)
    at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/GUI_App.cpp:3115
#8  0x0000555555f55b8d in Slic3r::GUI::GUI_App::config_wizard_startup() (this=0x555556ef5c50) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/GUI_App.cpp:3275
#9  0x0000555555f58fc1 in Slic3r::GUI::GUI_App::post_init()::$_1::operator()() const (this=<optimized out>) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/GUI_App.cpp:789
#10 wxAsyncMethodCallEventFunctor<Slic3r::GUI::GUI_App::post_init()::$_1>::Execute() (this=<optimized out>) at /opt/wxgtk-dev/include/wx-3.1/wx/event.h:1551
#11 0x00007ffff3f38ef1 in wxEvtHandler::TryHereOnly(wxEvent&) (this=0x555556ef5c50, event=warning: RTTI symbol not found for class 'wxAsyncMethodCallEventFunctor<Slic3r::GUI::GUI_App::post_init()::$_1>'
...) at ./src/common/event.cpp:1624
#12 wxEvtHandler::TryBeforeAndHere(wxEvent&) (this=0x555556ef5c50, event=warning: RTTI symbol not found for class 'wxAsyncMethodCallEventFunctor<Slic3r::GUI::GUI_App::post_init()::$_1>'
...) at ./include/wx/event.h:3975
#13 wxEvtHandler::ProcessEventLocally(wxEvent&) (this=0x555556ef5c50, event=warning: RTTI symbol not found for class 'wxAsyncMethodCallEventFunctor<Slic3r::GUI::GUI_App::post_init()::$_1>'
...) at ./src/common/event.cpp:1548
#14 0x00007ffff3f38d10 in wxEvtHandler::ProcessEvent(wxEvent&) (this=0x555556ef5c50, event=warning: RTTI symbol not found for class 'wxAsyncMethodCallEventFunctor<Slic3r::GUI::GUI_App::post_init()::$_1>'
...) at ./src/common/event.cpp:1521
#15 0x00007ffff3f389c4 in wxEvtHandler::ProcessPendingEvents() (this=0x555556ef5c50) at ./src/common/event.cpp:1385
#16 0x00007ffff3e12e8c in wxAppConsoleBase::ProcessPendingEvents() (this=0x555556ef5c50) at ./src/common/appbase.cpp:563
#17 0x00007ffff392a42d in wxApp::DoIdle() (this=0x555556ef5c50) at ./src/gtk/app.cpp:150
#18 0x00007ffff392b8e0 in wxapp_idle_callback(void*) () at ./src/gtk/app.cpp:100
#19 0x00007ffff29d6163 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#20 0x00007ffff2a2c9e9 in  () at /usr/lib/libglib-2.0.so.0
#21 0x00007ffff29d56a3 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#22 0x00007ffff2cf794f in gtk_main () at /usr/lib/libgtk-3.so.0
#23 0x00007ffff3940912 in wxGUIEventLoop::DoRun() (this=0x5555589dab80) at ./src/gtk/evtloop.cpp:61
#24 0x00007ffff3e467a0 in wxEventLoopBase::Run() (this=0x5555589dab80) at ./src/common/evtloopcmn.cpp:87
#25 0x00007ffff3e124a2 in wxAppConsoleBase::MainLoop() (this=0x555556ef5c50) at ./src/common/appbase.cpp:377
#26 0x00007ffff3e83fcc in wxEntry(int&, wchar_t**) (argc=@0x7ffff3fd5218: 1, argv=<optimized out>) at ./src/common/init.cpp:504
#27 0x0000555555f39959 in Slic3r::GUI::GUI_Run(Slic3r::GUI::GUI_InitParams&) (params=...) at /usr/src/debug/SuperSlicer-nightly_dev/src/slic3r/GUI/GUI_Init.cpp:54
#28 0x0000555555774b97 in Slic3r::CLI::run(int, char**) (this=<optimized out>, argc=1, argv=0x7fffffffdf98) at /usr/src/debug/SuperSlicer-nightly_dev/src/PrusaSlicer.cpp:625
#29 0x0000555555778bee in main(int, char**) (argc=-137873456, argv=0x7ffff7c6b0a0 <boost::filesystem::filesystem_error::~filesystem_error()>) at /usr/src/debug/SuperSlicer-nightly_dev/src/PrusaSlicer.cpp:858
supermerill commented 2 years ago

It can't access the resources directory, that shoudl be next to the executable, or can't create/get the user directory. Are you sure you packaged it correctly after compiling?

msrd0 commented 2 years ago

Yes, I used ninja install and enabled SLIC3R_FHS (that worked perfectly for the non-prerelease) and it's installed them to /usr/share/SuperSlicer/, so the resources should be there. And there's nothing weird about my user directory, superslicer should be able to create its config files with no problem.

supermerill commented 2 years ago

I'll add some error gui boxes to avoid a hard crash in this section. Will ping you when the code will be available.

supermerill commented 2 years ago

now, it should show an error at startup, but no crash anymore.

supermerill commented 2 years ago

can you send me your (zipped) config dir, so i can reproduce?

msrd0 commented 2 years ago

It now shows the error message and then continues with the initial configuration dialog eventhough the config directory existed already (looks like it was created Nov 2020, so maybe it was too old? I'd have used the stable releases mostly). Here's my config directory after I launched superslicer, but the error message still appears: https://gigamove.rwth-aachen.de/de/download/447ab6eca39a76b4d3e5e4f1afacfd7a (for some reason you can't upload that to GitHub)

Also, after clicking through the configuration dialog (without changing any options), I'm unable to finish it. Is this intended?

Screenshot_2022-04-03-10-16-43

LuckyTurtleDev commented 2 years ago

SuperSlicer-alpha.zip

The message does also appear at an empty config. But it does not appear again after the wizard.

LuckyTurtleDev commented 2 years ago

Also, after clicking through the configuration dialog (without changing any options), I'm unable to finish it. Is this intended?

I have the same issue. But if you select Define a custom printer profile at Custom Printer you can finish the wizard.