I've made some progress. There is a gdb command 'catch throw' and I was able to use that to get a backtrace of where the std::bad_alloc exception was being thrown. It is in some code called by WindowImageProvider::requestImage(). So maybe the next step is to put some debug logging in that method to see what is going on. (gdb) t a a bt Thread 4 (Thread 0xb6e7db70 (LWP 3053)): #0 0x00bc2416 in __kernel_vsyscall () #1 0x07c8cf76 in __poll (fds=0x8981af0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x0563d84b in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0 #3 0x0562d1af in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #4 0x0562d524 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0 #5 0x0029253c in QEventDispatcherGlib::processEvents (this=0x8984078, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #6 0x00264289 in QEventLoop::processEvents (this=0xb6e7d130, flags=...) at kernel/qeventloop.cpp:149 #7 0x00264522 in QEventLoop::exec (this=0xb6e7d130, flags=...) at kernel/qeventloop.cpp:201 #8 0x0016e2a0 in QThread::exec (this=0x8987920) at thread/qthread.cpp:492 #9 0x004d3beb in QDeclarativePixmapReader::run (this=0x8987920) at util/qdeclarativepixmapcache.cpp:557 #10 0x00170da2 in QThreadPrivate::start (arg=0x8987920) at thread/qthread_unix.cpp:320 #11 0x074f0e99 in start_thread (arg=0xb6e7db70) at pthread_create.c:304 #12 0x07c9b73e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 ---Type to continue, or q to quit--- Thread 3 (Thread 0xb767eb70 (LWP 3014)): #0 0x00bc2416 in __kernel_vsyscall () #1 0x07c8cf76 in __poll (fds=0x87368b8, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x0563d84b in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0 #3 0x0562d1af in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #4 0x0562d92b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0 #5 0x00d13434 in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0 #6 0x056562df in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #7 0x074f0e99 in start_thread (arg=0xb767eb70) at pthread_create.c:304 #8 0x07c9b73e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 Thread 2 (Thread 0xb64b0b70 (LWP 3016)): #0 0x00bc2416 in __kernel_vsyscall () #1 0x074f548c in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:169 #2 0x01b38817 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x1c4c1c0) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359 #3 0x01b38851 in QTWTF::TCMalloc_PageHeap::runScavengerThread ( context=0x1c4c1c0) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464 #4 0x074f0e99 in start_thread (arg=0xb64b0b70) at pthread_create.c:304 ---Type to continue, or q to quit--- #5 0x07c9b73e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 Thread 1 (Thread 0xb78a7890 (LWP 3013)): #0 0x024d80e5 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #1 0x00165f85 in qBadAlloc () at global/qglobal.cpp:2019 #2 0x010a5865 in QX11PixmapData::toImage (this=0x899de18, rect=...) at image/qpixmap_x11.cpp:1547 #3 0x011907ad in QRasterPaintEngine::drawPixmap (this=0x8a79808, r=..., pixmap=..., sr=...) at painting/qpaintengine_raster.cpp:2439 #4 0x0110b438 in QPainter::drawPixmap (this=0xbfe08e90, r=..., pm=..., sr=...) at painting/qpainter.cpp:5387 #5 0x02b21799 in QPainter::drawPixmap (this=0xbfe08e90, p=..., pm=..., sr=...) at /usr/include/qt4/QtGui/qpainter.h:874 #6 0x02b21174 in WindowImageProvider::requestImage (this=0x88e3080, id=..., size=0xbfe08fc0, requestedSize=...) at /home/rdale/src/unity-2d/libunity-2d-private/Unity2d/windowimageprovider.cpp:165 #7 0x00580ae3 in QDeclarativeEnginePrivate::getImageFromProvider ( this=0x8811448, url=..., size=0xbfe08fc0, req_size=...) at qml/qdeclarativeengine.cpp:765 #8 0x004d2fcd in createPixmapDataSync (this=0x8aa4d34, engine=0x88113a0, url=..., requestSize=..., async=false) at util/qdeclarativepixmapcache.cpp:786 ---Type to continue, or q to quit--- #9 QDeclarativePixmap::load (this=0x8aa4d34, engine=0x88113a0, url=..., requestSize=..., async=false) at util/qdeclarativepixmapcache.cpp:995 #10 0x00518bb7 in QDeclarativeImageBase::load (this=0x8aa4b70) at graphicsitems/qdeclarativeimagebase.cpp:146 #11 0x005190c2 in QDeclarativeImageBase::componentComplete (this=0x8aa4b70) at graphicsitems/qdeclarativeimagebase.cpp:216 #12 0x00593528 in QDeclarativeComponentPrivate::complete ( enginePriv=0x8811448, state=0x8896278) at qml/qdeclarativecomponent.cpp:890 #13 0x00593886 in QDeclarativeComponentPrivate::completeCreate (this=0x8896208) at qml/qdeclarativecomponent.cpp:949 #14 0x0054f766 in QDeclarativeVisualDataModel::completeItem (this=0x8896358) at graphicsitems/qdeclarativevisualitemmodel.cpp:1123 #15 0x0050b0a2 in QDeclarativeGridViewPrivate::createItem (this=0x8895888, modelIndex=0) at graphicsitems/qdeclarativegridview.cpp:437 #16 0x0050b63a in QDeclarativeGridViewPrivate::updateCurrent (this=0x8895888, modelIndex=0) at graphicsitems/qdeclarativegridview.cpp:798 #17 0x0050e331 in QDeclarativeGridView::itemsInserted (this=0x88c80a0, modelIndex=0, count=1) at graphicsitems/qdeclarativegridview.cpp:2333 #18 0x0066e859 in QDeclarativeGridView::qt_metacall (this=0x88c80a0, _c=QMetaObject::InvokeMetaMethod, _id=23, _a=0xbfe095b4) at .moc/release-shared/moc_qdeclarativegridview_p.cpp:236 #19 0x00574541 in QDeclarativeVMEMetaObject::metaCall (this=0x8896068, c=QMetaObject::InvokeMetaMethod, _id=79, a=0xbfe095b4) ---Type to continue, or q to quit--- at qml/qdeclarativevmemetaobject.cpp:673 #20 0x0026b6ba in QMetaObject::metacall (object=0x88c80a0, cl=QMetaObject::InvokeMetaMethod, idx=79, argv=0xbfe095b4) at kernel/qmetaobject.cpp:237 #21 0x0027b4ff in QMetaObject::activate (sender=0x8896358, m=0x74efcc, local_signal_index=1, argv=0xbfe095b4) at kernel/qobject.cpp:3287 #22 0x0067a329 in QDeclarativeVisualModel::itemsInserted (this=0x8896358, _t1=0, _t2=1) at .moc/release-shared/moc_qdeclarativevisualitemmodel_p.cpp:140 #23 0x005527d5 in QDeclarativeVisualDataModel::_q_itemsInserted ( this=0x8896358, index=0, count=1) at graphicsitems/qdeclarativevisualitemmodel.cpp:1278 #24 0x0067acac in QDeclarativeVisualDataModel::qt_metacall (this=0x8896358, _c=QMetaObject::InvokeMetaMethod, _id=7, _a=0xbfe09790) at .moc/release-shared/moc_qdeclarativevisualitemmodel_p.cpp:397 #25 0x0026b6ba in QMetaObject::metacall (object=0x8896358, cl=QMetaObject::InvokeMetaMethod, idx=19, argv=0xbfe09790) at kernel/qmetaobject.cpp:237 #26 0x0027b4ff in QMetaObject::activate (sender=0x8897ca0, m=0x3a0198, local_signal_index=5, argv=0xbfe09790) at kernel/qobject.cpp:3287 #27 0x002c721f in QAbstractItemModel::rowsInserted (this=0x8897ca0, _t1=..., _t2=0, _t3=0) at .moc/release-shared/moc_qabstractitemmodel.cpp:181 #28 0x0025fb1e in QAbstractItemModel::endInsertRows (this=0x8897ca0) ---Type to continue, or q to quit--- at kernel/qabstractitemmodel.cpp:2412 #29 0x015ab8e0 in QSortFilterProxyModelPrivate::insert_source_items ( this=0x8897cf0, source_to_proxy=..., proxy_to_source=..., source_items=..., source_parent=..., orient=Qt::Vertical, emit_signal=true) at itemviews/qsortfilterproxymodel.cpp:693 #30 0x015af394 in QSortFilterProxyModelPrivate::source_items_inserted ( this=0x8897cf0, source_parent=..., start=0, end=0, orient=Qt::Vertical) at itemviews/qsortfilterproxymodel.cpp:804 #31 0x015af7cf in QSortFilterProxyModelPrivate::_q_sourceRowsInserted ( this=0x8897cf0, source_parent=..., start=0, end=0) at itemviews/qsortfilterproxymodel.cpp:1278 #32 0x015b1687 in QSortFilterProxyModel::qt_metacall (this=0x8897ca0, _c=QMetaObject::InvokeMetaMethod, _id=12, _a=0xbfe09a90) at .moc/release-shared/moc_qsortfilterproxymodel.cpp:135 #33 0x02b2695f in QSortFilterProxyModelQML::qt_metacall (this=0x8897ca0, _c=QMetaObject::InvokeMetaMethod, _id=37, _a=0xbfe09a90) at /home/rdale/src/unity-2d/build/libunity-2d-private/Unity2d/moc_qsortfilterproxymodelqml.cxx:76 #34 0x0026b6ba in QMetaObject::metacall (object=0x8897ca0, cl=QMetaObject::InvokeMetaMethod, idx=37, argv=0xbfe09a90) at kernel/qmetaobject.cpp:237 #35 0x0027b4ff in QMetaObject::activate (sender=0x8897598, m=0x3a0198, local_signal_index=5, argv=0xbfe09a90) at kernel/qobject.cpp:3287 ---Type to continue, or q to quit--- #36 0x002c721f in QAbstractItemModel::rowsInserted (this=0x8897598, _t1=..., _t2=0, _t3=0) at .moc/release-shared/moc_qabstractitemmodel.cpp:181 #37 0x0025fb1e in QAbstractItemModel::endInsertRows (this=0x8897598) at kernel/qabstractitemmodel.cpp:2412 #38 0x015ab8e0 in QSortFilterProxyModelPrivate::insert_source_items ( this=0x88975e8, source_to_proxy=..., proxy_to_source=..., source_items=..., source_parent=..., orient=Qt::Vertical, emit_signal=true) at itemviews/qsortfilterproxymodel.cpp:693 #39 0x015affdd in QSortFilterProxyModelPrivate::_q_sourceDataChanged ( this=0x88975e8, source_top_left=..., source_bottom_right=...) at itemviews/qsortfilterproxymodel.cpp:1198 #40 0x015b172c in QSortFilterProxyModel::qt_metacall (this=0x8897598, _c=QMetaObject::InvokeMetaMethod, _id=5, _a=0xbfe09da4) at .moc/release-shared/moc_qsortfilterproxymodel.cpp:128 #41 0x02b2695f in QSortFilterProxyModelQML::qt_metacall (this=0x8897598, _c=QMetaObject::InvokeMetaMethod, _id=30, _a=0xbfe09da4) at /home/rdale/src/unity-2d/build/libunity-2d-private/Unity2d/moc_qsortfilterproxymodelqml.cxx:76 #42 0x0026b6ba in QMetaObject::metacall (object=0x8897598, cl=QMetaObject::InvokeMetaMethod, idx=30, argv=0xbfe09da4) at kernel/qmetaobject.cpp:237 #43 0x0027b4ff in QMetaObject::activate (sender=0x88d8fe0, m=0x3a0198, local_signal_index=0, argv=0xbfe09da4) at kernel/qobject.cpp:3287 ---Type to continue, or q to quit--- #44 0x002c7089 in QAbstractItemModel::dataChanged (this=0x88d8fe0, _t1=..., _t2=...) at .moc/release-shared/moc_qabstractitemmodel.cpp:148 #45 0x02b23753 in WindowsList::updateWorkspaceRole (this=0x88d8fe0, workspace=1) at /home/rdale/src/unity-2d/libunity-2d-private/Unity2d/windowslist.cpp:218 #46 0x02b2749f in WindowsList::qt_metacall (this=0x88d8fe0, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfe09f78) at /home/rdale/src/unity-2d/build/libunity-2d-private/Unity2d/moc_windowslist.cxx:83 #47 0x0026b6ba in QMetaObject::metacall (object=0x88d8fe0, cl=QMetaObject::InvokeMetaMethod, idx=26, argv=0xbfe09f78) at kernel/qmetaobject.cpp:237 #48 0x0027b4ff in QMetaObject::activate (sender=0x895ba08, m=0x2b33874, local_signal_index=8, argv=0xbfe09f78) at kernel/qobject.cpp:3287 #49 0x02b2734a in WindowInfo::workspaceChanged (this=0x895ba08, _t1=1) at /home/rdale/src/unity-2d/build/libunity-2d-private/Unity2d/moc_windowinfo.cxx:236 #50 0x02b2226c in WindowInfo::updateWorkspace (this=0x895ba08) at /home/rdale/src/unity-2d/libunity-2d-private/Unity2d/windowinfo.cpp:289 #51 0x02b22239 in WindowInfo::onWorkspaceChanged (window=0x87e9d40, user_data=0x895ba08) at /home/rdale/src/unity-2d/libunity-2d-private/Unity2d/windowinfo.cpp:283 #52 0x02cfd48c in g_cclosure_marshal_VOID__VOID () ---Type to continue, or q to quit--- from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 #53 0x02ce1372 in g_closure_invoke () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 #54 0x02cf4048 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 #55 0x02cfcb29 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 #56 0x02cfccc2 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 #57 0x066be68c in ?? () from /usr/lib/libwnck-1.so.22 #58 0x066bf218 in ?? () from /usr/lib/libwnck-1.so.22 #59 0x05628311 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #60 0x0562caa8 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0 #61 0x0562d270 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #62 0x0562d524 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0 #63 0x0029253c in QEventDispatcherGlib::processEvents (this=0x868dbb0, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #64 0x0105b775 in QGuiEventDispatcherGlib::processEvents (this=0x868dbb0, flags=...) at kernel/qguieventdispatcher_glib.cpp:204 #65 0x00264289 in QEventLoop::processEvents (this=0xbfe0a5d4, flags=...) at kernel/qeventloop.cpp:149 #66 0x00264522 in QEventLoop::exec (this=0xbfe0a5d4, flags=...) ---Type to continue, or q to quit--- at kernel/qeventloop.cpp:201 #67 0x00268ecc in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008 #68 0x00fa58e7 in QApplication::exec () at kernel/qapplication.cpp:3736 #69 0x0804dcdd in main (argc=1, argv=0xbfe0a7b4) at /home/rdale/src/unity-2d/spread/app/spread.cpp:133 (gdb)