Kdenlive   bug tracker Home page

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003240KdenliveUser Interfacepublic2014-03-29 09:292014-09-26 22:52
Reportervarchar 
Assigned ToSteve Guilford 
PrioritynormalSeveritycrashReproducibilitysometimes
StatusfeedbackResolutionfixed 
Platform64 bitOSGentoo LinuxOS Version
Product Version0.9.6 
Target VersionRecent gitFixed in VersionRecent git 
Summary0003240: Fast undo/redo actions crash kdenlive
DescriptionNow undo/redo must be used with some patience, because if you do it to fast kdenlive may crash.
Steps To ReproduceAdd some clip(s) on timeline,
make some changes,
try undo/redo by _fast_ clicking toolbar buttons until kdenlive crashes.
TagsNo tags attached.
Build/Install Method(select)
Attached Filestxt file icon gdb-kdenlive.txt [^] (12,095 bytes) 2014-03-29 14:23 [Show Content]
txt file icon gdb-kdenlive-symbols.txt [^] (13,300 bytes) 2014-03-29 15:16 [Show Content]
diff file icon bug3240.diff [^] (1,444 bytes) 2014-09-04 07:36 [Show Content]

- Relationships

-  Notes
(0009819)
j-b-m (administrator)
2014-03-29 13:19

A back trace would be useful, I cannot reproduce...
See instructions here (under step 3):
http://kdenlive.org/node/872 [^]
(0009820)
varchar (reporter)
2014-03-29 14:24

Recompiled kdenlive & MLT with "debug" use flags, crashed it by undo/redo, and attached the execution log and backtrace from run under gdb.

$ kdenlive -v
Qt: 4.8.5
KDE Development Platform: 4.11.5
Kdenlive: 0.9.6

$ melt -version
melt 0.9.0
Copyright (C) 2002-2013 Ushodaya Enterprises Limited

My steps before crash was: adding 6 clips to project tree and timeline (one video h264/mkv no audio and 5 ppm bitmaps) rearange them, changing duration of some of them end then fast undo/redo clicking. Before crush a couple of errors on the status bar appears, with messages like "error removing clip at 00:00:04:00 on track 0".

If I can provide some any additional info please tell me about it.
(0009828)
j-b-m (administrator)
2014-03-29 23:09

Working on it..
(0009830)
varchar (reporter)
2014-03-29 23:55

Good luck and thank you! Good to know that kdenlive alive.
(0009831)
j-b-m (administrator)
2014-03-30 01:56

I just committed some improvements. Not 100% crash free but it is much better for me now. Can you please test?
(0009871)
varchar (reporter)
2014-03-31 23:51

Tested with Kdenlive: 0.9.7 (rev. v0.9.4-357-g3869054).

Yes, still possible to crash in this way but much harder. This time no error messages was seen before crash.

Note that I tested with toolbar undo/redo buttons only. With shortcuts things may differ. But I can't try. Just discovered that shortcuts in all Qt applications stop working...
(0010188)
vpinon (administrator)
2014-08-05 23:36

Hello, can you check if problem persist with recent versions? Some fixes on multi-threading might have solved the problem...
(0010313)
Steve Guilford (developer)
2014-09-04 07:10
edited on: 2014-09-04 07:28

I've tracked this down. I was able to create a dependable test case that crashed Kdenlive within a couple of keystrokes/operations. From there, after a bunch of time wasted being stubborn, I was able to find the problem relatively quickly with Valgrind.

What it all boiled down to was a read of memory upon an object that had gone out-of-scope and thus been freed. The read took place within the AddEffect logic, specifically triggered as the UndoStack was traversed.

I can not say for certain that this solves every undo/redo crash. Time will tell in that regard.

Solving memory errors is quite difficult and depends upon being able to reproduce a test case dependably. That said, what I did in my environment may not work for you. Therefore, if you are able to produce a undo/redo crash dependably, be sure to note down your sequence of operations.

Here's my test-case:
Build Kdenlive using the Dan's build script.
Start Kdenlive and use the following as the default profile setting:
  HDV 1440x1080i 25Fps
Enable the Undo View via View->Undo History
Exit Kdenlive.
Start Kdenlive
Load a HD 720P 25Fps clip.
Confirm the request to update the current project settings to match the clip.
Move the clip to the timeline at the beginning of 'Video 1'.
Open the Effects List tab.
Navigate to Fade.
Open the Fade list.
Drag 'Fade From Black' to the clip within the timeline.
Ctrl-Z to undo.
Shift-Ctrl-Z to redo --> Crash !!!

