Bug report #7991

identify of wfs layer causes qgis to crash

Added by Giovanni Manghi over 6 years ago. Updated over 6 years ago.

Status:Closed
Priority:Severe/Regression
Assignee:-
Category:Web Services clients/WFS
Affected QGIS version:master Regression?:No
Operating System: Easy fix?:No
Pull Request or Patch supplied:No Resolution:fixed
Crashes QGIS or corrupts data:Yes Copied to github as #:16843

Description

pick this shape: http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip

and publish it as WFS layer with QGIS server, then use qgis as wfs client and add this wfs layer, then identify a feature it will give instant crash:

[email protected] ~ $ qgis
Warning: loading of qt translation failed [/usr/share/qt4/translations/qt_en_US]
Warning: QMetaObject::connectSlotsByName: No matching signal for on_treeWidget_itemDoubleClicked(QModelIndex)
Warning: QMetaObject::connectSlotsByName: No matching signal for on_treeWidget_currentRowChanged(QModelIndex,QModelIndex)
Warning: QMetaObject::connectSlotsByName: No matching signal for on_mBuildQueryButton_clicked()
(qgis.bin:4945): Gtk-CRITICAL **: IA__gtk_progress_configure: assertion `value >= min && value <= max' failed
(20 repeats)
Warning: QMetaObject::connectSlotsByName: No matching signal for on_treeWidget_itemDoubleClicked(QModelIndex)
Warning: QMetaObject::connectSlotsByName: No matching signal for on_treeWidget_currentRowChanged(QModelIndex,QModelIndex)
Warning: QMetaObject::connectSlotsByName: No matching signal for on_mBuildQueryButton_clicked()
(qgis.bin:4945): Gtk-CRITICAL **: IA__gtk_progress_configure: assertion `value >= min && value <= max' failed
(196 repeats)
Fatal: QGIS died on signal 11
Stacktrace (piped through c++filt):
/usr/bin/qgis.bin(Z15myMessageOutput9QtMsgTypePKc+0xac)[0x4e6b5c]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(qt_message_output(QtMsgType, char const*)+0x2e)[0x7fa25c1c741e]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(+0x718bf)[0x7fa25c1c78bf]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(qFatal(char const*, ...)+0x94)[0x7fa25c1c7a64]
/lib/x86_64-linux-gnu/libc.so.6(+0x364a0)[0x7fa2596b84a0]
/usr/lib/libqgis_core.so.1.9.0(QgsDistanceArea::measurePolygon(unsigned char*, double*, double*, bool)+0x17)[0x7fa25d20f5e7]
/usr/lib/libqgis_core.so.1.9.0(QgsDistanceArea::measure(QgsGeometry*)+0x11b)[0x7fa25d20faeb]
/usr/lib/libqgis_gui.so.1.9.0(QgsMapToolIdentify::featureDerivedAttributes(QgsFeature*, QgsMapLayer*)+0x205)[0x7fa25ccbb755]
/usr/lib/libqgis_gui.so.1.9.0(QgsMapToolIdentify::identifyVectorLayer(QList<QgsMapToolIdentify::IdentifyResult>*, QgsVectorLayer*, QgsPoint)+0x4f5)[0x7fa25ccbccb5]
/usr/lib/libqgis_gui.so.1.9.0(QgsMapToolIdentify::identifyLayer(QList<QgsMapToolIdentify::IdentifyResult>*, QgsMapLayer*, QgsPoint, QgsRectangle, double, QgsMapToolIdentify::LayerType)+0xc3)[0x7fa25ccc0ab3]
/usr/lib/libqgis_gui.so.1.9.0(QgsMapToolIdentify::identify(int, int, QgsMapToolIdentify::IdentifyMode, QList<QgsMapLayer*>, QgsMapToolIdentify::LayerType)+0x5bf)[0x7fa25ccc10df]
/usr/lib/libqgis_gui.so.1.9.0(QgsMapToolIdentify::identify(int, int, QList<QgsMapLayer*>, QgsMapToolIdentify::IdentifyMode)+0x50)[0x7fa25ccc13d0]
/usr/bin/qgis.bin(QgsMapToolIdentifyAction::canvasReleaseEvent(QMouseEvent*)+0xb1)[0x623a91]
/usr/lib/libqgis_gui.so.1.9.0(QgsMapCanvas::mouseReleaseEvent(QMouseEvent*)+0x33)[0x7fa25ccb4873]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QWidget::event(QEvent*)+0x684)[0x7fa25b6a4144]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QFrame::event(QEvent*)+0x26)[0x7fa25ba643b6]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QGraphicsView::viewportEvent(QEvent*)+0x7b)[0x7fa25bc8eb2b]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)+0x88)[0x7fa25c2d1028]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x7f)[0x7fa25b65385f]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QApplication::notify(QObject*, QEvent*)+0xabf)[0x7fa25b6590bf]
/usr/lib/libqgis_core.so.1.9.0(QgsApplication::notify(QObject*, QEvent*)+0x96)[0x7fa25d1ddc46]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(QCoreApplication::notifyInternal(QObject*, QEvent*)+0x8c)[0x7fa25c2d0e9c]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool)+0x172)[0x7fa25b654862]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x24bbf5)[0x7fa25b6d3bf5]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(QApplication::x11ProcessEvent(_XEvent*)+0xdce)[0x7fa25b6d2bae]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x2740d2)[0x7fa25b6fc0d2]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x133)[0x7fa2581e4d53]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x480a0)[0x7fa2581e50a0]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x34)[0x7fa2581e5164]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x6f)[0x7fa25c3003bf]
/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x273d5e)[0x7fa25b6fbd5e]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x32)[0x7fa25c2cfc82]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+0xf7)[0x7fa25c2cfed7]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(QCoreApplication::exec()+0x87)[0x7fa25c2d4f67]
/usr/bin/qgis.bin(main+0x229e)[0x4e2b0e]
/lib/x86_64-linux-gnu/libc.so.6(_libc_start_main+0xed)[0x7fa2596a376d]
/usr/bin/qgis.bin[0x4e6901]
Aborted (core dumped)

