$ ps -efl | head -n 1; ps -efl | grep After | grep -v grep F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 S bmason 11152 27772 99 80 0 - 409626 futex_ 22:44 ? 00:20:43 ./AfterShotProLooking at /proc/11152/wchan shows that ASP in "futex_wait_queue_me".
If I run a pstack on the ASP PID, I get:
Code: Select all
$ pstack 11152
Thread 7 (Thread 0xa1e8bb40 (LWP 11156)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x4314485c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0xf4d50802 in QWaitCondition::wait(QMutex*, unsigned long) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0xf5670afa in QFileInfoGatherer::run() () from /opt/AfterShotPro/lib/libQtGui.so.4
#4 0xf4d50052 in QThreadPrivate::start(void*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#5 0x43140cd3 in start_thread () from /lib/libpthread.so.0
#6 0x4307da2e in clone () from /lib/libc.so.6
Thread 6 (Thread 0xa09e2b40 (LWP 11157)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x430762e1 in select () from /lib/libc.so.6
#2 0xf4e82040 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0xf4e85359 in QEventDispatcherUNIX::select(int, fd_set*, fd_set*, fd_set*, timeval*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#4 0xf4e85be7 in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#5 0xf4e86b71 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#6 0xf4e544ca in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#7 0xf4e54952 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#8 0xf4d4ca5a in QThread::exec() () from /opt/AfterShotPro/lib/libQtCore.so.4
#9 0xf4e3324b in QInotifyFileSystemWatcherEngine::run() () from /opt/AfterShotPro/lib/libQtCore.so.4
#10 0xf4d50052 in QThreadPrivate::start(void*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#11 0x43140cd3 in start_thread () from /lib/libpthread.so.0
#12 0x4307da2e in clone () from /lib/libc.so.6
Thread 5 (Thread 0x9e3dbb40 (LWP 11160)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x4314485c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0xf4d50802 in QWaitCondition::wait(QMutex*, unsigned long) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0x08490368 in TMThread::run() ()
#4 0xf4d50052 in QThreadPrivate::start(void*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#5 0x43140cd3 in start_thread () from /lib/libpthread.so.0
#6 0x4307da2e in clone () from /lib/libc.so.6
Thread 4 (Thread 0x9dadab40 (LWP 11161)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x4314485c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0xf4d50802 in QWaitCondition::wait(QMutex*, unsigned long) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0x08490368 in TMThread::run() ()
#4 0xf4d50052 in QThreadPrivate::start(void*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#5 0x43140cd3 in start_thread () from /lib/libpthread.so.0
#6 0x4307da2e in clone () from /lib/libc.so.6
Thread 3 (Thread 0x9cbb9b40 (LWP 11162)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x4314485c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0xf4d4ee92 in QMutexPrivate::wait(int) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0xf4d4a3fd in QMutex::lock() () from /opt/AfterShotPro/lib/libQtCore.so.4
#4 0x0820bf94 in VersionAsset::singleRefChild(Asset*) ()
#5 0x080f5175 in Asset::removeReference() ()
#6 0x08140278 in AnonAllocator::doDelayedPurge() ()
#7 0x0815d770 in CachingAllocator::touchAsset(Asset*) ()
#8 0x080f3c68 in Asset::touch() ()
#9 0x0820deee in VersionAsset::tileStack(int, bool) ()
#10 0x0820e539 in VersionAsset::tileStack(int) ()
#11 0x083c10e0 in VersionStackSrcFilter::size(ProcessingSettings const&, PipeSettings const&, QSize const&) ()
#12 0x083ceef4 in TileStack::versionSettingsChanged(int) ()
#13 0x083cfc8c in TileStack::TileStack(ImagePipeline&, ExtraPipeSettings*, AssetPtr<VersionAsset>, int, bool) ()
#14 0x08229179 in VersionWriterAsset::run() ()
#15 0x0849026a in TMThread::run() ()
#16 0xf4d50052 in QThreadPrivate::start(void*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#17 0x43140cd3 in start_thread () from /lib/libpthread.so.0
#18 0x4307da2e in clone () from /lib/libc.so.6
Thread 2 (Thread 0x9f612b40 (LWP 11169)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x430762e1 in select () from /lib/libc.so.6
#2 0xf4e82040 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0xf4e85359 in QEventDispatcherUNIX::select(int, fd_set*, fd_set*, fd_set*, timeval*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#4 0xf4e85be7 in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#5 0xf4e86b71 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#6 0xf4e544ca in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#7 0xf4e54952 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#8 0xf4d4ca5a in QThread::exec() () from /opt/AfterShotPro/lib/libQtCore.so.4
#9 0xf4e3324b in QInotifyFileSystemWatcherEngine::run() () from /opt/AfterShotPro/lib/libQtCore.so.4
#10 0xf4d50052 in QThreadPrivate::start(void*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#11 0x43140cd3 in start_thread () from /lib/libpthread.so.0
#12 0x4307da2e in clone () from /lib/libc.so.6
Thread 1 (Thread 0xf4cde700 (LWP 11152)):
#0 0xf77de430 in __kernel_vsyscall ()
#1 0x4314485c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0xf4d50802 in QWaitCondition::wait(QMutex*, unsigned long) () from /opt/AfterShotPro/lib/libQtCore.so.4
#3 0x08490b66 in TMMangler::block(TMWaitList*) ()
#4 0x080f4744 in Asset::waitBlockPrivate(AutoUser&, BMutexLocker*) ()
#5 0x0814d6d1 in GuiRequestor::blockGui(BaseAssetPtr const&, AutoUser&, BMutexLocker*) ()
#6 0x080f482b in Asset::waitBlock(AutoUser&, BMutexLocker*) ()
#7 0x083dfc51 in PreScalingFilter::validateCameraReader(PipeSettings const&) ()
#8 0x083d3194 in UncompressedRawDataFilter::size(ProcessingSettings const&, PipeSettings const&, QSize const&) ()
#9 0x083ceef4 in TileStack::versionSettingsChanged(int) ()
#10 0x083d072d in TileStack::TileStack(AssetPtr<VersionAsset>, int, bool) ()
#11 0x0820df8b in VersionAsset::tileStack(int, bool) ()
#12 0x0820e539 in VersionAsset::tileStack(int) ()
#13 0x0820e5da in VersionAsset::cropRect() ()
#14 0x0892e477 in ImageItem::setImage(AssetPtr<VersionAsset> const&) ()
#15 0x08917b0e in MultiImageView::addImage(AssetPtr<VersionAsset> const&) ()
#16 0x08918e1c in MultiImageView::updateItems(bool) ()
#17 0x08ae87d1 in MultiImageView::qt_metacall(QMetaObject::Call, int, void**) ()
#18 0xf4e5b875 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /opt/AfterShotPro/lib/libQtCore.so.4
#19 0xf4e6e3d3 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /opt/AfterShotPro/lib/libQtCore.so.4
#20 0x08aeaf76 in SelectionList::selectionChanged() ()
#21 0x0899d72f in SelectionList::endChange() ()
#22 0x082cada4 in SelectionCommand::redo() ()
#23 0x08358aa4 in BUndoStack::push(BUndoCommand*) ()
#24 0x08942835 in ThumbView::activateThumb(HID, QFlags<Qt::KeyboardModifier>) ()
#25 0x0894346f in ThumbView::keyPressEvent(QKeyEvent*) ()
#26 0x0893d33d in ThumbView::selectNext() ()
#27 0x08ae9598 in ThumbView::qt_metacall(QMetaObject::Call, int, void**) ()
#28 0xf4e5b875 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /opt/AfterShotPro/lib/libQtCore.so.4
#29 0xf4e6e3d3 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /opt/AfterShotPro/lib/libQtCore.so.4
#30 0xf50d2343 in QAction::activated(int) () from /opt/AfterShotPro/lib/libQtGui.so.4
#31 0xf50d3d58 in QAction::activate(QAction::ActionEvent) () from /opt/AfterShotPro/lib/libQtGui.so.4
#32 0xf50d5feb in QAction::event(QEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#33 0xf50da14c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#34 0xf50e0942 in QApplication::notify(QObject*, QEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#35 0xf4e55a9b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#36 0xf511b698 in QShortcutMap::dispatchEvent(QKeyEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#37 0xf511d4ef in QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#38 0xf50e2ab2 in QApplication::notify(QObject*, QEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#39 0xf4e55a9b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /opt/AfterShotPro/lib/libQtCore.so.4
#40 0xf50d9f9e in qt_sendSpontaneousEvent(QObject*, QEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#41 0xf5193760 in QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags<Qt::KeyboardModifier>, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#42 0xf51958e4 in QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) () from /opt/AfterShotPro/lib/libQtGui.so.4
#43 0xf516b2e9 in QApplication::x11ProcessEvent(_XEvent*) () from /opt/AfterShotPro/lib/libQtGui.so.4
#44 0xf5198bdb in QEventDispatcherX11::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtGui.so.4
#45 0xf4e544ca in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#46 0xf4e54952 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/AfterShotPro/lib/libQtCore.so.4
#47 0xf4e58a69 in QCoreApplication::exec() () from /opt/AfterShotPro/lib/libQtCore.so.4
#48 0xf50d9277 in QApplication::exec() () from /opt/AfterShotPro/lib/libQtGui.so.4
#49 0x08ab6f65 in ourmain(int, char**) ()
#50 0x08ab8222 in main ()
Any ideas on what could be going wrong and how to avoid this (or fix it). It's fairly reproduceable and I'm willing to do whatever debugging is required.
Thanks.
~ Bryan
