Bug report #1159

Identify tool with on-the-fly projection can crash

Added by barryrowlingson - about 12 years ago. Updated about 11 years ago.

Status:Closed
Priority:Low
Assignee:Tom Elwertowski
Category:Projection Support
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

Description

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.

History

#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.

#2 Updated by Tom Elwertowski about 12 years ago

  • Resolution set to fixed
  • Status changed from Open to Closed

Fixed by 5facf32f (SVN r9321).

Also added application-wide exception handler for events in b254446b (SVN r9320).

#3 Updated by Anonymous about 11 years ago

Milestone Version 1.0.0 deleted

Also available in: Atom PDF