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
Infinite loop in mapserver::curve3_div::recursive_bezier with nan values drawing labels #3862
Comments
Author: dfuhry $ diff new/mapserver-6.0.0-rc1/renderers/agg/include/agg_conv_curve.h orig/mapserver-6.0.0-rc1/renderers/agg/include/agg_conv_curve.h < m_curve3.init(m_last_x, m_last_y,
|
Author: tbonfort Can you provide a test case that reproduces this please? |
no response from original reporter, closing. |
Hi Thomas, I hit this bug again in 6.2.1 on Linux. I tried creating a simple single layer shapefile testcase but the bug failed to manifest itself there. It is somewhat fickle so I assume might be dependent on previous items in the label cache. Below is a backtrace and following that, gdb's "info locals" output from frames 41 (msDrawLabelCache), 40 (msDrawText), and 39 (agg2RenderGlyphs). The first obvious appearance of nan values are in msDrawLabelCache's metrics_poly.bounds.{minx,miny,maxx,maxy} and metrics_points[*].{x,y}, and the second are in msDrawText's s.rotation, x, and y. Not sure which (if either) of these is necessarily the root problem of the subsequent (near?) infinite recursion / looping.
|
Reporter: dfuhry
Date: 2011/05/07 - 20:09
Trac URL: http://trac.osgeo.org/mapserver/ticket/3862
#0 mapserver::calc_sq_distance (x1=-nan(0x8000000000000),
#1 0x0000000000599016 in mapserver::curve3_div::recursive_bezier (
#2 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#3 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#4 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
---Type to continue, or q to quit---
#5 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#6 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#7 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#8 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#9 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
---Type to continue, or q to quit---
x3=-nan(0x8000000000000), y3=-nan(0x8000000000000), level=22)
at renderers/agg/src/agg_curves.cpp:227
#10 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#11 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#12 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#13 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#14 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
---Type to continue, or q to quit---
this=0x7fffffffd848, x1=-nan(0x8000000000000), y1=-nan(0x8000000000000),
x2=-nan(0x8000000000000), y2=-nan(0x8000000000000),
x3=-nan(0x8000000000000), y3=-nan(0x8000000000000), level=17)
at renderers/agg/src/agg_curves.cpp:228
#15 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#16 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#17 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#18 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
---Type to continue, or q to quit---
at renderers/agg/src/agg_curves.cpp:228
#19 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#20 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#21 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#22 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#23 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
---Type to continue, or q to quit---
x2=-nan(0x8000000000000), y2=-nan(0x8000000000000),
x3=-nan(0x8000000000000), y3=-nan(0x8000000000000), level=8)
at renderers/agg/src/agg_curves.cpp:228
#24 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#25 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#26 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#27 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
---Type to continue, or q to quit---
#28 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#29 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#30 0x00000000005990ea in mapserver::curve3_div::recursive_bezier (
#31 0x00000000005990ac in mapserver::curve3_div::recursive_bezier (
#32 0x0000000000599178 in mapserver::curve3_div::bezier (this=0x7fffffffd848,
---Type to continue, or q to quit---
x3=-nan(0x8000000000000), y3=-nan(0x8000000000000))
at renderers/agg/src/agg_curves.cpp:237
#33 0x0000000000598b54 in mapserver::curve3_div::init (this=0x7fffffffd848,
#34 0x000000000055f922 in mapserver::curve3::init (this=0x7fffffffd7c8,
#35 0x000000000056bd8c in mapserver::conv_curve<mapserver::serialized_integer_path_adaptor<short, 6u>, mapserver::curve3, mapserver::curve4>::vertex (
#36 0x00000000005678d6 in mapserver::conv_transform<mapserver::conv_curve<mapserver::serialized_integer_path_adaptor<short, 6u>, mapserver::curve3, mapserver::curve4>, mapserver::trans_affine>::vertex (this=0x7fffffffdab0,
#37 0x00000000005631ce in mapserver::path_base<mapserver::vertex_block_storage<double, 8u, 256u> >::concat_path<mapserver::conv_transform<mapserver::conv_curve<---Type to continue, or q to quit---
mapserver::serialized_integer_path_adaptor<short, 6u>, mapserver::curve3, mapserver::curve4>, mapserver::trans_affine> > (this=0x7fffffffda80, vs=...,
path_id=0) at renderers/agg/include/agg_path_storage.h:726
#38 0x0000000000558cd7 in agg2RenderGlyphs (img=0x821a30,
#39 0x000000000050586e in msDrawText (image=0x821a30, labelPnt=...,
#40 0x000000000048ec35 in msDrawLabelCache (image=0x821a30, map=0x81a360)
#41 0x0000000000483885 in msDrawMap (map=0x81a360, querymap=0) at mapdraw.c:475
#42 0x000000000041a550 in main (argc=2, argv=0x7fffffffe5c8) at mapserv.c:1407
The text was updated successfully, but these errors were encountered: