Bug 281933

Summary: FileReaderPositionProvider causes crash when activated
Product: [Applications] marble Reporter: Bernhard Beschow <shentey>
Component: generalAssignee: marble-bugs
Status: RESOLVED FIXED    
Severity: crash CC: nienhueser
Priority: NOR    
Version: unspecified   
Target Milestone: 1.3 (KDE 4.8)   
Platform: Unlisted Binaries   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Bernhard Beschow 2011-09-13 11:53:38 UTC
Version:           unspecified
OS:                Linux

When the "GPS Position Simulation (File Reader)" is selected, Marble crashes immediately, regardless of whether a route is loaded or not.

Reproducible: Always

Steps to Reproduce:
1. Optional: create a route
2. Select "GPS Position Simulation (File Reader)" in the "Current Location" tab.

Actual Results:  
Marble crashes immediately.

Expected Results:  
Perform route simulation (or whatever).

The offending commit seems to be: https://projects.kde.org/projects/kde/kdeedu/marble/repository/revisions/6de88504d102a25c89fec7055188e3fb068bc242
Comment 1 Dennis Nienhüser 2011-09-17 17:28:47 UTC
Works for me, got a backtrace?
Comment 2 Bernhard Beschow 2011-09-22 20:44:05 UTC
Yes, here is a backtrace created w/ Qt Creator:

