Skip to content
This repository has been archived by the owner on Jul 24, 2021. It is now read-only.

Crash after downloading OSM data #2317

Closed
openstreetmap-trac opened this issue Jul 23, 2021 · 4 comments
Closed

Crash after downloading OSM data #2317

openstreetmap-trac opened this issue Jul 23, 2021 · 4 comments

Comments

@openstreetmap-trac
Copy link

Reporter: tom_verbeure[at]yahoo.com
[Submitted to the original trac issue database at 7.19am, Saturday, 26th September 2009]

  • MacOS

  • version 0.14, compiled from source

  • QT 4.5.1

Repro steps (consistent):

  • Import file skeggs.gpx (attached)
  • zoom out 5 times or so
  • "Download More"
  • Zoom in
  • Crash
Reading symbols for shared libraries . done
****  "2009-09-26T05:00:39"  -- Starting  "Merkaartor 0.14" 
------- "using QT version 4.5.1 (built with 4.5.1)" 
------- on Mac OS/X 
MerkaartorPreferences::fromOsmPref : "GET /api/0.6/user/preferences/" 
Downloader::go:  "/api/0.6/map?bbox=-122.344287,37.391290,-122.297177,37.425979" 
Downloader::on_responseHeaderReceived:  200 "OK" 
../include/ggl/algorithms/overlay/traverse.hpp:150: failed assertion `i++ <= intersection_points.size()'

Program received signal SIGABRT, Aborted.
0x90ef4e42 in __kill ()
(gdb) bt
#0  0x90ef4e42 in __kill ()
#1  0x90ef4e34 in kill$UNIX2003 ()
#2  0x90f6723a in raise ()
#3  0x90f73679 in abort ()
#4  0x002abbed in __eprintf (string=0x0, expression=0x0, line=0, filename=0x0) at /var/tmp/gcc/gcc-5493~1/src/gcc/libgcc2.c:1838
#5  0x0014d1a5 in ggl::traverse<ggl::linear_ring<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::allocator>, ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, ggl::box<ggl::point_xy<double, ggl::cs::cartesian> >, std::deque<ggl::detail::intersection::intersection_point<ggl::point_xy<double, ggl::cs::cartesian> >, std::allocator<ggl::detail::intersection::intersection_point<ggl::point_xy<double, ggl::cs::cartesian> > > >, std::back_insert_iterator<std::vector<ggl::linear_ring<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::allocator>, std::allocator<ggl::linear_ring<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::allocator> > > > > (geometry1=@0xbfffcf74, geometry2=@0xbfffcf10, direction=-1, intersection_points=@0xbfffcdb4, out={<> = {<No data fields>}, container = 0xbfffcdf8}) at traverse.hpp:150
#6  0x00152d9a in ggl::detail::intersection::intersection_polygon_box<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, ggl::box<ggl::point_xy<double, ggl::cs::cartesian> >, std::back_insert_iterator<std::vector<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, std::allocator<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator> > > >, ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator> >::apply (polygon=@0xbfffcf74, box=@0xbfffcf10, out={<> = {<No data fields>}, container = 0xbfffcf68}) at intersection.hpp:218
#7  0x00152f1b in ggl::dispatch::intersection_reversed<ggl::box_tag, ggl::polygon_tag, ggl::polygon_tag, ggl::box<ggl::point_xy<double, ggl::cs::cartesian> >, ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, std::back_insert_iterator<std::vector<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, std::allocator<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator> > > >, ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator> >::apply (g1=@0xbfffcf10, g2=@0xbfffcf74, out={<> = {<No data fields>}, container = 0xbfffcf68}) at intersection.hpp:380
#8  0x00152f3d in ggl::intersection<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, ggl::box<ggl::point_xy<double, ggl::cs::cartesian> >, ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, std::back_insert_iterator<std::vector<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator>, std::allocator<ggl::polygon<ggl::point_xy<double, ggl::cs::cartesian>, std::vector, std::vector, std::allocator, std::allocator> > > > > (geometry1=@0xbfffcf10, geometry2=@0xbfffcf74, out={<> = {<No data fields>}, container = 0xbfffcf68}) at intersection.hpp:439
#9  0x0013a6da in Road::buildPath (this=0x1ae000b0, theProjection=@0x18f2f618, cr=@0xbfffd208) at Maps/Road.cpp:624
#10 0x0016f4ca in MapView::buildFeatureSet (this=0x18f2f600) at MapView.cpp:332
#11 0x0016f891 in MapView::paintEvent (this=0x18f2f600, anEvent=0xbfffd8dc) at MapView.cpp:190
#12 0x029eb32e in QWidget::event ()
#13 0x00169839 in MapView::event (this=0x18f2f600, event=0xbfffd8dc) at MapView.cpp:1172
#14 0x0299eb9f in QApplicationPrivate::notify_helper ()
#15 0x029a59dc in QApplication::notify ()
#16 0x034e0ba2 in QCoreApplication::notifyInternal ()
#17 0x02945680 in QWidgetPrivate::qt_widget_event ()
#18 0x9489b13d in DispatchEventToHandlers ()
#19 0x9489a57b in SendEventToEventTargetInternal ()
#20 0x9489a3e0 in SendEventToEventTargetWithOptions ()
#21 0x948bdded in HIView::SendDraw ()
#22 0x948bd8c6 in HIView::RecursiveDrawComposited ()
#23 0x948bda2f in HIView::RecursiveDrawComposited ()
#24 0x948bda2f in HIView::RecursiveDrawComposited ()
#25 0x948bda2f in HIView::RecursiveDrawComposited ()
#26 0x948bcccc in HIView::DrawComposited ()
#27 0x948bc9df in HIView::Draw ()
#28 0x948bc92f in HIView::Render ()
#29 0x948c4d67 in FlushWindowObject ()
#30 0x948c477e in FlushAllBuffers ()
#31 0x97091772 in __CFRunLoopDoObservers ()
#32 0x970929a2 in CFRunLoopRunSpecific ()
#33 0x97093aa8 in CFRunLoopRunInMode ()
#34 0x948c32ac in RunCurrentEventLoopInMode ()
#35 0x948c2ffe in ReceiveNextEventCommon ()
#36 0x94a06377 in ReceiveNextEvent ()
#37 0x0294a699 in QEventDispatcherMac::processEvents ()
#38 0x034e0151 in QEventLoop::processEvents ()
#39 0x034e02fd in QEventLoop::exec ()
#40 0x034e414e in QCoreApplication::exec ()
#41 0x001ca547 in main (argc=1, argv=0xbffff03c) at Main.cpp:201
(gdb) 
```}
@openstreetmap-trac
Copy link
Author

Author: tom_verbeure[at]yahoo.com
[Added to the original trac issue at 5.00pm, Saturday, 26th September 2009]

I tried this out on the released 0.14 version of Merkaartor on Windows. It has the same crashing behavior.

@openstreetmap-trac
Copy link
Author

Author: tom_verbeure[at]yahoo.com
[Added to the original trac issue at 1.49am, Monday, 28th September 2009]

It seems to crash on the following way: [http://www.openstreetmap.org/?way=25797673]

Looks like this way is using a hack to cut out an inner hole instead of using a multi-polygon, so this is likely the reason for the crash. One speculation further: this may very well be a case of ggl not knowing how to deal with such polygons...

It's tempting to just fix the polygon and move on, but that would obviously make the bug unreproducable, so I'll refrain from that for now...

@openstreetmap-trac
Copy link
Author

Author: Koying
[Added to the original trac issue at 11.05am, Tuesday, 29th September 2009]

That's very ugly indeed...

I'll check if updating ggl would solve the problem.

@openstreetmap-trac
Copy link
Author

Author: koying
[Added to the original trac issue at 12.16pm, Sunday, 18th October 2009]

(In [18201]) FIX : crash with self-intersecting polygons (fixes #2317)
UPD : ggl sync

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant