Summary: | calligraconverter hangs when converting ora to png | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Halla Rempt <halla> |
Component: | File formats | Assignee: | Krita Bugs <krita-bugs-null> |
Status: | RESOLVED WAITINGFORINFO | ||
Severity: | normal | CC: | cberger, dimula73 |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Unlisted Binaries | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | test ora file |
Description
Halla Rempt
2011-11-05 15:39:06 UTC
Created attachment 65260 [details]
test ora file
It is a bit weird, I get a lock with one thread: (or maybe it is a mutex that can't be taken several time by one thread). #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 #1 0x00007ffff282109b in wait (time=18446744073709551615, this=0x87cdde0) at thread/qwaitcondition_unix.cpp:88 #2 QWaitCondition::wait (this=<optimized out>, mutex=0x87cdca0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:160 #3 0x00007ffff2814fe1 in QThreadPoolPrivate::waitForDone (this=0x87cdc10) at concurrent/qthreadpool.cpp:295 #4 0x00007ffff281647d in QThreadPool::waitForDone (this=<optimized out>) at concurrent/qthreadpool.cpp:616 #5 0x00007fffe12bc251 in KisUpdateScheduler::fullRefresh (this=0x87cd380, root=..., rc=<optimized out>, cropRect=<optimized out>) at /home/cyrille/Projects/kde4/src/calligra/krita/image/kis_update_scheduler.cpp:150 #6 0x00007fffe12cb4f6 in KisImage::refreshGraph (this=0x771a60, root=..., rc=..., cropRect=...) at /home/cyrille/Projects/kde4/src/calligra/krita/image/kis_image.cc:1269 #7 0x00007fffe12cb5e9 in KisImage::refreshGraph (this=0x771a60, root=...) at /home/cyrille/Projects/kde4/src/calligra/krita/image/kis_image.cc:1261 #8 0x00007fffbdc78eb7 in KisPNGExport::convert (this=<optimized out>, from=..., to=<optimized out>) at /home/cyrille/Projects/kde4/src/calligra/krita/plugins/formats/png/kis_png_export.cc:89 #9 0x00007ffff7b31176 in CalligraFilter::ChainLink::invokeFilter (this=0x797e20, parentChainLink=0x0) at /home/cyrille/Projects/kde4/src/calligra/libs/main/KoFilterChainLink.cpp:90 #10 0x00007ffff7b27589 in KoFilterChain::invokeChain (this=0x7983d0) at /home/cyrille/Projects/kde4/src/calligra/libs/main/KoFilterChain.cpp:94 #11 0x00007ffff7b23f61 in KoFilterManager::exportDocument (this=0x826cb0, url=<optimized out>, mimeType=...) at /home/cyrille/Projects/kde4/src/calligra/libs/main/KoFilterManager.cpp:243 #12 0x0000000000404bd5 in convert (uIn=..., inputFormat=..., uOut=..., outputFormat=..., batch=false) at /home/cyrille/Projects/kde4/src/calligra/tools/converter/calligraconverter.cpp:83 #13 0x0000000000403cc9 in main (argc=3, argv=0x7fffffffdf18) at /home/cyrille/Projects/kde4/src/calligra/tools/converter/calligraconverter.cpp:160 (gdb) info threads Id Target Id Frame * 1 LWP 17344 "calligraconvert" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 Here's the output of thread apply all bt: (gdb) thread apply all bt Thread 5 (Thread 0x7fffc56b1700 (LWP 6453)): #0 0x00007ffff25736f9 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff27ffb22 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4 #2 0x00007ffff27f4458 in ?? () from /usr/lib64/libQtCore.so.4 #3 0x00007ffff27ff4d5 in ?? () from /usr/lib64/libQtCore.so.4 #4 0x00007ffff256ea3f in start_thread () from /lib64/libpthread.so.0 #5 0x00007ffff18e166d in clone () from /lib64/libc.so.6 #6 0x0000000000000000 in ?? () Thread 4 (Thread 0x7fffc5eb2700 (LWP 6452)): #0 0x00007ffff257338c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff27ffbbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4 #2 0x00007ffff27fc4c5 in QSemaphore::acquire(int) () from /usr/lib64/libQtCore.so.4 #3 0x00007ffff28fd05f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #4 0x00007fffe289c78e in KisImageSignalRouter::__sigNotification (this=<value optimized out>, _t1=SizeChangedSignal) at /home/boud/kde/build/calligra/krita/image/moc_kis_image_signal_router.cpp:157 #5 0x00007fffe294b902 in KisImageResizeCommand::redo (this=0x59a2aa0) at /home/boud/kde/src/calligra/krita/image/commands_new/kis_image_resize_command.cpp:38 #6 0x00007fffe29e3a6d in KisStrokeStrategyUndoCommandBased::doStrokeCallback (this=0x5281c50, data=<value optimized out>) at /home/boud/kde/src/calligra/krita/image/kis_stroke_strategy_undo_command_based.cpp:96 #7 0x00007fffe289f7ab in run (this=0x43e2c50) at /home/boud/kde/build/calligra/krita/image/../../../../src/calligra/krita/image/kis_stroke_job.h:39 #8 KisUpdateJobItem::run (this=0x43e2c50) at /home/boud/kde/build/calligra/krita/image/../../../../src/calligra/krita/image/kis_update_job_item.h:59 #9 0x00007ffff27f43c8 in ?? () from /usr/lib64/libQtCore.so.4 #10 0x00007ffff27ff4d5 in ?? () from /usr/lib64/libQtCore.so.4 #11 0x00007ffff256ea3f in start_thread () from /lib64/libpthread.so.0 #12 0x00007ffff18e166d in clone () from /lib64/libc.so.6 #13 0x0000000000000000 in ?? () Thread 3 (Thread 0x7fffc66b3700 (LWP 6449)): #0 0x00007ffff257338c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff27ffbbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4 #2 0x00007ffff27fc6f9 in QSemaphore::tryAcquire(int, int) () from /usr/lib64/libQtCore.so.4 #3 0x00007fffe28dca2a in KisTileDataSwapper::run (this=0x43fbca8) at /home/boud/kde/src/calligra/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:92 ---Type <return> to continue, or q <return> to quit--- #4 0x00007ffff27ff4d5 in ?? () from /usr/lib64/libQtCore.so.4 #5 0x00007ffff256ea3f in start_thread () from /lib64/libpthread.so.0 #6 0x00007ffff18e166d in clone () from /lib64/libc.so.6 #7 0x0000000000000000 in ?? () Thread 2 (Thread 0x7fffc6eb4700 (LWP 6448)): #0 0x00007ffff257338c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff27ffbbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4 #2 0x00007ffff27fc4c5 in QSemaphore::acquire(int) () from /usr/lib64/libQtCore.so.4 #3 0x00007fffe28a445e in KisTileDataPooler::waitForWork (this=0x43fbc70) at /home/boud/kde/src/calligra/krita/image/tiles3/kis_tile_data_pooler.cc:162 #4 0x00007fffe28a4bcc in KisTileDataPooler::run (this=0x43fbc70) at /home/boud/kde/src/calligra/krita/image/tiles3/kis_tile_data_pooler.cc:184 #5 0x00007ffff27ff4d5 in ?? () from /usr/lib64/libQtCore.so.4 #6 0x00007ffff256ea3f in start_thread () from /lib64/libpthread.so.0 #7 0x00007ffff18e166d in clone () from /lib64/libc.so.6 #8 0x0000000000000000 in ?? () Thread 1 (Thread 0x7ffff7f9f760 (LWP 6343)): #0 0x00007ffff257338c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff27ffbbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4 #2 0x00007ffff27f3a31 in ?? () from /usr/lib64/libQtCore.so.4 #3 0x00007ffff27f4a0d in QThreadPool::waitForDone() () from /usr/lib64/libQtCore.so.4 #4 0x00007fffe29f1be2 in KisUpdateScheduler::fullRefresh (this=0x452e510, root=Cannot access memory at address 0x7fff000004bf ) at /home/boud/kde/src/calligra/krita/image/kis_update_scheduler.cpp:150 #5 0x00007fffe2a03bb3 in KisImage::refreshGraph (this=0xdfa6f0, root=..., rc=..., cropRect=...) at /home/boud/kde/src/calligra/krita/image/kis_image.cc:1286 #6 0x00007fffe2a03cef in KisImage::refreshGraph (this=0xdfa6f0, root=<value optimized out>) at /home/boud/kde/src/calligra/krita/image/kis_image.cc:1278 #7 0x00007fffc4ca662a in KisPNGExport::convert (this=<value optimized out>, from=<value optimized out>, to=<value optimized out>) at /home/boud/kde/src/calligra/krita/plugins/formats/png/kis_png_export.cc:89 #8 0x00007ffff7b34828 in CalligraFilter::ChainLink::invokeFilter (this=0x7dc6e0, parentChainLink=0x0) at /home/boud/kde/src/calligra/libs/main/KoFilterChainLink.cpp:90 #9 0x00007ffff7b2b7e9 in KoFilterChain::invokeChain (this=0x7dbdd0) at /home/boud/kde/src/calligra/libs/main/KoFilterChain.cpp:94 #10 0x00007ffff7b286e9 in KoFilterManager::exportDocument (this=<value optimized out>, url=<value optimized out>, mimeType= ...) at /home/boud/kde/src/calligra/libs/main/KoFilterManager.cpp:243 ---Type <return> to continue, or q <return> to quit--- #11 0x000000000040390f in convert (uIn=..., inputFormat=..., uOut=..., outputFormat=<value optimized out>, batch=<value optimized out>) at /home/boud/kde/src/calligra/tools/converter/calligraconverter.cpp:83 #12 0x00000000004050bc in main (argc=0, argv=0x7fffffffd070) at /home/boud/kde/src/calligra/tools/converter/calligraconverter.cpp:160 Some test data: 13:50:44 < deevad> boud: calligraconverter hang-on with ora > png ; but ora > jpg works , jpg > ora works too :) and jpg > png and xcf > png works too Git commit 52f13ac5fa6aed9149a9ae4a85788660440309e3 by Boudewijn Rempt. Committed on 16/11/2011 at 14:24. Pushed by rempt into branch 'master'. Make ora work with calligraconverter The ora importer used KisImage::resize to resize images after loading all the layers. This broke when KisImage::resize was ported to the strokes framework and actually became an asynch crop+resize implementation. Somehow, the resize never finished when run in batch mode, which meant that subsequently the png export couldn't even start. CCBUG:285827 M +14 -12 krita/ui/openrastertk/kis_open_raster_stack_load_visitor.cpp http://commits.kde.org/calligra/52f13ac5fa6aed9149a9ae4a85788660440309e3 Git commit e748a1321f797dfa9c286d43aeca69ffd88f89ec by Dmitry Kazakov. Committed on 20/11/2011 at 11:20. Pushed by dkazakov into branch 'master'. Restored synchronization during image loading Looks like the previous fix by boud for ora has fixed the problem. I tested opening and conversion of .ora, .kra and it works fine. CCBUG:285827 M +1 -1 krita/image/kis_image.cc http://commits.kde.org/calligra/e748a1321f797dfa9c286d43aeca69ffd88f89ec Looks like the bug is fixed now, could you test please? |