Suppose you open a map theme with the following ID: "earth/openstreetmap/openstreetmap.dgml". Further suppose it has the absolute file path (sourcedir) for the OSM layer set to "/home/user/MyDocs/.maps/OpenStreetMap I". When trying to download the region, MarbleMap tries to derive the sourcedir from the map theme ID, which spuriously evaluates to "earth/openstreetmap". When looking for the GeoSceneTexture in TileLoader::tileStatus(), a null pointer is returned, leading to the following backtrace (which, for some strange reason, is incomplete): Application: Marble – Virtueller Globus (marble), signal: Segmentation fault Using host libthread_db library "/lib/libthread_db.so.1". [Current thread is 1 (Thread 0xb2b99980 (LWP 8630))] Thread 1 (Thread 0xb2b99980 (LWP 8630)): [KCrash Handler] #6 QString (other=..., this=0xbff3e638) at /usr/include/QtCore/qstring.h:725 #7 Marble::GeoSceneAbstractDataset::fileFormat (this=0x0) at /home/shentey/Projekte/marble/src/src/lib/geodata/scene/GeoSceneLayer.cpp:47 #8 0xb7450f00 in Marble::GeoSceneTexture::relativeTileFileName (this=0x0, id=...) at /home/shentey/Projekte/marble/src/src/lib/geodata/scene/GeoSceneTexture.cpp:213 #9 0x00000000 in ?? () Reproducible: Always Steps to Reproduce: 1. Start Marble on the N900 2. Select OSM map theme 3. Open "Donwload Region" dialog 4. Press the Done button (no need to change settings) Actual Results: Marble crashes Expected Results: Marble should download current region
Git commit 94781d81994c34b8819539611de170bdf751fc12 by Bernhard Beschow. Committed on 30/06/2012 at 17:20. Pushed by beschow into branch 'master'. when downloading a region, consider tile availability for each layer separately instead of judging from the first Besides being more precise, it also avoids a crash by not trying to guess the source directory from the first tile layer. M +1 -3 src/lib/MarbleMap.cpp M +3 -1 src/lib/MergedLayerDecorator.cpp M +0 -5 src/lib/layers/TextureLayer.cpp M +0 -3 src/lib/layers/TextureLayer.h http://commits.kde.org/marble/94781d81994c34b8819539611de170bdf751fc12
Git commit a95181059adfd21a8a03e611c40318a673dea7d4 by Bernhard Beschow. Committed on 30/06/2012 at 17:20. Pushed by beschow into branch 'KDE/4.9'. when downloading a region, consider tile availability for each layer separately instead of judging from the first Besides being more precise, it also avoids a crash by not trying to guess the source directory for the base tiles from the .dgml directory. FIXED-IN: 4.9.0 (cherry picked from commit 94781d81994c34b8819539611de170bdf751fc12) M +1 -3 src/lib/MarbleMap.cpp M +3 -1 src/lib/MergedLayerDecorator.cpp M +0 -5 src/lib/layers/TextureLayer.cpp M +0 -3 src/lib/layers/TextureLayer.h http://commits.kde.org/marble/a95181059adfd21a8a03e611c40318a673dea7d4
Git commit 457d3716cedde930af478452846352f100433329 by Dennis Nienhüser, on behalf of Bernhard Beschow. Committed on 30/06/2012 at 17:20. Pushed by nienhueser into branch 'sok-2012-plasma-active'. when downloading a region, consider tile availability for each layer separately instead of judging from the first Besides being more precise, it also avoids a crash by not trying to guess the source directory from the first tile layer. M +1 -3 src/lib/MarbleMap.cpp M +3 -1 src/lib/MergedLayerDecorator.cpp M +0 -5 src/lib/layers/TextureLayer.cpp M +0 -3 src/lib/layers/TextureLayer.h http://commits.kde.org/marble/457d3716cedde930af478452846352f100433329