slic3r / Slic3r

Open Source toolpath generator for 3D printers
https://slic3r.org/
GNU Affero General Public License v3.0
3.33k stars 1.3k forks source link

Floating point exception thrown by Slic3r in DLP mode. #4130

Open lordofhyphens opened 7 years ago

lordofhyphens commented 7 years ago

Commit: 7e018f1d381d6b64297abb092399b2a29adf3526 Error: Program terminated with signal SIGFPE, Arithmetic exception.

Core-file:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./slic3r /home/lenox/3d/benchy/files/3DBenchy.stl --export-svg --load /home/len'.
Program terminated with signal SIGFPE, Arithmetic exception.
b#0  0x000055cc29f2433e in Slic3r::FillCubic::_fill_surface_single (this=0x7fa468004620, thickness_layers=1, direction=..., expolygon=..., out=0x7fa4751fa930)
    at /home/lenox/slic3r/xs/src/libslic3r/Fill/FillRectilinear.cpp:528
528     const coord_t x_shift = (coord_t)(scale_(this->z) + range) % (coord_t)(range*3);
[Current thread is 1 (Thread 0x7fa4751fb700 (LWP 16025))]
(gdb) back
#0  0x000055cc29f2433e in Slic3r::FillCubic::_fill_surface_single (this=0x7fa468004620, thickness_layers=1, direction=..., expolygon=..., out=0x7fa4751fa930)
    at /home/lenox/slic3r/xs/src/libslic3r/Fill/FillRectilinear.cpp:528
#1  0x000055cc29f191a8 in Slic3r::Fill::fill_surface (this=0x7fa468004620, surface=...) at /home/lenox/slic3r/xs/src/libslic3r/Fill/Fill.cpp:70
#2  0x000055cc29e830e1 in Slic3r::SLAPrint::_infill_layer (this=0x7ffc10529a60, i=1, _fill=0x55cc2b44ef70) at /home/lenox/slic3r/xs/src/libslic3r/SLAPrint.cpp:197
#3  0x000055cc29e901c8 in boost::_mfi::mf2<void, Slic3r::SLAPrint, unsigned long, Slic3r::Fill const*>::operator() (this=0x7fa4680008c0, p=0x7ffc10529a60, a1=1, a2=0x55cc2b44ef70)
    at /usr/include/boost/bind/mem_fn_template.hpp:280
#4  0x000055cc29e8f5c8 in boost::_bi::list3<boost::_bi::value<Slic3r::SLAPrint*>, boost::arg<1>, boost::_bi::value<Slic3r::Fill*> >::operator()<boost::_mfi::mf2<void, Slic3r::SLAPrint, unsigned long, Slic3r::Fill const*>, boost::_bi::rrlist1<unsigned long> > (this=0x7fa4680008d0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:398
#5  0x000055cc29e8e546 in boost::_bi::bind_t<void, boost::_mfi::mf2<void, Slic3r::SLAPrint, unsigned long, Slic3r::Fill const*>, boost::_bi::list3<boost::_bi::value<Slic3r::SLAPrint*>, boost::arg<1>, boost::_bi::value<Slic3r::Fill*> > >::operator()<unsigned long>(unsigned long&&) (this=0x7fa4680008c0, 
    a1=<unknown type in /mnt/fiver/slic3r/src/slic3r, CU 0x327301, DIE 0x37bea1>) at /usr/include/boost/bind/bind.hpp:1306
#6  0x000055cc29e8d1f0 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, Slic3r::SLAPrint, unsigned long, Slic3r::Fill const*>, boost::_bi::list3<boost::_bi::value<Slic3r::SLAPrint*>, boost::arg<1>, boost::_bi::value<Slic3r::Fill*> > >, void, unsigned long>::invoke (function_obj_ptr=..., a0=1)
    at /usr/include/boost/function/function_template.hpp:159
#7  0x000055cc29e8d872 in boost::function1<void, unsigned long>::operator() (this=0x7fa4751fae30, a0=1) at /usr/include/boost/function/function_template.hpp:771
#8  0x000055cc29e8b6b8 in Slic3r::_parallelize_do<unsigned long>(std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*, boost::mutex*, boost::function<void (unsigned long)>) (queue=0x7ffc10529100, queue_mutex=0x7ffc10528f90, func=...) at /home/lenox/slic3r/xs/src/libslic3r/libslic3r.h:90
#9  0x000055cc29e91abf in boost::_bi::list3<boost::_bi::value<std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*>, boost::_bi::value<boost::mutex*>, boost::_bi::value<boost::function<void (unsigned long)> > >::operator()<void (*)(std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*, boost::mutex*, boost::function<void (unsigned long)>), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*, boost::mutex*, boost::function<void (unsigned long)>), boost::_bi::list0&, int) (this=0x55cc2e09c920, 
    f=@0x55cc2e09c918: 0x55cc29e8b630 <Slic3r::_parallelize_do<unsigned long>(std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*, boost::mutex*, boost::function<void (unsigned long)>)>, a=...) at /usr/include/boost/bind/bind.hpp:398