Associated revisions

Revision f3d79a88
Added by Jürgen Fischer over 6 years ago

QgsGml: append wkb fragments to the last set not the first (fixes #7991)

History

#1 Updated by Paolo Cavallini over 6 years ago

  • Category set to Web Services clients/WFS

#2 Updated by Salvatore Larosa over 6 years ago

confirmed here

stacktrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4921956 in QgsDistanceArea::measurePolygon (this=0x7fffffffb670, feature=0x0, area=
    0x7fffffffb540, perimeter=0x0, hasZptr=false)
    at /home/sam/pacchetti_gis/Quantum-GIS/src/core/qgsdistancearea.cpp:487
487      unsigned int numRings = *(( int* )( feature + 1 + sizeof( int ) ) );
(gdb) bt full
#0  0x00007ffff4921956 in QgsDistanceArea::measurePolygon (this=0x7fffffffb670, feature=0x0, area=
    0x7fffffffb540, perimeter=0x0, hasZptr=false)
    at /home/sam/pacchetti_gis/Quantum-GIS/src/core/qgsdistancearea.cpp:487
        y = 81.742751999999996
        numRings = 0
        ptr = 0x6a333b2 "\\001\\003" 
        points = {{p = {static shared_null = {ref = {_q_value = 8728}, alloc = 0, begin = 0, 
                end = 0, sharable = 1, array = {0x0}}, d = 0xe056a0}, d = 0xe056a0}}
        pnt = {m_x = 59.287497999999999, m_y = 81.742751999999996}
        x = 59.287497999999999
#1  0x00007ffff491fddb in QgsDistanceArea::measure (this=0x7fffffffb670, geometry=0x6526420)
    at /home/sam/pacchetti_gis/Quantum-GIS/src/core/qgsdistancearea.cpp:310
        resTotal = -5849.5491542225782
        count = 228
        i = 2
        __FUNCTION__ = "measure" 
        wkb = 0x69a7130 "\\001\\006" 
        ptr = 0x0
        wkbType = 6
        res = -2924.7745771112891
        hasZptr = false
#2  0x00007ffff4230a4f in QgsMapToolIdentify::featureDerivedAttributes (this=0x11c9b30, feature=
    0x30ba960, layer=0x5453140)

#3 Updated by Jürgen Fischer over 6 years ago

fe9b8d4672 fixes the crash, but there's still something wrong with the GML (not yet figured out if it's the generation on the server side or the parsing on the client side).

#4 Updated by Jürgen Fischer over 6 years ago

  • Status changed from Open to Closed

#5 Updated by Salvatore Larosa over 6 years ago

Thanks Jürgen for having fixed this.

Just one more thing odd, if you use the identify tool onto France geometry the rubber band highlights even Russia and US.

http://lrssvt.ns0.it/cgi-bin/wfs_issue/qgis_mapserv.fcgi?SERVICE=WFS&REQUEST=GetCapabilities

#6 Updated by Giovanni Manghi over 6 years ago

  • Resolution set to fixed

Also available in: Atom PDF