Bug report #7991
identify of wfs layer causes qgis to crash
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:
gio@sibirica ~ $ 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
QgsGml: append wkb fragments to the last set not the first (fixes #7991)
History
#1 Updated by Paolo Cavallini over 11 years ago
- Category set to Web Services clients/WFS
#2 Updated by Salvatore Larosa over 11 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 11 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 11 years ago
- Status changed from Open to Closed
Fixed in changeset f3d79a88398f4c28e0377ddfb95d5c0a4abcc2bb.
#5 Updated by Salvatore Larosa over 11 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 11 years ago
- Resolution set to fixed