-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Slic3r hangs with Strawberry Perl 5.24.0.1 / 64bit #3561
Comments
Tested with Strawberry 5.18.4.1, 5.20.0.1, 5.20.2.1, 5.24.0.1. I created a test case to test for the broken C++ exceptions: |
Indeed, I have not had the usual hangup of a test case of the Wx package with Strawberry Perl 5.18.4.1 64bit. |
Upstream report: https://rt.cpan.org/Public/Bug/Display.html?id=118635 |
A possible solution is to use the Visual Studio perl builds. https://bintray.com/bubnikv/wxPerl-for-Slic3r-with-VisualStudio/wperl |
It's not specifically Perl, it's GCC and the exception model used with MinGW-GCC (SJLJ). Specifically, GCC > 4.8 with sjlj has this bug (and it affects more than Slic3r). Newer Mingw-GCC versions (>5.4.0) have SEH exceptions enabled and those should be used instead of SJLJ. I've modified Perl-Dist-Strawberry to use Mingw64 6.3.0 with SEH exceptions and stripped out most of the unused modules (that aren't in CORE anyway). There were some other "interesting" things I had to deal with (at least on my system). https://bintray.com/lordofhyphens/Slic3r/download_file?file_path=slic3r-perl-5.24.1.4-64bit-portable.zip We can stop using our version after an upstream version of Strawberry Perl uses one of the SEH builds or we shed the need for perl. |
Slic3r hangs when a C++ exception is thrown / catched and a subsequent perl croak() function is executed. This makes a 64bit build on Windows / Strawberry Perl hang every time a c++ exception is used to relay a return value. For example, Slic3r hangs if objects do not fit the print bed.
The problem is caused by the Strawberry Perl. I don't see a simple cure. In the Prusa3D fork I re-wrote the most critical C++ code (automatic component placement on the bed, print validation) to not throw exceptions, but my gut feeling is this is not enough. Considering to prepare a "Vojtech's own Perl" distribution for Windows 64bit and Visual Studio 2013, containing all the libraries precompiled.
The text was updated successfully, but these errors were encountered: