Bug report #258

WMS getcapabilities may crash on parsing DOM

Added by anonymous - over 18 years ago. Updated over 15 years ago.

Status:Closed
Priority:Low
Assignee:Gavin Macaulay -
Category:Web Services clients/WMS
Affected QGIS version: Regression?:No
Operating System:Debian Easy fix?:No
Pull Request or Patch supplied: Resolution:fixed
Crashes QGIS or corrupts data: Copied to github as #:10317

Description

Connecting to http://aes.gsfc.nasa.gov/cgi-bin/wms makes QGIS to segfault.

OS: GNU/Linux x86

Qt: 4.1.2

QGIS: 05.09.2006 SVN.

[[QgsHttpTransaction]]::getSynchronously: Response received.
Debug: qgshttptransaction.cpp: 59: (~QgsHttpTransaction) [[QgsHttpTransaction]]: deconstructing.
[[QgsWmsProvider]]::getServerCapabilities: Converting to DOM.
[[QgsWmsProvider]]::parseCapabilitiesDOM: entering.
Segmentation fault

BT:
#0  0xb67cb27b in strlen () from /lib/tls/i686/cmov/libc.so.6
#3905  0xb679f2e4 in vfprintf () from /lib/tls/i686/cmov/libc.so.6
#3906  0xb67bca36 in vsnprintf () from /lib/tls/i686/cmov/libc.so.6
#3907  0xb7dd1eba in qvsnprintf () from /usr/lib/libQtCore.so.4
#3908  0xb7d9239b in qWarning () from /usr/lib/libQtCore.so.4
#3909  0xb46b06e0 in [[QgsWmsProvider]]::parseCapabilitiesDOM (this=0x823d580, xml=@0x823d5cc, capabilitiesProperty=@0x823d5d8)
    at qgswmsprovider.cpp:828
#3910  0xb46b487a in [[QgsWmsProvider]]::retrieveServerCapabilities (this=0x823d580, forceRefresh=false) at qgswmsprovider.cpp:666
#3911  0xb46b573f in [[QgsWmsProvider]]::supportedLayers (this=0x823d580, layers=@0xffffffff) at qgswmsprovider.cpp:195
#3912  0xb6b93517 in [[QgsServerSourceSelect]]::populateLayerList (this=0x816e028, wmsProvider=0xffffffff)
    at qgsserversourceselect.cpp:179
#3913  0xb6b95588 in [[QgsServerSourceSelect]]::on_btnConnect_clicked (this=0x816e028) at qgsserversourceselect.cpp:428
#10 0xb6c14971 in [[QgsServerSourceSelect]]::qt_metacall (this=0x816e028, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0xbfec1a5c)
    at qgsserversourceselect.moc.cpp:81
#3914 0xb7e332bd in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#3915 0xb7e334e9 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#3916 0xb799e5a5 in QAbstractButton::clicked () from /usr/lib/libQtGui.so.4
#3917 0xb7840e06 in QButtonGroup::id () from /usr/lib/libQtGui.so.4
#3918 0xb7840ffd in QAbstractButton::mouseReleaseEvent () from /usr/lib/libQtGui.so.4
#3919 0xb767deec in QWidget::event () from /usr/lib/libQtGui.so.4
#3920 0xb7841426 in QAbstractButton::event () from /usr/lib/libQtGui.so.4
#3921 0xb78a297c in QPushButton::event () from /usr/lib/libQtGui.so.4
#3922 0xb763e7c5 in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4
#3923 0xb763fa5a in QApplication::notify () from /usr/lib/libQtGui.so.4
#3924 0xb7690e7d in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#3925 0xb7690568 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#3926 0xb76a184e in non-virtual thunk to QDesktopWidget::~QDesktopWidget() () from /usr/lib/libQtGui.so.4
#3927 0xb7e2568a in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#3928 0xb7e2589d in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#3929 0xb790b0e6 in QDialog::exec () from /usr/lib/libQtGui.so.4
#3930 0xb6a6c6eb in [[QgisApp]]::addWmsLayer (this=0x80df568) at qgisapp.cpp:1968
#3931 0xb6c0cf41 in [[QgisApp]]::qt_metacall (this=0x80df568, _c=QMetaObject::InvokeMetaMethod, _id=83, _a=0xbfec2acc)
    at qgisapp.moc.cpp:294
#3932 0xb7e332bd in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#3933 0xb7e334e9 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#3934 0xb763a069 in QAction::triggered () from /usr/lib/libQtGui.so.4
#3935 0xb763aa07 in QAction::activate () from /usr/lib/libQtGui.so.4
#3936 0xb78d859a in QToolButton::nextCheckState () from /usr/lib/libQtGui.so.4
#3937 0xb7840dc9 in QButtonGroup::id () from /usr/lib/libQtGui.so.4
#3938 0xb7840ffd in QAbstractButton::mouseReleaseEvent () from /usr/lib/libQtGui.so.4
#36 0xb767deec in QWidget::event () from /usr/lib/libQtGui.so.4
#37 0xb7841426 in QAbstractButton::event () from /usr/lib/libQtGui.so.4
#38 0xb78d8344 in QToolButton::event () from /usr/lib/libQtGui.so.4
#39 0xb763e7c5 in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4
#40 0xb763fa5a in QApplication::notify () from /usr/lib/libQtGui.so.4
#41 0xb7690e7d in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#42 0xb7690568 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#43 0xb76a184e in non-virtual thunk to QDesktopWidget::~QDesktopWidget() () from /usr/lib/libQtGui.so.4
#44 0xb7e2568a in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#45 0xb7e2589d in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#46 0xb7e27fe7 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#47 0xb763e565 in QApplication::exec () from /usr/lib/libQtGui.so.4
#48 0x0804c729 in main (argc=1, argv=0xbfec38a4) at main.cpp:604

History

#1 Updated by Gavin Macaulay - over 18 years ago

That's a really big capabilities document - about 2MB, and qqis is failing when trying to print it out in a bit of debugging code. If you compile with debugging turned off, the problem might go away (then again it might not :).

#2 Updated by Gavin Macaulay - over 18 years ago

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

Fixed in SVN 9830a34e (SVN r5766). Problem was with the use of the qWarning function, which only has space for a string of max length 8192 bytes. A second problem exists in Qt4.1.2 and later (will be fixed in qt4.2.0) that could of been contributing to the problem. This commit works around the Qt4.1.2 problem, and uses the QgsLogger class instead of qWarning, which doesn't have the 8192 character limitation.

#3 Updated by Anonymous over 15 years ago

Milestone Version 0.8 deleted

Also available in: Atom PDF