Bug 371234 - kdenlive_render crashes every render
Summary: kdenlive_render crashes every render
Status: RESOLVED FIXED
Alias: None
Product: kdenlive
Classification: Applications
Component: Video Display & Export (show other bugs)
Version: 16.08.2
Platform: Neon Linux
: NOR minor
Target Milestone: ---
Assignee: Jean-Baptiste Mardelle
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-10-19 18:24 UTC by Peter
Modified: 2016-11-15 20:56 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Patch to fix segfault and respect kdenlive_render help text (948 bytes, patch)
2016-11-09 09:03 UTC, Peter
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Peter 2016-10-19 18:24:57 UTC
kdenlive_render crashes after every render leaving a working filename.ext and a completed progress text file filename.ext.txt ending in "Rendering of filename.ext finished."

Mostly annoying because kdenlive no longer cleans up the text file after rendering.

This is present in kdenlive-16.08.2 on KDE Neon and Gentoo Unstable. This was not present in kdenlive-16.08.1

Backtrace:

Thread 1 "kdenlive_render" received signal SIGSEGV, Segmentation fault.
__memmove_ssse3 () at ../sysdeps/x86_64/multiarch/memcpy-ssse3.S:2987
2987    ../sysdeps/x86_64/multiarch/memcpy-ssse3.S: No such file or directory.
(gdb) thread apply all bt

Thread 2 (Thread 0x7ffff2b60700 (LWP 15707)):
#0  0x00007ffff72aee8d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007ffff5c0a39c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007ffff5c0a4ac in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff7bd92ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff7b83d9a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff79a9044 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff7f667a5 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffff79adc28 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff6f9e6fa in start_thread (arg=0x7ffff2b60700) at pthread_create.c:333
#9  0x00007ffff72bab5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7ffff7ebf8c0 (LWP 15703)):
#0  __memmove_ssse3 () at ../sysdeps/x86_64/multiarch/memcpy-ssse3.S:2987
#1  0x00007ffff7a0e311 in QListData::remove(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff7a0e629 in QListData::erase(void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x0000000000409343 in QList<QString>::erase (it=..., this=0x7fffffffd2c0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:533
#4  QList<QString>::removeLast (this=0x7fffffffd2c0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:348
#5  QList<QString>::takeLast (this=0x7fffffffd2c0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:561
#6  RenderJob::slotIsOver (this=0x62b260, status=QProcess::NormalExit, isWritable=<optimised out>) at /workspace/build/renderer/renderjob.cpp:289
#7  0x00007ffff7bb0bc9 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff7aba1b1 in QProcess::stateChanged(QProcess::ProcessState, QProcess::QPrivateSignal) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffff7abc1cd in QProcess::setProcessState(QProcess::ProcessState) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007ffff7abc1f4 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007ffff7ac20af in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff7ac2239 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff7bb0bc9 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007ffff7c295de in QSocketNotifier::activated(int, QSocketNotifier::QPrivateSignal) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff7bbd12b in QSocketNotifier::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007ffff7b85d9b in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007ffff7bd97ad in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff5c0a1a7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff5c0a400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007ffff5c0a4ac in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007ffff7bd92ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff7b83d9a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff7b8c3ac in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x0000000000404f43 in main (argc=18, argv=<optimised out>) at /workspace/build/renderer/kdenlive_render.cpp:123
Comment 1 Peter 2016-10-19 18:53:32 UTC
Removing the following from kdenlive-16.08.2/renderer/renderjob.cpp makes it not crash.

>             // Decode url
>             QString url = QUrl::fromEncoded(args.takeLast().toUtf8()).path();
>             args << url;

Problem also present in git head.
Comment 2 Peter 2016-11-09 09:03:45 UTC
Created attachment 102139 [details]
Patch to fix segfault and respect kdenlive_render help text

Hi, this was segfaulting pretty much everytime due to args.takeLast() not finding anything, but also didn't really do what the kdenlive_render help text describes "player" field as doing ("player: path to video player to play when rendering is over, use '-' to disable playing").

Admittedly, the patch accepts path or just the program name.

Anyway, now it will ignore "-" as described and will control what player is used when provided. If this issue is why player was removed from kdenlive, I suppose it could be added back in?

Also probably fixes at least #371487 & #371263.
Comment 4 Peter 2016-11-10 10:59:11 UTC
Even just && m_player != "-" alone would mean "generate script" scripts wouldn't try to play anything and segfault because of not enough arguments as generate script uses "-" as the player for kdenlive_render - this is how I render all my files.