Bug 189228

Summary: Removing last placemark in MarbleWidget causes crash
Product: [Applications] marble Reporter: Matthew Gates <matthew>
Component: generalAssignee: Torsten Rahn <rahn>
Status: RESOLVED DUPLICATE    
Severity: crash CC: andresbajotierra, mat.fuessel
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Matthew Gates 2009-04-09 17:34:19 UTC
Version:           4.2 SVN branch (using KDE 4.2.2)
Compiler:          c++ (Ubuntu 4.3.3-5ubuntu4) 4.3.3 
OS:                Linux
Installed from:    Ubuntu Packages

Using marble compiled with the QT only option.

When writing a simple program using MarbleWidget, I get a crash in the following conditions:

1.  Call MarbleWidget::addPlaceMarkData(kml, someid);
2.  Call MarbleWidget::removePlaceMarkKey(someid);

It seems to happen when the last remaining placemark is removed.  i.e. if you add 4 placemarks, you can remove 3 without problems, but the last removal will cause a crash.

Example kml blob, in case it makes a difference:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Schema name="MarblePlacemark" parent="Placemark">
<SimpleField name="pop" type="int"></SimpleField>
<SimpleField name="CountryNameCode" type="string"></SimpleField>
<SimpleField name="role" type="string"></SimpleField>
</Schema>
<MarblePlacemark>
<name>myplacemark1</name>
<description><![CDATA[Waypoint 1]]></description>
<role>P</role>
<Point><coordinates>-1,54</coordinates></Point>
</MarblePlacemark>
</Document>
</kml>



Backtrace:

#0  0xb6fa52fb in __dynamic_cast () from /usr/lib/libstdc++.so.6
#1  0xb70f91c6 in Marble::MarbleGeometryModel::data (this=0x8a4f328, index=@0xbfa81420, role=0) at /home/matthew/build/marble/src/lib/MarbleGeometryModel.cpp:161
#2  0xb5f1cfcb in Marble::MarbleGeoDataView::renderIndex (this=0x84fd350, index=@0xbfa8148c) at /home/matthew/build/marble/src/plugins/render/geodata/MarbleGeoDataView.cpp:91
#3  0xb5f1d393 in Marble::MarbleGeoDataView::paintEvent (this=0x84fd350, event=0x0) at /home/matthew/build/marble/src/plugins/render/geodata/MarbleGeoDataView.cpp:77
#4  0xb5f1c459 in Marble::MarbleGeoDataView::setGeoPainter (this=0x84fd350, painter=0xbfa81748) at /home/matthew/build/marble/src/plugins/render/geodata/MarbleGeoDataView.cpp:42
#5  0xb5f1b6de in Marble::MarbleGeoDataPlugin::render (this=0x85086c0, painter=0xbfa81748, viewport=0x84ad4d4, renderPos=@0xbfa8156c, layer=0x0)
    at /home/matthew/build/marble/src/plugins/render/geodata/MarbleGeoDataPlugin.cpp:102
#6  0xb71105ef in Marble::LayerManager::renderLayers (this=0x84fbdf0, painter=0xbfa81748, viewParams=0x84fb62c) at /home/matthew/build/marble/src/lib/LayerManager.cpp:92
#7  0xb70c6389 in Marble::MarbleModel::paintGlobe (this=0x84fbbd0, painter=0xbfa81748, width=511, height=557, viewParams=0x84fb62c, redrawBackground=true, dirtyRect=@0xbfa81738)
    at /home/matthew/build/marble/src/lib/MarbleModel.cpp:700
#8  0xb70d3528 in Marble::MarbleMapPrivate::paintGround (this=0x84fb618, painter=@0xbfa81748, dirtyRect=@0xbfa81738) at /home/matthew/build/marble/src/lib/MarbleMap.cpp:290
#9  0xb70bd6da in Marble::MarbleWidget::paintEvent (this=0x84ae5e8, evt=0xbfa81ba4) at /home/matthew/build/marble/src/lib/MarbleWidget.cpp:844
#10 0xb76ef9ae in QWidget::event () from /usr/lib/libQtGui.so.4
#11 0xb7698f2c in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4
#12 0xb76a1312 in QApplication::notify () from /usr/lib/libQtGui.so.4
#13 0xb7360a3b in QCoreApplication::notifyInternal () from /usr/lib/libQtCore.so.4
#14 0xb76a407e in QCoreApplication::sendSpontaneousEvent () from /usr/lib/libQtGui.so.4
#15 0xb76f77a9 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#16 0xb78b4055 in ?? () from /usr/lib/libQtGui.so.4
#17 0xb76e7c46 in QWidgetPrivate::syncBackingStore () from /usr/lib/libQtGui.so.4
#18 0xb76efe15 in QWidget::event () from /usr/lib/libQtGui.so.4
#19 0xb7ae74c7 in QMainWindow::event () from /usr/lib/libQtGui.so.4
#20 0xb7698f2c in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4
#21 0xb76a1312 in QApplication::notify () from /usr/lib/libQtGui.so.4
#22 0xb7360a3b in QCoreApplication::notifyInternal () from /usr/lib/libQtCore.so.4
#23 0xb7361695 in QCoreApplicationPrivate::sendPostedEvents () from /usr/lib/libQtCore.so.4
#24 0xb736188d in QCoreApplication::sendPostedEvents () from /usr/lib/libQtCore.so.4
#25 0xb738c7ef in ?? () from /usr/lib/libQtCore.so.4
#26 0xb6baba58 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#27 0xb6baefbb in ?? () from /usr/lib/libglib-2.0.so.0
#28 0xb6baf138 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#29 0xb738c438 in QEventDispatcherGlib::processEvents () from /usr/lib/libQtCore.so.4
#30 0xb773a3f5 in ?? () from /usr/lib/libQtGui.so.4
#31 0xb735f06a in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#32 0xb735f4aa in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#33 0xb7361959 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#34 0xb7698da7 in QApplication::exec () from /usr/lib/libQtGui.so.4
#35 0x0804f2f4 in main ()
Comment 1 Dario Andres 2009-04-10 03:23:32 UTC
This backtrace looks related to the one on bug 189228. Thanks
Comment 2 Matthias Füssel 2009-04-26 17:15:25 UTC
Same problem here.
Comment 3 Matthias Füssel 2009-04-26 17:23:29 UTC
(In reply to comment #1)
> This backtrace looks related to the one on bug 189228. Thanks

189228 is *this* bug.

Judging by the stack trace, bug 182470 and bug 185290 are the same bug as this one. Both happening while using geolocation from digikam.
Comment 4 Dario Andres 2009-04-28 19:52:42 UTC

*** This bug has been marked as a duplicate of bug 182470 ***