Application: marble (1.8.20 (1.9 Alpha)) KDE Platform Version: 4.13.60 (Compiled from sources) Qt Version: 4.8.6 Operating System: Linux 3.10.25-gentoo i686 Distribution: "Gentoo Base System release 2.2" -- Information about the crash: Trying out the navigation features of Marble, using the OpenStreetMap map view. Set the start and destination points about 1 mile (1.5km) apart with a sinple and obvious car route between them. The "Routing" panel found a route from OSRM and displayed it on the map. I used the View - Info Boxes - Routing menu to show the floating box. I wasn't sure what was the function of the four buttons here, since there are no tool tips, so I clicked each of them in turn. The "zoom out" and "zoom in" buttons worked as expected; the "globe" button toggled on and off but apparently did nothing. The leftmost "information" button displayed a message box with the abbreviated message Caution: Driving instructions may be incomplete or wrong... [X] Show again [ OK ] I left the "Show again" box ticked and clicked OK, resulting in a crash with the attached backtrace. Possible cause: it may be that the problem is a double or inappropriate deletion of the showAgain check box. It is created on the stack and added to the message box, which adopts the check box as a child of itself. After the dialogue has been exec()ed the check box will first be deleted by the 'delete messageBox' below, which deletes all of its child items, and then the automatic variable will be destroyed again when exiting the block. The crash can be reproduced every time. -- Backtrace: Application: Marble Virtual Globe (marble), signal: Aborted Using host libthread_db library "/lib/libthread_db.so.1". [Current thread is 1 (Thread 0xaef85980 (LWP 16916))] Thread 12 (Thread 0xac287b40 (LWP 16917)): #0 0xb2c7bf42 in timerSourcePrepareHelper (src=0xab902040, timeout=0xac28707c) at kernel/qeventdispatcher_glib.cpp:134 #1 0xb2c7c02d in timerSourcePrepare (source=0xab902040, timeout=0xac28707c) at kernel/qeventdispatcher_glib.cpp:169 #2 0xb16a0266 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0 #3 0xb16a0b5f in ?? () from /usr/lib/libglib-2.0.so.0 #4 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #5 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0xab900468, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #6 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xac287218, flags=...) at kernel/qeventloop.cpp:149 #7 0xb2c454d9 in QEventLoop::exec (this=0xac287218, flags=...) at kernel/qeventloop.cpp:204 #8 0xb2b1e438 in QThread::exec (this=0x9f3f860) at thread/qthread.cpp:538 #9 0xb2c22e77 in QInotifyFileSystemWatcherEngine::run (this=0x9f3f860) at io/qfilesystemwatcher_inotify.cpp:265 #10 0xb2b20c44 in QThreadPrivate::start (arg=0x9f3f860) at thread/qthread_unix.cpp:349 #11 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #12 0xb289347e in clone () from /lib/libc.so.6 Thread 11 (Thread 0xab78bb40 (LWP 16918)): #0 0xb402a0d0 in __pthread_mutex_unlock_usercnt () from /lib/libpthread.so.0 #1 0xb16e5b60 in g_mutex_unlock () from /usr/lib/libglib-2.0.so.0 #2 0xb16a0838 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #3 0xb16a0ce4 in ?? () from /usr/lib/libglib-2.0.so.0 #4 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #5 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0xaae00468, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #6 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xab78b218, flags=...) at kernel/qeventloop.cpp:149 #7 0xb2c454d9 in QEventLoop::exec (this=0xab78b218, flags=...) at kernel/qeventloop.cpp:204 #8 0xb2b1e438 in QThread::exec (this=0x9ebe1b8) at thread/qthread.cpp:538 #9 0xb2c22e77 in QInotifyFileSystemWatcherEngine::run (this=0x9ebe1b8) at io/qfilesystemwatcher_inotify.cpp:265 #10 0xb2b20c44 in QThreadPrivate::start (arg=0x9ebe1b8) at thread/qthread_unix.cpp:349 #11 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #12 0xb289347e in clone () from /lib/libc.so.6 Thread 10 (Thread 0xaaa89b40 (LWP 16919)): #0 0xb7725424 in __kernel_vsyscall () #1 0xb402aeac in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0xb5c25fb5 in ?? () from /usr/kde4/lib/libQtWebKit.so.4 #3 0xb5c25fef in ?? () from /usr/kde4/lib/libQtWebKit.so.4 #4 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #5 0xb289347e in clone () from /lib/libc.so.6 Thread 9 (Thread 0xaa160b40 (LWP 16920)): #0 0xb7725424 in __kernel_vsyscall () #1 0xb402aeac in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0xb5c56d23 in WTF::ThreadCondition::wait(WTF::Mutex&) () from /usr/kde4/lib/libQtWebKit.so.4 #3 0xb593f91b in ?? () from /usr/kde4/lib/libQtWebKit.so.4 #4 0xb5c3b982 in ?? () from /usr/kde4/lib/libQtWebKit.so.4 #5 0xb5c568f2 in ?? () from /usr/kde4/lib/libQtWebKit.so.4 #6 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #7 0xb289347e in clone () from /lib/libc.so.6 Thread 8 (Thread 0xa8bfeb40 (LWP 16928)): #0 0xb7725424 in __kernel_vsyscall () #1 0xb28a61e2 in clock_gettime () from /lib/libc.so.6 #2 0xb2b85e99 in do_gettime (frac=0xa8bfdf90, sec=0xa8bfdf88) at tools/qelapsedtimer_unix.cpp:127 #3 qt_gettime () at tools/qelapsedtimer_unix.cpp:144 #4 0xb2c7d802 in QTimerInfoList::updateCurrentTime (this=0xa980187c) at kernel/qeventdispatcher_unix.cpp:354 #5 0xa8bfe0bc in ?? () #6 0x00000000 in ?? () Thread 7 (Thread 0xa7bfcb40 (LWP 16930)): #0 0xb402923a in pthread_mutex_lock () from /lib/libpthread.so.0 #1 0xb16e5b20 in g_mutex_lock () from /usr/lib/libglib-2.0.so.0 #2 0xb16a04c6 in g_main_context_query () from /usr/lib/libglib-2.0.so.0 #3 0xb16a0bbe in ?? () from /usr/lib/libglib-2.0.so.0 #4 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #5 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0xa6001c98, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #6 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xa7bfc258, flags=...) at kernel/qeventloop.cpp:149 #7 0xb2c454d9 in QEventLoop::exec (this=0xa7bfc258, flags=...) at kernel/qeventloop.cpp:204 #8 0xb2b1e438 in QThread::exec (this=this@entry=0x9ea5e68) at thread/qthread.cpp:538 #9 0xb2b1e4bb in QThread::run (this=0x9ea5e68) at thread/qthread.cpp:605 #10 0xb2b20c44 in QThreadPrivate::start (arg=0x9ea5e68) at thread/qthread_unix.cpp:349 #11 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #12 0xb289347e in clone () from /lib/libc.so.6 Thread 6 (Thread 0xa4b5db40 (LWP 16934)): #0 0xb402923a in pthread_mutex_lock () from /lib/libpthread.so.0 #1 0xb16e5b20 in g_mutex_lock () from /usr/lib/libglib-2.0.so.0 #2 0xb16a0b35 in ?? () from /usr/lib/libglib-2.0.so.0 #3 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #4 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0xa60043c0, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #5 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xa4b5d258, flags=...) at kernel/qeventloop.cpp:149 #6 0xb2c454d9 in QEventLoop::exec (this=0xa4b5d258, flags=...) at kernel/qeventloop.cpp:204 #7 0xb2b1e438 in QThread::exec (this=this@entry=0xc1b9210) at thread/qthread.cpp:538 #8 0xb2b1e4bb in QThread::run (this=0xc1b9210) at thread/qthread.cpp:605 #9 0xb2b20c44 in QThreadPrivate::start (arg=0xc1b9210) at thread/qthread_unix.cpp:349 #10 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #11 0xb289347e in clone () from /lib/libc.so.6 Thread 5 (Thread 0xa382db40 (LWP 16940)): #0 0xb7725424 in __kernel_vsyscall () #1 0xb288763b in poll () from /lib/libc.so.6 #2 0xb16af86b in g_poll () from /usr/lib/libglib-2.0.so.0 #3 0xb16a0c60 in ?? () from /usr/lib/libglib-2.0.so.0 #4 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #5 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0xa9801c58, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #6 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xa382d258, flags=...) at kernel/qeventloop.cpp:149 #7 0xb2c454d9 in QEventLoop::exec (this=0xa382d258, flags=...) at kernel/qeventloop.cpp:204 #8 0xb2b1e438 in QThread::exec (this=this@entry=0xbccb3c8) at thread/qthread.cpp:538 #9 0xb2b1e4bb in QThread::run (this=0xbccb3c8) at thread/qthread.cpp:605 #10 0xb2b20c44 in QThreadPrivate::start (arg=0xbccb3c8) at thread/qthread_unix.cpp:349 #11 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #12 0xb289347e in clone () from /lib/libc.so.6 Thread 4 (Thread 0xa69ffb40 (LWP 17058)): #0 0xb16e5886 in ?? () from /usr/lib/libglib-2.0.so.0 #1 0xb16e5b58 in g_mutex_unlock () from /usr/lib/libglib-2.0.so.0 #2 0xb16a0675 in g_main_context_check () from /usr/lib/libglib-2.0.so.0 #3 0xb16a0bf2 in ?? () from /usr/lib/libglib-2.0.so.0 #4 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #5 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0xc483250, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #6 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xa69ff258, flags=...) at kernel/qeventloop.cpp:149 #7 0xb2c454d9 in QEventLoop::exec (this=0xa69ff258, flags=...) at kernel/qeventloop.cpp:204 #8 0xb2b1e438 in QThread::exec (this=this@entry=0xad999f8) at thread/qthread.cpp:538 #9 0xb2b1e4bb in QThread::run (this=0xad999f8) at thread/qthread.cpp:605 #10 0xb2b20c44 in QThreadPrivate::start (arg=0xad999f8) at thread/qthread_unix.cpp:349 #11 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #12 0xb289347e in clone () from /lib/libc.so.6 Thread 3 (Thread 0xa73fbb40 (LWP 17059)): #0 0xb7725424 in __kernel_vsyscall () #1 0xb402b294 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0xb2b211de in wait (time=30000, this=0xa60084a0) at thread/qwaitcondition_unix.cpp:84 #3 QWaitCondition::wait (this=0xa6008370, mutex=0xa600472c, time=30000) at thread/qwaitcondition_unix.cpp:158 #4 0xb2b1335b in QThreadPoolThread::run (this=0xa6008368) at concurrent/qthreadpool.cpp:142 #5 0xb2b20c44 in QThreadPrivate::start (arg=0xa6008368) at thread/qthread_unix.cpp:349 #6 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #7 0xb289347e in clone () from /lib/libc.so.6 Thread 2 (Thread 0xa83fdb40 (LWP 17060)): #0 0xb7725424 in __kernel_vsyscall () #1 0xb402b294 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #2 0xb2b211de in wait (time=30000, this=0xa600aa40) at thread/qwaitcondition_unix.cpp:84 #3 QWaitCondition::wait (this=0xa600a910, mutex=0xa600472c, time=30000) at thread/qwaitcondition_unix.cpp:158 #4 0xb2b1335b in QThreadPoolThread::run (this=0xa600a908) at concurrent/qthreadpool.cpp:142 #5 0xb2b20c44 in QThreadPrivate::start (arg=0xa600a908) at thread/qthread_unix.cpp:349 #6 0xb4026ecf in start_thread () from /lib/libpthread.so.0 #7 0xb289347e in clone () from /lib/libc.so.6 Thread 1 (Thread 0xaef85980 (LWP 16916)): [KCrash Handler] #7 0xb7725424 in __kernel_vsyscall () #8 0xb27cfbe7 in raise () from /lib/libc.so.6 #9 0xb27d1406 in abort () from /lib/libc.so.6 #10 0xb2811b45 in ?? () from /lib/libc.so.6 #11 0xb28183c0 in ?? () from /lib/libc.so.6 #12 0xb28185d0 in ?? () from /lib/libc.so.6 #13 0xb29fe73f in operator delete(void*) () from /usr/lib/gcc/i686-pc-linux-gnu/4.7.3/libstdc++.so.6 #14 0xb3c06337 in QCheckBox::~QCheckBox (this=0xbfb903bc, __in_chrg=<optimized out>) at .moc/debug-shared/../../widgets/qcheckbox.h:56 #15 0xb2c5d1d5 in QObjectPrivate::deleteChildren (this=0xc26ccc8) at kernel/qobject.cpp:1935 #16 0xb34ac6e5 in QWidget::~QWidget (this=0xb92c1d8, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1679 #17 0xb38eea2f in QDialogButtonBox::~QDialogButtonBox (this=0xb92c1d8, __in_chrg=<optimized out>) at widgets/qdialogbuttonbox.cpp:780 #18 0xb38eea7c in QDialogButtonBox::~QDialogButtonBox (this=0xb92c1d8, __in_chrg=<optimized out>) at widgets/qdialogbuttonbox.cpp:782 #19 0xb2c5d1d5 in QObjectPrivate::deleteChildren (this=0xa3b4ed8) at kernel/qobject.cpp:1935 #20 0xb34ac6e5 in QWidget::~QWidget (this=0xa29dff0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1679 #21 0xb39f5ba0 in QDialog::~QDialog (this=0xa29dff0, __in_chrg=<optimized out>) at dialogs/qdialog.cpp:320 #22 0xb3a1adaf in QMessageBox::~QMessageBox (this=0xa29dff0, __in_chrg=<optimized out>) at dialogs/qmessagebox.cpp:811 #23 0xb3a1adfc in QMessageBox::~QMessageBox (this=0xa29dff0, __in_chrg=<optimized out>) at dialogs/qmessagebox.cpp:813 #24 0xb73716a3 in Marble::RoutingManager::setGuidanceModeEnabled (this=0x9f4fa70, enabled=true) at /ws/trunk/kdeedu/marble/src/lib/marble/routing/RoutingManager.cpp:399 #25 0xaac13d32 in Marble::RoutingPluginPrivate::toggleGuidanceMode (this=0xa2e4e90, enabled=true) at /ws/trunk/kdeedu/marble/src/plugins/render/routing/RoutingPlugin.cpp:271 #26 0xb2c5f7ab in QMetaObject::activate (sender=0xbc60838, m=0xb3ed78e8 <QAbstractButton::staticMetaObject>, local_signal_index=2, argv=0xbfb90568) at kernel/qobject.cpp:3567 #27 0xb3c04eed in QAbstractButton::clicked (this=0xbc60838, _t1=true) at .moc/debug-shared/moc_qabstractbutton.cpp:219 #28 0xb38bc361 in QAbstractButtonPrivate::emitClicked (this=this@entry=0xc021b08) at widgets/qabstractbutton.cpp:548 #29 0xb38bcc8f in QAbstractButtonPrivate::click (this=this@entry=0xc021b08) at widgets/qabstractbutton.cpp:541 #30 0xb38bcf0e in QAbstractButton::mouseReleaseEvent (this=0xbc60838, e=0xbfb90c88) at widgets/qabstractbutton.cpp:1123 #31 0xb39a8287 in QToolButton::mouseReleaseEvent (this=0xbc60838, e=0xbfb90c88) at widgets/qtoolbutton.cpp:723 #32 0xb34ab792 in QWidget::event (this=0xbc60838, event=0xbfb90c88) at kernel/qwidget.cpp:8389 #33 0xb38bde12 in QAbstractButton::event (this=0xbc60838, e=0xbfb90c88) at widgets/qabstractbutton.cpp:1082 #34 0xb39a8184 in QToolButton::event (this=0xbc60838, event=0xbfb90c88) at widgets/qtoolbutton.cpp:1168 #35 0xb344a19f in QApplicationPrivate::notify_helper (this=0x9d9a298, receiver=0xbc60838, e=0xbfb90c88) at kernel/qapplication.cpp:4565 #36 0xb344e281 in QApplication::notify (this=0xbc60838, receiver=0xbc60838, e=0xbfb90c88) at kernel/qapplication.cpp:4108 #37 0xb697a6d0 in KApplication::notify (this=0xbfb91cf4, receiver=0xbc60838, event=0xbfb90c88) at /ws/trunk/kdelibs/kdeui/kernel/kapplication.cpp:311 #38 0xb2c47095 in QCoreApplication::notifyInternal (this=0xbfb91cf4, receiver=0xbc60838, event=0xbfb90c88) at kernel/qcoreapplication.cpp:953 #39 0xb71f825b in QCoreApplication::sendEvent (receiver=0xbc60838, event=event@entry=0xbfb90c88) at /usr/kde4/include/QtCore/qcoreapplication.h:231 #40 0xb71f81db in Marble::WidgetGraphicsItem::eventFilter (this=0xb9647b8, object=0x9f3fd68, e=0xbfb914b8) at /ws/trunk/kdeedu/marble/src/lib/marble/graphicsview/WidgetGraphicsItem.cpp:130 #41 0xb71ec3ce in Marble::MarbleGraphicsItem::eventFilter (this=0xa03a69c, object=0x9f3fd68, e=0xbfb914b8) at /ws/trunk/kdeedu/marble/src/lib/marble/graphicsview/MarbleGraphicsItem.cpp:249 #42 0xb71f3969 in Marble::ScreenGraphicsItem::eventFilter (this=0xa03a69c, object=0x9f3fd68, e=0xbfb914b8) at /ws/trunk/kdeedu/marble/src/lib/marble/graphicsview/ScreenGraphicsItem.cpp:77 #43 0xb72c9593 in Marble::AbstractFloatItem::eventFilter (this=0xa03a688, object=0x9f3fd68, e=0xbfb914b8) at /ws/trunk/kdeedu/marble/src/lib/marble/AbstractFloatItem.cpp:191 #44 0xaac13870 in Marble::RoutingPlugin::eventFilter (this=0xa03a688, object=0x9f3fd68, e=0xbfb914b8) at /ws/trunk/kdeedu/marble/src/plugins/render/routing/RoutingPlugin.cpp:540 #45 0xb2c4728c in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x9d9a298, receiver=0x9f3fd68, event=0xbfb914b8) at kernel/qcoreapplication.cpp:1063 #46 0xb344a18f in QApplicationPrivate::notify_helper (this=0x9d9a298, receiver=0x9f3fd68, e=0xbfb914b8) at kernel/qapplication.cpp:4561 #47 0xb344e281 in QApplication::notify (this=0x9f3fd68, receiver=0x9f3fd68, e=0xbfb914b8) at kernel/qapplication.cpp:4108 #48 0xb697a6d0 in KApplication::notify (this=0xbfb91cf4, receiver=0x9f3fd68, event=0xbfb914b8) at /ws/trunk/kdelibs/kdeui/kernel/kapplication.cpp:311 #49 0xb2c47095 in QCoreApplication::notifyInternal (this=0xbfb91cf4, receiver=0x9f3fd68, event=0xbfb914b8) at kernel/qcoreapplication.cpp:953 #50 0xb3451ce4 in sendSpontaneousEvent (event=0xbfb914b8, receiver=0x9f3fd68) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234 #51 QApplicationPrivate::sendMouseEvent (receiver=0x9f3fd68, event=0xbfb914b8, alienWidget=0x9f3fd68, nativeWidget=0x9de28f8, buttonDown=0xb3ee7274 <qt_button_down>, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3171 #52 0xb34de45c in QETWidget::translateMouseEvent (this=0x9de28f8, event=0xbfb918b0) at kernel/qapplication_x11.cpp:4519 #53 0xb34dc9ec in QApplication::x11ProcessEvent (this=0xbfb91cf4, event=0xbfb918b0) at kernel/qapplication_x11.cpp:3642 #54 0xb350bdbc in x11EventSourceDispatch (s=0x9d9a498, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146 #55 0xb16a094a in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #56 0xb16a0ce4 in ?? () from /usr/lib/libglib-2.0.so.0 #57 0xb16a0db7 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #58 0xb2c7c8ef in QEventDispatcherGlib::processEvents (this=0x9d85ae0, flags=...) at kernel/qeventdispatcher_glib.cpp:427 #59 0xb350bf1e in QGuiEventDispatcherGlib::processEvents (this=0x9d85ae0, flags=...) at kernel/qguieventdispatcher_glib.cpp:204 #60 0xb2c451e3 in QEventLoop::processEvents (this=this@entry=0xbfb91bb8, flags=...) at kernel/qeventloop.cpp:149 #61 0xb2c454d9 in QEventLoop::exec (this=0xbfb91bb8, flags=...) at kernel/qeventloop.cpp:204 #62 0xb2c4be0e in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1225 #63 0xb3448884 in QApplication::exec () at kernel/qapplication.cpp:3823 #64 0x08061581 in main (argc=1, argv=0xbfb91dc4) at /ws/trunk/kdeedu/marble/src/apps/marble-kde/kdemain.cpp:407 Reported using DrKonqi
I have the same problem here; it is impossible to enter Guidance Mode. It happens both with the "Show again" checkbox selected and not selected.
Patch for review at https://git.reviewboard.kde.org/r/119069/
Git commit e2d886ee51c928177e182e6f74aa17240c2fe6fa by Jonathan Marten. Committed on 02/07/2014 at 07:06. Pushed by marten into branch 'master'. Fix crash when entering guidance mode Do not create a QCheckBox on the stack. REVIEW:119069 M +8 -6 src/lib/marble/routing/RoutingManager.cpp http://commits.kde.org/marble/e2d886ee51c928177e182e6f74aa17240c2fe6fa