[Marble-bugs] [marble] [Bug 341253] New: Declarative marble craches when you try to change the map

Oleg Lyubimov lyubimov.o.e at gmail.com
Tue Nov 25 14:31:37 UTC 2014


https://bugs.kde.org/show_bug.cgi?id=341253

            Bug ID: 341253
           Summary: Declarative marble craches when you try to change the
                    map
           Product: marble
           Version: 1.9 (KDE 4.14)
          Platform: Debian stable
                OS: Linux
            Status: UNCONFIRMED
          Severity: crash
          Priority: NOR
         Component: general
          Assignee: marble-bugs at kde.org
          Reporter: lyubimov.o.e at gmail.com

QML application based on MarbleWidget crashes after you change the map theme in
the MapThemeModel. The bug is reproduced, when you have no the opening map in
path "~/.local/share/marble/maps". The application crashes during tile
rendering process. In marble-qt all work OK.
System config:
Kubuntu 12.04 x64 LTS, Qt 4.8.1 and 4.8.6, cmake 2.8.7, gcc 4.6.3

Program Code for bug reproducing:

import QtQuick 1.1
import org.kde.edu.marble 0.11

Rectangle {
    id: screen
    width: 1200
    height: 800

    MarbleSettings {
        id: settings
    }

    MapThemeModel{
        id: mapThemeModel
    }

    MarbleWidget {
        id: map
        width: 600
        height: screen.height
        property bool initialized: false
        workOffline: settings.workOffline
        mapThemeId: settings.mapTheme
        radius: settings.quitRadius
        //projection: "Equirectangular"
        activeFloatItems: [ "compass", "scalebar", "progress" ]
        activeRenderPlugins: settings.activeRenderPlugins
    }
// View for declarative MapThemeModel
    ListView {
        id: mapListView
        anchors.left: map.right
        anchors.right: screen.right
        height: screen.height
        highlightFollowsCurrentItem: true
        model: mapThemeModel

        // Delegate that displays a preview image and the name of the map
theme.
        delegate:
            Rectangle {
            id: themeItem
            width: mapListView.width
            height: mapImage.height + 5
            // Highlight current map theme with a blue background.
            color: mapThemeId === settings.mapTheme ? "lightsteelblue" :
"white"
            Row {
                anchors.verticalCenter: parent.verticalCenter
                anchors.left: parent.left
                anchors.leftMargin: 15
                // Preview image of the map theme.
                Image {
                    id: mapImage
                    source: "image://maptheme/" + mapThemeId
                }
                // Label with the name of the map theme.
                Text {
                    id: themeLabel
                    text: display
                    color: "black"
                    anchors.verticalCenter: parent.verticalCenter
                }
            }
            // If the user clicks on a theme, use it for the map.
            MouseArea {
                anchors.fill: parent
                onClicked: {
                    mapListView.currentIndex = index
                    console.debug(mapThemeId)
                    map.mapThemeId = mapThemeId
                }
            }
        }
    }
}

Reproducible: Always

Steps to Reproduce:
1. Build marble for QTONLY 
2. Remove any maps from "~/.local/share/marble/maps" path 
3. Create a default QML application width the code, deskribed on field
"Details"
4. Run the application, and select another map theme from map theme list in the
right part of the application's screen.



Actual Results:  
Map theme is changed, tiles for this theme are successfully created.

Expected Results:  
Map theme is changed, application craches during the tile creation process.
Application crashes only when you open the map at the first time. If you open 
this map again, the application works OK.



The backtrace from gdb:

Program received signal SIGSEGV, Segmentation fault.
QDeclarativeError::isValid (this=0xa8) at qml/qdeclarativeerror.cpp:138
138     qml/qdeclarativeerror.cpp: Нет такого файла или каталога (No such file
or directory).
(gdb) bt 
#0  QDeclarativeError::isValid (this=0xa8) at qml/qdeclarativeerror.cpp:138
#1  0x00007ffff7a2e0ef in QDeclarativeBoundSignal::qt_metacall (this=0xf9db20,
c=<optimized out>, id=<optimized out>, a=0x7fffffffc0a0)
    at qml/qdeclarativeboundsignal.cpp:187
#2  0x00007ffff681d489 in QMetaObject::activate (sender=0xf9d790, m=<optimized
out>, local_signal_index=<optimized out>, argv=0x7fffffffc0a0)
    at kernel/qobject.cpp:3566
#3  0x00007ffff7ae82d2 in QDeclarativeMouseArea::clicked (this=<optimized out>,
_t1=0x7fffffffc0e0)
    at .moc/release-shared/moc_qdeclarativemousearea_p.cpp:523
