Bug report #17513

ArcGIS AFS crasher on qgis master

Added by Mathieu Pellerin - nIRV over 2 years ago. Updated over 2 years ago.

Status:Closed
Priority:Normal
Assignee:Sandro Mani
Category:Web Services clients/ArcGIS
Affected QGIS version:master Regression?:No
Operating System: Easy fix?:No
Pull Request or Patch supplied:No Resolution:fixed/implemented
Crashes QGIS or corrupts data:Yes Copied to github as #:25410

Description

QGIS master dies on me usually within minutes of adding an AFS layer.

Steps to reproduce
  1. Create a new project
  2. Add the "burials" layer from the AFS following server (https://services1.arcgis.com/7uJv7I3kgh2y7Pe0/ArcGIS/rest/services/CGP_Vector_Data/FeatureServer)
  3. Zoom in to show only a fraction of all points
  4. Hit the toolbar refresh button (or f5) a couple of times
  5. boom

GDB where output

(gdb) where
#0  0x00007ffff39630bb in __GI_raise ([email protected]=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff3964f5d in __GI_abort () at abort.c:90
#2  0x0000555555560612 in qgisCrash(int) (signal=-1) at /home/webmaster/dev/cpp/QGIS/src/app/main.cpp:336
#3  0x00005555555608ba in myMessageOutput(QtMsgType, char const*) (type=QtFatalMsg, msg=0x7fff147485a8 "ASSERT: \"f.isValid()\" in file /home/webmaster/dev/cpp/QGIS/src/providers/arcgisrest/qgsafsshareddata.cpp, line 111") at /home/webmaster/dev/cpp/QGIS/src/app/main.cpp:389
#4  0x00007ffff433e61a in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff43400ee in QMessageLogger::fatal(char const*, ...) const () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff433b357 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007fff56734237 in QgsAfsSharedData::getFeature(long long, QgsFeature&, bool, QList<int> const&, QgsRectangle const&) (this=0x55555fc25760, id=101, f=..., fetchGeometry=true, filterRect=...)
    at /home/webmaster/dev/cpp/QGIS/src/providers/arcgisrest/qgsafsshareddata.cpp:111
#8  0x00007fff5672b623 in QgsAfsFeatureIterator::fetchFeature(QgsFeature&) (this=0x7fff14745520, f=...) at /home/webmaster/dev/cpp/QGIS/src/providers/arcgisrest/qgsafsfeatureiterator.cpp:94
#9  0x00007ffff60e7e44 in QgsAbstractFeatureIterator::nextFeature(QgsFeature&) (this=0x7fff14745520, f=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsfeatureiterator.cpp:63
#10 0x00007ffff7108db5 in QgsFeatureIterator::nextFeature(QgsFeature&) (this=0x7fff1401be30, f=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsfeatureiterator.h:370
#11 0x00007ffff63649d6 in QgsVectorLayerFeatureIterator::fetchFeature(QgsFeature&) (this=0x7fff1401bc20, f=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsvectorlayerfeatureiterator.cpp:330
#12 0x00007ffff60e7e44 in QgsAbstractFeatureIterator::nextFeature(QgsFeature&) (this=0x7fff1401bc20, f=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsfeatureiterator.cpp:63
#13 0x00007ffff7108db5 in QgsFeatureIterator::nextFeature(QgsFeature&) (this=0x7fff237fcd80, f=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsfeatureiterator.h:370
#14 0x00007ffff63846f4 in QgsVectorLayerRenderer::drawRenderer(QgsFeatureIterator&) (this=0x555561497a70, fit=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsvectorlayerrenderer.cpp:264
#15 0x00007ffff638421a in QgsVectorLayerRenderer::render() (this=0x555561497a70) at /home/webmaster/dev/cpp/QGIS/src/core/qgsvectorlayerrenderer.cpp:247
#16 0x00007ffff6183a5f in QgsMapRendererParallelJob::renderLayerStatic(LayerRenderJob&) (job=...) at /home/webmaster/dev/cpp/QGIS/src/core/qgsmaprendererparalleljob.cpp:256
#17 0x00007ffff61851da in QtConcurrent::FunctionWrapper1<void, LayerRenderJob&>::operator()(LayerRenderJob&) (this=0x555561490bf8, u=...)
    at /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentfunctionwrappers.h:83
#18 0x00007ffff6184f13 in QtConcurrent::MapKernel<QList<LayerRenderJob>::iterator, QtConcurrent::FunctionWrapper1<void, LayerRenderJob&> >::runIteration(QList<LayerRenderJob>::iterator, int, void*) (this=0x555561490bc0, it=...) at /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentmapkernel.h:69
#19 0x00007ffff6184fb2 in QtConcurrent::MapKernel<QList<LayerRenderJob>::iterator, QtConcurrent::FunctionWrapper1<void, LayerRenderJob&> >::runIterations(QList<LayerRenderJob>::iterator, int, int, void*) (this=0x555561490bc0, sequenceBeginIterator=..., beginIndex=2, endIndex=3) at /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentmapkernel.h:78
#20 0x00007ffff6185482 in QtConcurrent::IterateKernel<QList<LayerRenderJob>::iterator, void>::forThreadFunction() (this=0x555561490bc0)
    at /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentiteratekernel.h:256
#21 0x00007ffff6185144 in QtConcurrent::IterateKernel<QList<LayerRenderJob>::iterator, void>::threadFunction() (this=0x555561490bc0)
    at /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentiteratekernel.h:218
#22 0x00007fffebb78bfd in QtConcurrent::ThreadEngineBase::run() () at /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so.5
#23 0x00007ffff4351581 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007ffff435529d in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007fffeaad37fc in start_thread (arg=0x7fff237fe700) at pthread_create.c:465
#26 0x00007ffff3a40b0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Associated revisions

Revision 9ed26361
Added by Sandro Mani over 2 years ago

[ArcGIS REST] Add missing mutex to QgsAfsProvider (fixes #17513)

Revision d6d40970
Added by Sandro Mani over 2 years ago

Merge pull request #5692 from manisandro/afsshareddata_mutex

[ArcGIS REST] Add missing mutex to QgsAfsProvider (fixes #17513)

History

#1 Updated by Mathieu Pellerin - nIRV over 2 years ago

Simpler steps to reproduce:
  1. Add the "burials" layer from the AFS server mentioned above
  2. Zoom in to show only a fraction of all points
  3. Hit the toolbar refresh button (or f5) a couple of times
  4. boom

#2 Updated by Mathieu Pellerin - nIRV over 2 years ago

  • Description updated (diff)

#3 Updated by Mathieu Pellerin - nIRV over 2 years ago

  • Description updated (diff)

#4 Updated by Sandro Mani over 2 years ago

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

#5 Updated by Giovanni Manghi over 2 years ago

  • Resolution set to fixed/implemented

Also available in: Atom PDF