Bug report #17515

3D crash with large-ish polygon layer

Added by Nathan Woodrow almost 3 years ago. Updated almost 3 years ago.

Status:Closed
Priority:High
Assignee:Martin Dobias
Category:3D
Affected QGIS version:master Regression?:No
Operating System:Windows Easy fix?:No
Pull Request or Patch supplied:No Resolution:fixed/implemented
Crashes QGIS or corrupts data:Yes Copied to github as #:25412

Description

User Feedback

I will attach a sample data set tonight once I can check it on a different machine.

Report Details

Crash ID: 1fea3d7d16f3409416d569c53f1a54d9e8b2133e

Stack Trace

p2t::Triangle::EdgeIndex shapes.cc:168
p2t::Sweep::IsEdgeSideOfTriangle sweep.cc:164
p2t::Sweep::EdgeEvent sweep.cc:109
p2t::Sweep::EdgeEvent sweep.cc:140
p2t::Sweep::EdgeEvent sweep.cc:156
p2t::Sweep::EdgeEvent sweep.cc:123
p2t::Sweep::EdgeEvent sweep.cc:105
p2t::Sweep::SweepPoints sweep.cc:57
p2t::Sweep::Triangulate sweep.cc:47
p2t::CDT::Triangulate cdt.cc:53
QgsTessellator::addPolygon qgstessellator.cpp:344
QgsTessellatedPolygonGeometry::setPolygons qgstessellatedpolygongeometry.cpp:75
QgsLine3DSymbolEntityNode::renderer qgsline3dsymbol_p.cpp:145
QgsLine3DSymbolEntityNode::QgsLine3DSymbolEntityNode qgsline3dsymbol_p.cpp:91
QgsLine3DSymbolEntity::addEntityForNotSelectedLines qgsline3dsymbol_p.cpp:83
QgsLine3DSymbolEntity::QgsLine3DSymbolEntity qgsline3dsymbol_p.cpp:34
QgsVectorLayer3DRenderer::createEntity qgsvectorlayer3drenderer.cpp:89
Qgs3DMapScene::addLayerEntity qgs3dmapscene.cpp:370
Qgs3DMapScene::onLayerRenderer3DChanged qgs3dmapscene.cpp:335
QtPrivate::FunctorCall<QtPrivate::IndexesList<>,QtPrivate::List<>,void,void (__cdecl Qgs3DMapScene::*)(void) __ptr64>::call qobjectdefs_impl.h:136
QtPrivate::FunctionPointer<void (__cdecl Qgs3DMapScene::*)(void) __ptr64>::call<QtPrivate::List<>,void> qobjectdefs_impl.h:170
QtPrivate::QSlotObject<void (__cdecl Qgs3DMapScene::*)(void) __ptr64,QtPrivate::List<>,void>::impl qobject_impl.h:121
QMetaObject::activate :
QgsMapLayer::renderer3DChanged moc_qgsmaplayer.cpp:485
QgsMapLayer::setRenderer3D qgsmaplayer.cpp:1703
QgsVectorLayer3DRendererWidget::apply qgsvectorlayer3drendererwidget.cpp:167
QgsLayerStylingWidget::apply qgslayerstylingwidget.cpp:270
QtPrivate::FunctorCall<QtPrivate::IndexesList<>,QtPrivate::List<>,void,void (__cdecl QgsLayerStylingWidget::*)(void) __ptr64>::call qobjectdefs_impl.h:136
QtPrivate::FunctionPointer<void (__cdecl QgsLayerStylingWidget::*)(void) __ptr64>::call<QtPrivate::List<>,void> qobjectdefs_impl.h:170
QtPrivate::QSlotObject<void (__cdecl QgsLayerStylingWidget::*)(void) __ptr64,QtPrivate::List<>,void>::impl qobject_impl.h:121
QMetaObject::activate :
QTimer::timerEvent :
QObject::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify qgsapplication.cpp:316
QCoreApplication::notifyInternal2 :
QEventDispatcherWin32Private::sendTimerEvent :
QEventDispatcherWin32::processEvents :
CallWindowProcW :
DispatchMessageW :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QCoreApplication::exec :
main main.cpp:1398
WinMain mainwin.cpp:128
__scrt_common_main_seh exe_common.inl:253
BaseThreadInitThunk :
RtlUserThreadStart :

QGIS Info
QGIS Version: 2.99.0-Master
QGIS code revision: c321700ada
Compiled against Qt: 5.9.2
Running against Qt: 5.9.2
Compiled against GDAL: 2.2.2
Running against GDAL: 2.2.2

System Info
CPU Type: x86_64
Kernel Type: winnt
Kernel Version: 10.0.15063

Associated revisions

Revision 7bce7ea9
Added by Martin Dobias almost 3 years ago

[3d] Fix crash in tessellator with near coords (fixes #17286, fixes #17515)

As the readme of poly2tri library says: "Poly2Tri does not support repeat points within epsilon."

When the coordinates are very near to each other, we get crashes in triangulation code.
To prevent that, we try to simplify geometries to hopefully fix the problem automatically,
if that fails we just skip the polygon as the last resort.

Usually this happens if user tries to use 3D renderer on unprojected lat/lon coordinates.

History

#1 Updated by Giovanni Manghi almost 3 years ago

  • Crashes QGIS or corrupts data changed from No to Yes
  • Priority changed from Normal to High

#2 Updated by Martin Dobias almost 3 years ago

  • % Done changed from 0 to 100
  • Status changed from Open to Closed

#3 Updated by Giovanni Manghi almost 3 years ago

  • Resolution set to fixed/implemented

Also available in: Atom PDF