#4  0x00007ffff7993f01 in QDeclarativeMouseArea::setPressed (this=0xf9d790,
p=<optimized out>) at graphicsitems/qdeclarativemousearea.cpp:935
#5  0x00007ffff7994005 in QDeclarativeMouseArea::mouseReleaseEvent
(this=0xf9d790, event=0x7fffffffc990) at
graphicsitems/qdeclarativemousearea.cpp:587
#6  0x00007ffff7311493 in QGraphicsItem::sceneEvent (this=0xf9d7a0,
event=0x7fffffffc990) at graphicsview/qgraphicsitem.cpp:6741
#7  0x00007ffff7986cf2 in QDeclarativeItem::sceneEvent (this=0xf9d790,
event=0x7fffffffc990) at graphicsitems/qdeclarativeitem.cpp:3047
#8  0x00007ffff7993529 in QDeclarativeMouseArea::sceneEvent (this=0xf9d790,
event=0x7fffffffc990) at graphicsitems/qdeclarativemousearea.cpp:682
#9  0x00007ffff7339c8a in QGraphicsScenePrivate::sendMouseEvent (this=0x71b8e0,
mouseEvent=0x7fffffffc990) at graphicsview/qgraphicsscene.cpp:1295
#10 0x00007ffff733a675 in QGraphicsScene::mouseReleaseEvent (this=<optimized
out>, mouseEvent=0x7fffffffc990) at graphicsview/qgraphicsscene.cpp:4128
#11 0x00007ffff73487df in QGraphicsScene::event (this=0x719940,
event=0x7fffffffc990) at graphicsview/qgraphicsscene.cpp:3458
#12 0x00007ffff6d2b894 in notify_helper (e=0x7fffffffc990, receiver=0x719940,
this=0x60c5b0) at kernel/qapplication.cpp:4559
#13 QApplicationPrivate::notify_helper (this=0x60c5b0, receiver=0x719940,
e=0x7fffffffc990) at kernel/qapplication.cpp:4531
#14 0x00007ffff6d30713 in QApplication::notify (this=0x60c590,
receiver=0x719940, e=0x7fffffffc990) at kernel/qapplication.cpp:4420
#15 0x00007ffff6808e9c in QCoreApplication::notifyInternal (this=0x60c590,
receiver=0x719940, event=0x7fffffffc990) at kernel/qcoreapplication.cpp:876
#16 0x00007ffff7363e16 in QGraphicsView::mouseReleaseEvent
(this=0x7fffffffdfc0, event=0x7fffffffd300) at
graphicsview/qgraphicsview.cpp:3338
#17 0x00007ffff6d7c144 in QWidget::event (this=0x7fffffffdfc0,
event=0x7fffffffd300) at kernel/qwidget.cpp:8362
#18 0x00007ffff713c3f6 in QFrame::event (this=0x7fffffffdfc0, e=0x7fffffffd300)
at widgets/qframe.cpp:557
#19 0x00007ffff7366b6b in QGraphicsView::viewportEvent (this=0x7fffffffdfc0,
event=0x7fffffffd300) at graphicsview/qgraphicsview.cpp:2866
#20 0x00007ffff6809028 in
QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>,
receiver=0x6b46d0, event=0x7fffffffd300)
    at kernel/qcoreapplication.cpp:986
#21 0x00007ffff6d2b85f in notify_helper (e=0x7fffffffd300, receiver=0x6b46d0,
this=0x60c5b0) at kernel/qapplication.cpp:4555
#22 QApplicationPrivate::notify_helper (this=0x60c5b0, receiver=0x6b46d0,
e=0x7fffffffd300) at kernel/qapplication.cpp:4531
#23 0x00007ffff6d310bf in QApplication::notify (this=<optimized out>,
receiver=0x6b46d0, e=0x7fffffffd300) at kernel/qapplication.cpp:4102
#24 0x00007ffff6808e9c in QCoreApplication::notifyInternal (this=0x60c590,
receiver=0x6b46d0, event=0x7fffffffd300) at kernel/qcoreapplication.cpp:876
#25 0x00007ffff6d2c862 in sendEvent (event=<optimized out>, receiver=<optimized
out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#26 QApplicationPrivate::sendMouseEvent (receiver=0x6b46d0,
event=0x7fffffffd300, alienWidget=0x6b46d0, nativeWidget=0x7fffffffdfc0,
buttonDown=0x6b46d0, 
    lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3170
#27 0x00007ffff6dabc35 in QETWidget::translateMouseEvent (this=0x7fffffffdfc0,
event=<optimized out>) at kernel/qapplication_x11.cpp:4619
#28 0x00007ffff6daabee in QApplication::x11ProcessEvent (this=0x60c590,
event=0x7fffffffdbd0) at kernel/qapplication_x11.cpp:3734
#29 0x00007ffff6dd4112 in x11EventSourceDispatch (s=0x610120, callback=0,
user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#30 0x00007ffff3f26d13 in g_main_context_dispatch () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007ffff3f27060 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007ffff3f27124 in g_main_context_iteration () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007ffff68383bf in QEventDispatcherGlib::processEvents (this=0x60d920,
flags=...) at kernel/qeventdispatcher_glib.cpp:424
#34 0x00007ffff6dd3d9e in QGuiEventDispatcherGlib::processEvents
(this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#35 0x00007ffff6807c82 in QEventLoop::processEvents (this=<optimized out>,
flags=...) at kernel/qeventloop.cpp:149
#36 0x00007ffff6807ed7 in QEventLoop::exec (this=0x7fffffffdf70, flags=...) at
kernel/qeventloop.cpp:204
#37 0x00007ffff680cf67 in QCoreApplication::exec () at
kernel/qcoreapplication.cpp:1148
#38 0x0000000000402efb in main (argc=1, argv=0x7fffffffe118) at
../marble-test/main.cpp:14

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Marble-bugs mailing list