#10 0x000055cc29e917ff in boost::_bi::bind_t<void, void (*)(std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*, boost::mutex*, boost::function<void (unsigned long)>), boost::_bi::list3<boost::_bi::value<std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*>, boost::_bi::value<boost::mutex*>, boost::_bi::value<boost::function<void (unsigned long)> > > >::operator()() (this=0x55cc2e09c918) at /usr/include/boost/bind/bind.hpp:1294
#11 0x000055cc29e91520 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*, boost::mutex*, boost::function<void (unsigned long)>), boost::_bi::list3<boost::_bi::value<std::queue<unsigned long, std::deque<unsigned long, std::allocator<unsigned long> > >*>, boost::_bi::value<boost::mutex*>, boost::_bi::value<boost::function<void (unsigned long)> > > > >::run() (this=0x55cc2e09c760) at /usr/include/boost/thread/detail/thread.hpp:116
#12 0x00007fa476aa2116 in ?? () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.62.0
#13 0x00007fa476047494 in start_thread (arg=0x7fa4751fb700) at pthread_create.c:333
#14 0x00007fa475a85aff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Config and test STL. 4130.zip

Executed from command line.

jdevelop commented 7 years ago
      Message: Process 12092 (perl-local) of user 1000 dumped core.

                Stack trace of thread 12152:
                #0  0x00007f054b01c343 _ZN6Slic3r5Point13align_to_gridERKS0_S2_ (XS.so)
                #1  0x00007f054b029a53 _ZN6Slic3r13FillHoneycomb20_fill_surface_singleEjRKSt4pairIfNS_5PointEERNS_9ExPolygonEPSt6vectorINS_8PolylineESaIS9_EE (XS.so)
                #2  0x00007f054b0a52f6 _ZN6Slic3r4Fill12fill_surfaceERKNS_7SurfaceE (XS.so)
                #3  0x00007f054b0a653f _ZN6Slic3r8SLAPrint13_infill_layerEmPKNS_4FillE (XS.so)
                #4  0x00007f054b0a8203 _ZN6Slic3r15_parallelize_doImEEvPSt5queueIT_St5dequeIS2_SaIS2_EEEPN5boost5mutexENS8_8functionIFvS2_EEE (XS.so)
                #5  0x00007f054b0a7f5d _ZN5boost6detail11thread_dataINS_3_bi6bind_tIvPFvPSt5queueImSt5dequeImSaImEEEPNS_5mutexENS_8functionIFvmEEEENS2_5list3INS2_5valueIS9_EENSI_I
                #6  0x00007f054b109295 thread_proxy (XS.so)
                #7  0x00007f054d45008a start_thread (libpthread.so.0)
                #8  0x00007f054ca001bf __clone (libc.so.6)

                Stack trace of thread 12094:
                #0  0x00007f054c9f5cbb __poll (libc.so.6)
                #1  0x00007f0546ee5c09 n/a (libglib-2.0.so.0)
                #2  0x00007f0546ee5d1c g_main_context_iteration (libglib-2.0.so.0)
                #3  0x00007f0546ee5d61 n/a (libglib-2.0.so.0)
                #4  0x00007f0546f0cae5 n/a (libglib-2.0.so.0)
                #5  0x00007f054d45008a start_thread (libpthread.so.0)
                #6  0x00007f054ca001bf __clone (libc.so.6)

                Stack trace of thread 12153:
                #0  0x00007f054ca001b1 __clone (libc.so.6)
                #1  0x00007ffc4693a750 n/a (n/a)
                #2  0x00007ffc4693a601 n/a (n/a)
                #3  0x0000000000000000 n/a (n/a)
lordofhyphens commented 7 years ago

Well, part of the problem is that config.layer_height defaults to 0 apparently, so the layer push in the slice() method adds layers until it runs out of memory.

lordofhyphens commented 7 years ago

@jdevelop on the CLI, anyway, you probably want to specify the options manually or generate a Slic3r config and export it and load that on the CLI.

I don't know why the GUI config isn't being loaded.

Looks like I had found a different bug #4139 when debugging your issue by mistake.

lordofhyphens commented 7 years ago

@jdevelop as a short-term workaround, try setting your infill to 100% and rectilinear. Or 0% infill.