Bug 285827 - calligraconverter hangs when converting ora to png
Summary: calligraconverter hangs when converting ora to png
Status: RESOLVED WAITINGFORINFO
Alias: None
Product: krita
Classification: Applications
Component: File formats (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-11-05 15:39 UTC by Halla Rempt
Modified: 2012-05-15 08:56 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
test ora file (148.36 KB, image/openraster)
2011-11-05 15:39 UTC, Halla Rempt
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Halla Rempt 2011-11-05 15:39:06 UTC
Some locking/unlocking problem?
Comment 1 Halla Rempt 2011-11-05 15:39:26 UTC
Created attachment 65260 [details]
test ora file
Comment 2 Cyrille Berger 2011-11-05 19:06:59 UTC
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
Comment 3 Halla Rempt 2011-11-16 12:28:27 UTC
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
Comment 4 Halla Rempt 2011-11-16 12:51:52 UTC
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
Comment 5 Halla Rempt 2011-11-16 13:27:48 UTC
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
Comment 6 Dmitry Kazakov 2011-11-20 09:21:11 UTC
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
Comment 7 Dmitry Kazakov 2011-11-20 09:22:27 UTC
Looks like the bug is fixed now, could you test please?