Bug report #3439
QGIS crashes when reshaping invalid polygon geometry
Status: | Closed | ||
---|---|---|---|
Priority: | Low | ||
Assignee: | Jürgen Fischer | ||
Category: | Vectors | ||
Affected QGIS version: | Regression?: | No | |
Operating System: | Gentoo | Easy fix?: | No |
Pull Request or Patch supplied: | Resolution: | fixed | |
Crashes QGIS or corrupts data: | Copied to github as #: | 13499 |
Description
GEOS 3.2.2 QGIS r15075
Steps to reproduce:- draw self intersecting polygon;
- use reshape too to reshape it:
Debug: /home/maris/soft/qgis_trunk/src/providers/ogr/qgsogrprovider.cpp: 591: (select) Setting spatial filter using POLYGON((556162.68083173 6356447.94617169, 556162.68083173 6357221.35032134, 557111.30935904 6357221.35032134, 557111.30935904 6356447.94617169, 556162.68083173 6356447.94617169)) ERROR 1: [[TopologyException]]: found non-noded intersection between LINESTRING (556163 6.35744e+06, 555613 6.35629e+06) and LINESTRING (556271 6.35654e+06, 555299 6.35676e+06) at 555784 6.35665e+06 Program received signal SIGSEGV, Segmentation fault. GEOSGeomTypeId_r (extHandle=0xb21c30, g1=0x0) at geos_ts_c.cpp:1296 1296 geos_ts_c.cpp: No such file or directory. in geos_ts_c.cpp (gdb) bt #0 GEOSGeomTypeId_r (extHandle=0xb21c30, g1=0x0) at geos_ts_c.cpp:1296 #3905 0x00007ffff716fff5 in [[QgsGeometry]]::reshapeLine (line=0x25af600, reshapeLineGeos=0x2505cb0) at /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp:5179 #3906 0x00007ffff717086e in [[QgsGeometry]]::reshapePolygon (polygon=0x25b6d10, reshapeLineGeos=0x2505cb0) at /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp:5087 #3907 0x00007ffff7170c2d in [[QgsGeometry]]::reshapeGeometry (this=0xcd31d0, reshapeWithLine=...) at /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp:3280 #3908 0x00000000005a514e in [[QgsMapToolReshape]]::canvasReleaseEvent (this=0xfbc990, e=<value optimized out>) at /home/maris/soft/qgis_trunk/src/app/qgsmaptoolreshape.cpp:104 #3909 0x00007ffff6d28cc8 in [[QgsMapCanvas]]::mouseReleaseEvent (this=0xc4f300, e=<value optimized out>) at /home/maris/soft/qgis_trunk/src/gui/qgsmapcanvas.cpp:921 #3910 0x00007ffff55f0cbd in QWidget::event (this=0xc4f300, event=0x7fffffffc510) at kernel/qwidget.cpp:8200 #3911 0x00007ffff59c4db4 in QFrame::event (this=0xc4f300, e=0x7fffffffc510) at widgets/qframe.cpp:557 #3912 0x00007ffff5c397d1 in QGraphicsView::viewportEvent (this=0xc4f300, event=0x7fffffffc510) at graphicsview/qgraphicsview.cpp:2864 #3913 0x00007ffff624c2e9 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<value optimized out>, receiver=0xc45930, event=0x7fffffffc510) at kernel/qcoreapplication.cpp:847 #10 0x00007ffff5592b0c in QApplicationPrivate::notify_helper (this=0xb58b10, receiver=0xc45930, e=0x7fffffffc510) at kernel/qapplication.cpp:4441 #3914 0x00007ffff55987eb in QApplication::notify (this=0x7fffffffd360, receiver=0xc45930, e=0x7fffffffc510) at kernel/qapplication.cpp:4006 #3915 0x00007ffff714bae6 in [[QgsApplication]]::notify (this=<value optimized out>, receiver=<value optimized out>, event=<value optimized out>) at /home/maris/soft/qgis_trunk/src/core/qgsapplication.cpp:88 #3916 0x00007ffff624c94e in QCoreApplication::notifyInternal (this=0x7fffffffd360, receiver=0xc45930, event=0x7fffffffc510) at kernel/qcoreapplication.cpp:732 #3917 0x00007ffff5596c9c in sendEvent (receiver=0xc45930, event=0x7fffffffc510, alienWidget=0xc45930, nativeWidget=0xd279f0, buttonDown=<value optimized out>, lastMouseReceiver=<value optimized out>, spontaneous=true) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #3918 QApplicationPrivate::sendMouseEvent (receiver=0xc45930, event=0x7fffffffc510, alienWidget=0xc45930,
Depending on self intersecting polygon shape, it migh also show "unknown exception" error. After that, it's impossible to stop reshape tool - ESC doesn't work, right click just gives exception warning. Only way out is to BACKSPACE all nodes till reshaping line contains no more nodes.
Debug: /home/maris/soft/qgis_trunk/src/providers/ogr/qgsogrprovider.cpp: 591: (select) Setting spatial filter using POLYGON((555697.42989796 6358290.82324704, 555697.42989796 6359396.54949225, 556446.66516793 6359396.54949225, 556446.66516793 6358290.82324704, 555697.42989796 6358290.82324704)) Debug: /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp: 93: (throwGEOSException) GEOS exception encountered: [[TopologyException]]: found non-noded intersection between LINESTRING (556107 6.35923e+06, 555867 6.35867e+06) and LINESTRING (556374 6.35902e+06, 556049 6.35918e+06) at 556078 6.35916e+06 Debug: /home/maris/soft/qgis_trunk/src/providers/ogr/qgsogrprovider.cpp: 591: (select) Setting spatial filter using POLYGON((555697.42989796 6358290.82324704, 555697.42989796 6359783.25156708, 556446.66516793 6359783.25156708, 556446.66516793 6358290.82324704, 555697.42989796 6358290.82324704)) Debug: /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp: 93: (throwGEOSException) GEOS exception encountered: [[TopologyException]]: found non-noded intersection between LINESTRING (556107 6.35923e+06, 555867 6.35867e+06) and LINESTRING (556374 6.35902e+06, 556049 6.35918e+06) at 556078 6.35916e+06 Debug: /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp: 6496: (validatePolyline) līnijas 0 segmenti 0 un 4 krustojas 556274.812174, 6358657.66189 Debug: /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp: 6496: (validatePolyline) līnijas 0 segmenti 2 un 4 krustojas 556072.148796, 6359200.42703 Debug: /home/maris/soft/qgis_trunk/src/providers/ogr/qgsogrprovider.cpp: 591: (select) Setting spatial filter using POLYGON((555697.42989796 6358290.82324704, 555697.42989796 6359783.25156708, 556446.66516793 6359783.25156708, 556446.66516793 6358290.82324704, 555697.42989796 6358290.82324704)) Debug: /home/maris/soft/qgis_trunk/src/core/qgsgeometry.cpp: 93: (throwGEOSException) GEOS exception encountered: [[TopologyException]]: found non-noded intersection between LINESTRING (556082 6.35917e+06, 555867 6.35867e+06) and LINESTRING (556087 6.35916e+06, 556049 6.35918e+06) at 556078 6.35916e+06
When reshaping self intersecting line, QGIS just fails silently (with debug in console). Same should happen on incorrect polygons.
Associated revisions
fix #3439
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@15728 c8812cc2-4d05-0410-92ff-de0c093fc19c
fix #3439
git-svn-id: http://svn.osgeo.org/qgis/trunk@15728 c8812cc2-4d05-0410-92ff-de0c093fc19c
History
#1 Updated by Jürgen Fischer over 13 years ago
- Resolution set to fixed
- Status changed from Open to Closed
fixed in 8196c87d (SVN r15729).