Bug report #1159
Identify tool with on-the-fly projection can crash
|Affected QGIS version:||Regression?:||No|
|Operating System:||All||Easy fix?:||No|
|Pull Request or Patch supplied:||Resolution:||fixed|
|Crashes QGIS or corrupts data:||Copied to github as #:||11219|
I loaded a world shapefile (downloaded from here http://www.cipotato.org/diva/data/moredata.htm), then set the projection to 164 - US National Atlas Equal Area (from the Projected Coord Systems: Lambert Azimuthal Equal Area category) and set on-the-fly projection.
Do 'Zoom to Layer Extent' on the world layer. Now you get a US-centric circular map of the world.
Using the Identify tool on the polygons works but is very slow. It's not a massive dataset but maybe the point-in-polygon projection calculations are complex. Never mind. If you click outside the circle of the map Qgis crashes on Windows with a Visual C++ Runtime Library Error. I'm guessing it's an arithmetic problem when converting from a screen coord that doesn't have a piece of the world under it.
Haven't tested on Linux yet.
#1 Updated by Tom Elwertowski about 12 years ago
Happens on Mac too (and most likely all platforms):
Debug: /Users/tce/developer/qgis/trunk/src/core/qgscoordinatetransform.cpp: 498: (transformCoords) Projection failed emitting invalid transform signal: Failed inverse transform of (-5.84894e+08, 6.4696e+08) with error: tolerance condition error Warning: Throwing exception /Users/tce/developer/qgis/trunk/src/core/qgscoordinatetransform.cpp502 Warning: Throwing exception /Users/tce/developer/qgis/trunk/src/core/qgscoordinatetransform.cpp272 Debug: Transform error caught in /Users/tce/developer/qgis/trunk/src/core/qgsmaprenderer.cpp line 630: Failed inverse transform of (-5.84894e+08, 6.4696e+08) with error: tolerance condition error terminate called after throwing an instance of 'QgsCsException' what(): Failed inverse transform of (-5.84894e+08, 6.4696e+08) with error: tolerance condition error Abort trap
There are two things to fix here.
1) QGIS needs an exception handler on the main event loop so that an exception alert is displayed and the user is allowed to continue without crashing.
2) The Identify code ought to handle this specific exception and report "No features found" much as it does if you click above or below the poles using an unprojected map.