mapnik / python-mapnik

Python bindings for mapnik
GNU Lesser General Public License v2.1
157 stars 91 forks source link

TextSymbolizer with no face_name causes crash #217

Open larsga opened 4 years ago

larsga commented 4 years ago

I tried creating a TextSymbolizer without specifying the face_name property. This caused a crash as follows:

VM Regions Near 0:
--> 
    __TEXT                 00000001084bd000-00000001084bf000 [    8K] r-x/rwx SM=COW  /usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libmapnik.dylib                 0x00000001091271fd mapnik::base_symbolizer_helper::base_symbolizer_helper(mapnik::symbolizer_base const&, mapnik::feature_impl const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mapnik::value_adl_barrier::value, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mapnik::value_adl_barrier::value> > > const&, mapnik::proj_transform const&, unsigned int, unsigned int, double, mapnik::view_transform const&, mapnik::box2d<double> const&) + 205
1   libmapnik.dylib                 0x00000001091286c5 mapnik::text_symbolizer_helper::text_symbolizer_helper<mapnik::face_manager, mapnik::label_collision_detector4>(mapnik::text_symbolizer const&, mapnik::feature_impl const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mapnik::value_adl_barrier::value, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mapnik::value_adl_barrier::value> > > const&, mapnik::proj_transform const&, unsigned int, unsigned int, double, mapnik::view_transform const&, mapnik::face_manager&, mapnik::label_collision_detector4&, mapnik::box2d<double> const&, agg::trans_affine const&) + 69
2   libmapnik.dylib                 0x00000001096e8e05 mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4>::process(mapnik::text_symbolizer const&, mapnik::feature_impl&, mapnik::proj_transform const&) + 405
3   libmapnik.dylib                 0x0000000108fcace5 mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::render_style(mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4>&, mapnik::feature_type_style const*, mapnik::rule_cache const&, std::__1::shared_ptr<mapnik::Featureset>, mapnik::proj_transform const&) + 2613
4   libmapnik.dylib                 0x0000000108fc9c90 mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::render_material(mapnik::layer_rendering_material&, mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4>&) + 2224
5   libmapnik.dylib                 0x0000000108fc81b5 mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double) + 709
6   _mapnik.so                      0x00000001089ab2a1 render(mapnik::Map const&, mapnik::image_any&, double, unsigned int, unsigned int) + 161
7   _mapnik.so                      0x00000001089ae051 render_to_file1(mapnik::Map const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 257
8   _mapnik.so                      0x00000001089bbac6 boost::python::detail::caller_arity<3u>::impl<void (*)(mapnik::Map const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), boost::python::default_call_policies, boost::mpl::vector4<void, mapnik::Map const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&> >::operator()(_object*, _object*) + 326
9   _mapnik.so                      0x0000000108a9548e boost::python::objects::function::call(_object*, _object*) const + 798
10  _mapnik.so                      0x0000000108a9789a boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) + 26
11  _mapnik.so                      0x0000000108a9e3a3 boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const + 67
12  _mapnik.so                      0x00000001089bbda6 boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<std::runtime_error, void (*)(std::runtime_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(std::runtime_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) + 22
13  _mapnik.so                      0x0000000108a9e38b boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const + 43
14  _mapnik.so                      0x00000001089bbe76 boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<mapnik::value_error, void (*)(mapnik::value_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(mapnik::value_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) + 22
15  _mapnik.so                      0x0000000108a9e38b boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const + 43
16  _mapnik.so                      0x00000001089bbf46 boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<std::out_of_range, void (*)(std::out_of_range const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(std::out_of_range const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) + 22
17  _mapnik.so                      0x0000000108a9e38b boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const + 43
18  _mapnik.so                      0x00000001089bc016 boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<std::exception, void (*)(std::exception const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(std::exception const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) + 22
19  _mapnik.so                      0x0000000108a9e143 boost::python::handle_exception_impl(boost::function0<void>) + 51
20  _mapnik.so                      0x0000000108a972b3 boost::python::objects::function_call(_object*, _object*, _object*) + 83
21  org.python.python               0x00000001084d1f73 PyObject_Call + 97
22  org.python.python               0x000000010854e3d7 PyEval_EvalFrameEx + 19980
23  org.python.python               0x000000010855264d fast_function + 190
24  org.python.python               0x000000010854e29c PyEval_EvalFrameEx + 19665
25  org.python.python               0x000000010854939a PyEval_EvalCodeEx + 1555
26  org.python.python               0x00000001085526ab fast_function + 284
27  org.python.python               0x000000010854e29c PyEval_EvalFrameEx + 19665
28  org.python.python               0x000000010854939a PyEval_EvalCodeEx + 1555
29  org.python.python               0x0000000108548d81 PyEval_EvalCode + 32
30  org.python.python               0x000000010856abaa run_mod + 49
31  org.python.python               0x000000010856ac51 PyRun_FileExFlags + 130
32  org.python.python               0x000000010856a7d0 PyRun_SimpleFileExFlags + 718
33  org.python.python               0x000000010857c166 Py_Main + 3134
34  libdyld.dylib                   0x00007fff5fcb83d5 start + 1
larsga commented 4 years ago

ShieldSymbolizer seems to have the exact same problem.