I get a fairly regular crash when I start an application and then try to move it to another workspace. It doesn't always happen, but it doesn't take long to reproduce. I am running the current Natty under vmware on an iMac. I have built unity-2d from the trunk branch and am testing that.
This is the stack trace:
Thread 1 (Thread 0xb780a890 (LWP 5801)):
#0 0x004fb416 in __kernel_vsyscall ()
#1 0x0150fe71 in raise () from /lib/i386-linux-gnu/libc.so.6
#2 0x0151334e in abort () from /lib/i386-linux-gnu/libc.so.6
---Type <return> to continue, or q <return> to quit---
#3 0x083840b5 in __gnu_cxx::__verbose_terminate_handler() ()
from /usr/lib/i386-linux-gnu/libstdc++.so.6
#4 0x08381fa5 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#5 0x08381fe2 in std::terminate() ()
from /usr/lib/i386-linux-gnu/libstdc++.so.6
#6 0x083821ab in __cxa_rethrow () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#7 0x00940920 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#8 0x02ee1506 in WindowInfo::workspaceChanged (this=0x90a1e90, _t1=1)
at /home/rdale/src/unity-2d/build/libunity-2d-private/Unity2d/moc_windowinfo.cxx:236
#9 0x02edcf9c in WindowInfo::updateWorkspace (this=0x90a1e90)
at /home/rdale/src/unity-2d/libunity-2d-private/Unity2d/windowinfo.cpp:286
#10 0x02edcf69 in WindowInfo::onWorkspaceChanged (window=0x8e25498,
user_data=0x90a1e90)
at /home/rdale/src/unity-2d/libunity-2d-private/Unity2d/windowinfo.cpp:280
#11 0x0060848c in g_cclosure_marshal_VOID__VOID ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#12 0x005ec372 in g_closure_invoke ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#13 0x005ff048 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#14 0x00607b29 in g_signal_emit_valist ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#15 0x00607cc2 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#16 0x019e668c in ?? () from /usr/lib/libwnck-1.so.22
#17 0x019e7218 in ?? () from /usr/lib/libwnck-1.so.22
#18 0x00663311 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#19 0x00667aa8 in g_main_context_dispatch ()
from /lib/i386-linux-gnu/libglib-2.0.so.0
#20 0x00668270 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#21 0x00668524 in g_main_context_iteration ()
from /lib/i386-linux-gnu/libglib-2.0.so.0
#22 0x0095753c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#23 0x00c48775 in ?? () from /usr/lib/libQtGui.so.4
#24 0x00929289 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#25 0x00929522 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /usr/lib/libQtCore.so.4
#26 0x0092decc in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#27 0x00b928e7 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#28 0x0804d22c in main (argc=1, argv=0xbfe57194)
at /home/rdale/src/unity-2d/spread/app/spread.cpp:101
I've added some debug logging and it appears to be crashing in WindowsList::updateWorkspaceRole() when it emits a dataChanged() signal to forward the change to the QSortFilterProxyModelQMLs. in the QML.
This is the debug logging I added:
void WindowsList: :updateWorkspac eRole(int workspace) workspace) ;
{
Q_UNUSED(
qDebug() << Q_FUNC_INFO << this; cast<WindowInfo *>(sender( )); indexOf( window) ;
QModelInde x changedItem = index(row);
qDebug( ) << Q_FUNC_INFO << this << "changedItem:" << changedItem; changedItem, changedItem);
WindowInfo *window = qobject_
qDebug() << Q_FUNC_INFO << this << window << window->title();
if (window != NULL) {
int row = m_windows.
qDebug() << Q_FUNC_INFO << this << "row:" << row;
if (row != -1) {
Q_EMIT dataChanged(
}
}
qDebug() << Q_FUNC_INFO << this << "EXIT";
}
And here is a sample of the output before the crash:
unity-2d-spread: [DEBUG] void WindowsList::load() WindowsList( 0x83fe920) WindowInfo( 0x863af60) "rdale@ubuntu: /tmp" 0x83fe920) WindowInfo( 0x864ea38) "rdale@ubuntu: ~/src/unity- 2d/build" 0x83fe920) WindowInfo( 0x8617dd8) "rdale@ubuntu: ~" 0x83fe920) WindowInfo( 0x845e4e0) "windowslist.cpp - unity-2d - Qt Creator" 0x83fe920) WindowInfo( 0x8583af0) "Ubuntu Start Page - Mozilla Firefox"
unity-2d-spread: [DEBUG] void WindowsList::load() WindowsList(
unity-2d-spread: [DEBUG] void WindowsList::load() WindowsList(
unity-2d-spread: [DEBUG] void WindowsList::load() WindowsList(
unity-2d-spread: [DEBUG] void WindowsList::load() WindowsList(
unity-2d-spread: [WARNING] Wnck: Received a timestamp of 0; window activation may not function properly.
unity-2d-spread: [DEBUG] virtual WindowInfo: :~WindowInfo( ) WindowInfo( 0x863af60) "rdale@ubuntu: /tmp" :~WindowInfo( ) WindowInfo( 0x864ea38) "rdale@ubuntu: ~/src/unity- 2d/build" :~WindowInfo( ) WindowInfo( 0x8617dd8) "rdale@ubuntu: ~" :~WindowInfo( ) WindowInfo( 0x845e4e0) "windowslist.cpp - unity-2d - Qt Creator" :~WindowInfo( ) WindowInfo( 0x8583af0) "Ubuntu Start Page - Mozilla Firefox" :addWindow( BamfView* ) WindowsList( 0x83fe920) WindowInfo( 0x83bbe90) "Qt Creator" :updateWorkspac eRole(int) WindowsList( 0x83fe920) :updateWorkspac eRole(int) WindowsList( 0x83fe920) WindowInfo( 0x83bbe90) "Qt Creator" :updateWorkspac eRole(int) WindowsList( 0x83fe920) row: 0 :updateWorkspac eRole(int) WindowsList( 0x83fe920) changedItem: QModelIndex( 0,0,0x0, WindowsList( 0x83fe920) )
unity-2d-spread: [DEBUG] virtual WindowInfo:
unity-2d-spread: [DEBUG] virtual WindowInfo:
unity-2d-spread: [DEBUG] virtual WindowInfo:
unity-2d-spread: [DEBUG] virtual WindowInfo:
unity-2d-spread: [DEBUG] void WindowsList:
unity-2d-spread: [DEBUG] void WindowsList:
unity-2d-spread: [DEBUG] void WindowsList:
unity-2d-spread: [DEBUG] void WindowsList:
unity-2d-spread: [DEBUG] void WindowsList:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc