qgis / QGIS

QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS)

Home Page:https://qgis.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

3.24.x/3.22.5 has exception "vector too long" on Windows 10

jeremylea opened this issue · comments

What is the bug or the crash?

I have a project with a large number of relatively complex layers, mostly PostgreSQL, but also some files and others, along with some tiled base maps. The project worked fine in 3.22.4, but has an uncaught exception in 3.24, 3.24.1, and 3.22.5 which pops up a dialog of "vector too long". This happens just after the project loads, and after dismissing the exception dialog a couple of times (maybe related to the number of layers with issues?), I can pan and zoom and some other things just fine - I haven't tried anything fancy. However, if I try to exit, even if I discard changes to the project, it pops up again and stops qgis-bin.exe from exiting. The only solution is to kill the task. This doesn't happen with other projects, even a simplified version of the project with issues. However, I've not been able to figure out which layers cause the problem. When I saw the bug in 3.24 I was hoping to find the time to bisect through removing layers, but I haven't yet, but I wanted to report this now that I see it has not been fixed in 3.24.1 and has turned up in 3.22.5. Maybe that particular exception is obvious to someone, especially happening in the exit code path.

Steps to reproduce the issue

I don't have a good reproducible test case. I'll try to install debugging symbols and see if I can catch the exception in a debugger.

Versions

3.24.0, 3.24.1, 3.22.5

Supported QGIS version

  • I'm running a supported QGIS version according to the roadmap.

New profile

  • I tried with a new QGIS profile

Additional context

No response

Have you tried with a clean profile, no plugins installed? This sounds like a plugin issue to me.

I hadn't tried with a new profile. I just did (only in 3.24.1) and the issue is still there. A new profile still has some default plugins, but it happens even with all those unchecked, so they shouldn't be loaded? Should I completely uninstall them?

Which default plugins? The QGIS ones? These should be OK. Normally this is to factor out issues in custom plugins (the ones that end up in \python\plugins

The QGIS project highly values your report and would love to see it addressed. However, this issue has been left in feedback mode for the last 14 days and is being automatically marked as "stale".
If you would like to continue with this issue, please provide any missing information or answer any open questions. If you could resolve the issue yourself meanwhile, please leave a note for future readers with the same problem and close the issue.
In case you should have any uncertainty, please leave a comment and we will be happy to help you proceed with this issue.
If there is no further activity on this issue, it will be closed in a week.

I've finally managed to find a chance to get a debug build running. The exception on trying to close QGIS is thrown in closeProject() -> mOverviewCanvas->setLayers( QList<QgsMapLayer *>() ) -> rect = mMapCanvas->projectExtent(); -> const QgsReferencedRectangle extent = mProject ? mProject->viewSettings()->fullExtent() : QgsProject::instance()->viewSettings()->fullExtent(); -> return QgsReferencedRectangle( QgsMapLayerUtils::combinedExtent( nonBaseMapLayers, mProject->crs(), mProject->transformContext() ), mProject->crs() ); -> QgsMapLayerUtils::combinedExtent(...) -> const QgsRectangle extent = ct.transformBoundingBox( layer->extent() );

The throw is in src\core\proj\qgscoordinatetransform.cpp:557, where nXPoints=-2147483647 and nYPoints=1. The reason for the negative nXPoints is that rect.width()=Inf. I don't know the internals well enough to propose a patch, but I'd say that at the very least there should be some protection against a non-positive nXPoint value. There also should be more protection against infinite rectangles. Also, the catch in src\core\qgsmaplayerutils.cpp:58 should just be catch(...), since it doesn't care what kind of exception was thrown.

What I also cannot figure out is why layers.count() is not zero at this point, because mMapCanvas was cleared before the call to mOverviewCanvas->setLayers( QList<QgsMapLayer *>() ).

Probably the fix for #34518 was what triggered the bug in my project...

The QGIS project highly values your report and would love to see it addressed. However, this issue has been left in feedback mode for the last 14 days and is being automatically marked as "stale".
If you would like to continue with this issue, please provide any missing information or answer any open questions. If you could resolve the issue yourself meanwhile, please leave a note for future readers with the same problem and close the issue.
In case you should have any uncertainty, please leave a comment and we will be happy to help you proceed with this issue.
If there is no further activity on this issue, it will be closed in a week.

Bump

The QGIS project highly values your report and would love to see it addressed. However, this issue has been left in feedback mode for the last 14 days and is being automatically marked as "stale".
If you would like to continue with this issue, please provide any missing information or answer any open questions. If you could resolve the issue yourself meanwhile, please leave a note for future readers with the same problem and close the issue.
In case you should have any uncertainty, please leave a comment and we will be happy to help you proceed with this issue.
If there is no further activity on this issue, it will be closed in a week.

While we hate to see this happen, this issue has been automatically closed because it has not had any activity in the last 42 days despite being marked as feedback. If this issue should be reconsidered, please follow the guidelines in the previous comment and reopen this issue.
Or, if you have any further questions, there are also further support channels that can help you.

This is still happening. @jeremylea had given feedback and debug trace. The bot shouldn't have put this bug as "stale".

I'm experiencing a Vector too long error when importing a DWG file which can be viewed with DWG TrueViewer.