Thread 15 (Thread 0xb0322b70 (LWP 16170)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6aeec53 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb6bdea04 in pthread_cond_timedwait () from /lib/libc.so.6
No symbol table info available.
#3  0xb7d816ee in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4  0xb7d75464 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 14 (Thread 0xadb1db70 (LWP 16167)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6bc672e in poll () from /lib/libc.so.6
No symbol table info available.
#2  0xb6a19e6b in g_poll () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0xb6a0b2b6 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0xb6a0b6da in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#5  0xb7ea9e4a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb7e7ab6d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#7  0xb7e7adb1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#8  0xb7d7e3ab in QThread::exec() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#9  0xb7d7e49b in QThread::run() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#10 0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#11 0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#12 0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 13 (Thread 0xacb1bb70 (LWP 16135)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6bbfa32 in __xstat64 () from /lib/libc.so.6
No symbol table info available.
#2  0xb7e54445 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#3  0xb7e54695 in QFSFileEngine::fileFlags(QFlags<QAbstractFileEngine::FileFlag>) const () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4  0xb7e0c191 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0xb7e0dea9 in QFileInfo::isDir() const () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb7e063c8 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#7  0xb7e06669 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#8  0xb7e0683d in QDirIterator::next() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#9  0xb6fc7bb6 in Marble::FileStorageWatcherThread::getCurrentCacheSize (this=0x8afcaf0) at /home/shentey/Projekte/marble/src/src/lib/FileStorageWatcher.cpp:109
        file = {d_ptr = {d = 0xaa9bc1c0}}
        dataSize = 737757147
        it = <incomplete type>
#10 0xb6fc8b9d in Marble::FileStorageWatcher::run (this=0x817c710) at /home/shentey/Projekte/marble/src/src/lib/FileStorageWatcher.cpp:391
No locals.
#11 0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#12 0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#13 0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 11 (Thread 0xac31ab70 (LWP 16134)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6aeec53 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb6bdea04 in pthread_cond_timedwait () from /lib/libc.so.6
No symbol table info available.
#3  0xb7d816ee in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4  0xb7d75464 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 9 (Thread 0xad31cb70 (LWP 16132)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6aeec53 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb6bdea04 in pthread_cond_timedwait () from /lib/libc.so.6
No symbol table info available.
#3  0xb7d816ee in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4  0xb7d75464 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 8 (Thread 0xae31eb70 (LWP 16130)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6aeec53 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb6bdea04 in pthread_cond_timedwait () from /lib/libc.so.6
No symbol table info available.
#3  0xb7d816ee in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4  0xb7d75464 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 7 (Thread 0xaeb1fb70 (LWP 16129)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6aeec53 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb6bdea04 in pthread_cond_timedwait () from /lib/libc.so.6
No symbol table info available.
#3  0xb7d816ee in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4  0xb7d75464 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 3 (Thread 0xb275ab70 (LWP 16095)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6bc672e in poll () from /lib/libc.so.6
No symbol table info available.
#2  0xb6a19e6b in g_poll () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0xb6a0b2b6 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0xb6a0b6da in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#5  0xb7ea9e4a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb7e7ab6d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#7  0xb7e7adb1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#8  0xb7d7e3ab in QThread::exec() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#9  0xb7e5b83d in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#10 0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#11 0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#12 0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 2 (Thread 0xb3408b70 (LWP 16094)):
#0  0xb7fde424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb6bc672e in poll () from /lib/libc.so.6
No symbol table info available.
#2  0xb6a19e6b in g_poll () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0xb6a0b2b6 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0xb6a0b6da in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#5  0xb7ea9e4a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0xb7e7ab6d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#7  0xb7e7adb1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#8  0xb7d7e3ab in QThread::exec() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#9  0xb7e5b83d in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#10 0xb7d81253 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#11 0xb6aeaca7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#12 0xb6bd0dee in clone () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: Not enough registers or memory available to unwind further

Thread 1 (Thread 0xb501f9c0 (LWP 16061)):
#0  0xb6e97c04 in Marble::GeoDataContainer::p (this=0x0) at /home/shentey/Projekte/marble/src/src/lib/geodata/data/GeoDataContainer.cpp:50
No locals.
#1  0xb6e98800 in Marble::GeoDataContainer::folderList (this=0x0) at /home/shentey/Projekte/marble/src/src/lib/geodata/data/GeoDataContainer.cpp:85
        results = {{d = 0x80a0b2c, p = 0x80a0b2c}}
        it = <optimized out>
        end = <optimized out>
#2  0xb4f44465 in Marble::FileReaderPositionProviderPluginPrivate::createSimulationPlacemarks (this=0x82d69e0, container=0x0) at /home/shentey/Projekte/marble/src/src/plugins/positionprovider/filereader/FileReaderPositionProviderPlugin.cpp:96
        folders = {{d = 0x80a0b2c, p = 0x80a0b2c}}
#3  0xb4f44c3f in Marble::FileReaderPositionProviderPluginPrivate::importKmlFromData (this=0x0) at /home/shentey/Projekte/marble/src/src/plugins/positionprovider/filereader/FileReaderPositionProviderPlugin.cpp:85
        document = 0x0
        parser = {<Marble::GeoParser> = {<QXmlStreamReader> = {d_ptr = {d = 0x93804d0}}, _vptr.GeoParser = 0xb714ab48, m_document = 0x0, m_source = 1, m_nodeStack = {<QVector<Marble::GeoStackItem>> = {{d = 0x926c810, p = 0x926c810}}, <No data fields>}}, <No data fields>}
        filename = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 166423}, alloc = 0, size = 0, data = 0x80a0cb2, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 32}, alloc = 0, size = 0, data = 0xb7fb349e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x937f788, static codecForCStrings = 0x0}
        file = <incomplete type>
        doc = 0x0
