[BUG] ASP Stuck in futex_wait_queu_me -- Deadlock?

Bugs & Suggestions
Post Reply
bmason
Posts: 2
Joined: Sun May 13, 2012 6:40 am
operating_system: Linux
System_Drive: N/A
32bit or 64bit: 64 Bit
motherboard: Dell Inspiron 530
processor: Intel Core 2 Duo CPU E7400 - 2.80GHz
ram: 4GB
Video Card: nVidia Corporation G84 [GeForce 8600 GTS]
sound_card: Intel Corporation 82801I [ICH9 Family]
Hard_Drive_Capacity: 500G
Monitor/Display Make & Model: Dell

[BUG] ASP Stuck in futex_wait_queu_me -- Deadlock?

Post by bmason »

While using the "[" and "]" keys to go through a selection of images and then using the "." key to flag the ones that I'll come back to for more processing , AfterShot Pro frequently "hangs". Running top shows that it's not taking any CPU time. Running ps results in:
$ 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 ./AfterShotPro
Looking 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 ()
I'm running ASP 1.0.1.10 on 64-bit Fedora 16 (glibc-2.14.90-24.fc16.6).

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
afx
Posts: 1675
Joined: Thu Jan 12, 2012 1:38 pm
operating_system: Linux
System_Drive: N/A
32bit or 64bit: 64 Bit
Video Card: FirePro 4900
Monitor/Display Make & Model: NEC PA301w, ColorMunki
Location: München
Contact:

Re: [BUG] ASP Stuck in futex_wait_queu_me -- Deadlock?

Post by afx »

bmason wrote: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.
Work slower ;-(
Seriously, AS seems to step on its own feet when doing image culling/tagging quickly that way. A tad bit slower on the keyboard and the chances to get this hang are greatly reduced.
Also, let it finish creating the previews first.

That is an old wart, B5 had it as well.

cheers
afx
Send bugs to the Monkey // AfterShot Kickstart Guide // sRGB clipping sucks and Adobe RGB is just as bad
Bibble since 2005 // W7 64 on quad Phenom // Ubuntu 14.4 on quad i7 and dualcore AMD // Images
bmason
Posts: 2
Joined: Sun May 13, 2012 6:40 am
operating_system: Linux
System_Drive: N/A
32bit or 64bit: 64 Bit
motherboard: Dell Inspiron 530
processor: Intel Core 2 Duo CPU E7400 - 2.80GHz
ram: 4GB
Video Card: nVidia Corporation G84 [GeForce 8600 GTS]
sound_card: Intel Corporation 82801I [ICH9 Family]
Hard_Drive_Capacity: 500G
Monitor/Display Make & Model: Dell

Re: [BUG] ASP Stuck in futex_wait_queu_me -- Deadlock?

Post by bmason »

afx wrote: Work slower ;-(
...
Also, let it finish creating the previews first.
Not optimal, but it does seem to help (especially letting it finish the previews first).

Thanks!
Post Reply