So, with a test case I ran valgrind --leak-check=yes. It reported several invalid read operations upon hitting Shift-Ctrl-Z. Here's one...

==20875== Invalid read of size 8
==20875== at 0x79E9698: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79E8F5C: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79F0F63: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79F0FC5: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79E8F4E: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79F0F63: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79F108B: ??? (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x79F1288: QDomDocument::importNode(QDomNode const&, bool) (in /usr/lib/x86_64-linux-gnu/libQtXml.so.4.8.6)
==20875== by 0x673FDA: EffectsList::append(QDomElement) (effectslist.cpp:308)
==20875== by 0x53DF1D: ClipItem::addEffect(QDomElement, bool) (clipitem.cpp:1557)
==20875== by 0x55E1F1: CustomTrackView::addEffect(int, GenTime, QDomElement) (customtrackview.cpp:1880)
==20875== by 0x5A4808: AddEffectCommand::redo() (timelinecommands.cpp:59)
==20875== Address 0x1d034068 is 120 bytes inside a block of size 128 free'd
==20875== at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==20875== by 0x5411B9: ClipItem::dropEvent(QGraphicsSceneDragDropEvent*) (clipitem.cpp:1795)
==20875== by 0x721B717: QGraphicsItem::sceneEvent(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6)

From there I was able to determine the problem to be due to the m_effect item in the AddEffectCommand class going out of scope and being freed. The m_effect item was being set in the class constructor w/ m_effect(effect.cloneNode().toElement()) which for reasons I have yet to understand, does not create a persistent item. The fix is to use m_effect(effect).

Since this logic path sat in the middle of any effect that was added to a clip in the timeline, it has the potential to be a prevalent and insidious bug. Once an effect was added and the user traversed though the effect on the undo/redo stack, the memory bug was enabled and Kdenlive could crash at any point thereafter.

(0010397)
farid (updater)
2014-09-26 22:52

recently got a crash anfter an undo of shift+r

hope this helps:
(gdb) backtrace
#0 0x00007ffff5b9aef5 in QGraphicsItemPrivate::invalidateParentGraphicsEffectsRecursively() () from /usr/lib/libQtGui.so.4
#1 0x00007ffff5ba70b7 in QGraphicsItem::update(QRectF const&) ()
   from /usr/lib/libQtGui.so.4
0000002 0x0000000000562cc3 in _start ()

- Issue History
Date Modified Username Field Change
2014-03-29 09:29 varchar New Issue
2014-03-29 13:19 j-b-m Note Added: 0009819
2014-03-29 13:19 j-b-m Assigned To => j-b-m
2014-03-29 13:19 j-b-m Status new => feedback
2014-03-29 14:23 varchar File Added: 0003240-gdb-kdenlive.txt
2014-03-29 14:24 varchar Note Added: 0009820
2014-03-29 14:24 varchar Status feedback => assigned
2014-03-29 15:16 varchar File Added: 0003240-gdb-kdenlive-symbols.txt
2014-03-29 23:09 j-b-m Note Added: 0009828
2014-03-29 23:09 j-b-m Status assigned => acknowledged
2014-03-29 23:55 varchar Note Added: 0009830
2014-03-30 01:56 j-b-m Note Added: 0009831
2014-03-31 23:51 varchar Note Added: 0009871
2014-08-05 23:36 vpinon Note Added: 0010188
2014-08-05 23:36 vpinon Assigned To j-b-m => vpinon
2014-08-05 23:36 vpinon Status acknowledged => assigned
2014-08-15 01:00 vpinon Status assigned => feedback
2014-09-04 07:10 Steve Guilford Note Added: 0010313
2014-09-04 07:28 Steve Guilford Note Edited: 0010313 View Revisions
2014-09-04 07:34 Steve Guilford Assigned To vpinon => Steve Guilford
2014-09-04 07:34 Steve Guilford Status feedback => resolved
2014-09-04 07:34 Steve Guilford Resolution open => fixed
2014-09-04 07:34 Steve Guilford Fixed in Version => Recent git
2014-09-04 07:34 Steve Guilford Target Version => Recent git
2014-09-04 07:35 Steve Guilford Status resolved => feedback
2014-09-04 07:36 Steve Guilford File Added: bug3240.diff
2014-09-26 22:52 farid Note Added: 0010397


Copyright © 2000 - 2014 MantisBT Team
Powered by Mantis Bugtracker