#4  0xb4f45512 in Marble::FileReaderPositionProviderPlugin::initialize (this=0x88cd3e0) at /home/shentey/Projekte/marble/src/src/plugins/positionprovider/filereader/FileReaderPositionProviderPlugin.cpp:186
No locals.
#5  0xb6fefeef in Marble::PositionTracking::setPositionProviderPlugin (this=0x816eaa8, plugin=0x88cd3e0) at /home/shentey/Projekte/marble/src/src/lib/PositionTracking.cpp:147
No locals.
#6  0xb6f2b716 in Marble::CurrentLocationWidgetPrivate::changePositionProvider (this=0x82f6708, provider=...) at /home/shentey/Projekte/marble/src/src/lib/CurrentLocationWidget.cpp:268
        instance = 0x88cd3e0
        tracking = 0x0
        plugin = 0x82ad1f0
        _container_ = {c = {{p = {static shared_null = {ref = {_q_value = 16507}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x825e960}, d = 0x825e960}}, brk = 0, i = {i = 0x825e974}, e = {i = 0x825e97c}}
#7  0xb6f2b98e in Marble::CurrentLocationWidget::qt_metacall (this=0x83147e0, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0xbfffe818) at /home/shentey/Projekte/marble/build-qt/src/lib/CurrentLocationWidget.moc:103
No locals.
#8  0xb7e81eed in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#9  0xb7e90dda in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#10 0xb77ee975 in QComboBox::currentIndexChanged(QString const&) () from /usr/lib/libQtGui.so.4
No symbol table info available.
#11 0xb77ee9e2 in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#12 0xb77eeb4f in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#13 0xb77efa6e in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#14 0xb77f3352 in QComboBox::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQtGui.so.4
No symbol table info available.
#15 0xb7e81eed in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#16 0xb7e90dda in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#17 0xb7ad1515 in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#18 0xb77e8f2f in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#19 0xb7e7bcc6 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#20 0xb73c19f2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
No symbol table info available.
#21 0xb73c7a90 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
No symbol table info available.
#22 0xb7e7bb2e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#23 0xb73c29e5 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4
No symbol table info available.
#24 0xb744c41a in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#25 0xb744ac8d in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
No symbol table info available.
#26 0xb747539c in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#27 0xb6a0ac4f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#28 0xb6a0b3b0 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#29 0xb6a0b6da in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#30 0xb7ea9e4a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#31 0xb7474f8a in ?? () from /usr/lib/libQtGui.so.4
No symbol table info available.
#32 0xb7e7ab6d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#33 0xb7e7adb1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#34 0xb7e7f50d in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#35 0xb73bf894 in QApplication::exec() () from /usr/lib/libQtGui.so.4
No symbol table info available.
#36 0x08058bab in main (argc=134705096, argv=0x814ca18) at /home/shentey/Projekte/marble/src/src/qtmain.cpp:186
        lang = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 166423}, alloc = 0, size = 0, data = 0x80a0cb2, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 32}, alloc = 0, size = 0, data = 0xb7fb349e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x8159578, static codecForCStrings = 0x0}
        window = 0x817a990
        graphicsString = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 166423}, alloc = 0, size = 0, data = 0x80a0cb2, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 32}, alloc = 0, size = 0, data = 0xb7fb349e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x80bc040, static codecForCStrings = 0x0}
        app = <incomplete type>
        translator = <incomplete type>
        dataPathIndex = <optimized out>
        graphicsSettings = <optimized out>
        marbleDataPath = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 166423}, alloc = 0, size = 0, data = 0x80a0cb2, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 32}, alloc = 0, size = 0, data = 0xb7fb349e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x80a0ca0, static codecForCStrings = 0x0}
        profiles = {i = 0}
        args = {<QList<QString>> = {{p = {static shared_null = {ref = {_q_value = 16507}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8178498}, d = 0x8178498}}, <No data fields>}
        measurement = <optimized out>
        marbleMeasurement = <optimized out>
        marbleTest = 0x886d8e0
Comment 3 Bernhard Beschow 2011-09-22 20:45:51 UTC
BTW, the crash happened in Thread 1.
Comment 4 Dennis Nienhüser 2011-09-28 19:19:53 UTC
Git commit 6e3e25468c03d90ce38e3aca62d3f2b5b23b4a0e by Dennis Nienhüser.
Committed on 28/09/2011 at 21:19.
Pushed by nienhueser into branch 'master'.

Deal with invalid .kml files.

BUG: 281933

M  +6    -2    src/plugins/positionprovider/filereader/FileReaderPositionProviderPlugin.cpp

http://commits.kde.org/marble/6e3e25468c03d90ce38e3aca62d3f2b5b23b4a0e
Comment 5 Dennis Nienhüser 2011-09-28 19:20:42 UTC
The backtrace looks a bit strange with so many things 0x0, but I think the commit above catches the source of the problem.