| Anonymous | Login | Signup for a new account | 2013-05-22 13:19 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||
| 0002286 | Kdenlive | MLT | public | 2011-08-18 11:28 | 2011-11-01 18:56 | ||||
| Reporter | Olivier Berten | ||||||||
| Assigned To | j-b-m | ||||||||
| Priority | normal | Severity | crash | Reproducibility | always | ||||
| Status | closed | Resolution | fixed | ||||||
| Platform | 32 bit intel and alike | OS | Ubuntu | OS Version | 11.04 | ||||
| Product Version | Recent git | ||||||||
| Target Version | Fixed in Version | 0.8.2 | |||||||
| Summary | 0002286: crash when attempting to render 10 simultaneous tracks | ||||||||
| Description | I'm using Kdenlive for basic audio mixing. On one project, I have to deal with 11 audio tracks and as soon as it hits the 10th simultaneous clip, it crashes. When trying to render, only the rendering process crashes. When trying to play, the whole program crashes. | ||||||||
| Additional Information | Here is the backtrace. I first tried to render then play. The last 2 lines are the playing part. project monitor connected clip monitor connected QWidget::insertAction: Attempt to insert null action QWidget::insertAction: Attempt to insert null action //STARTING RENDERING: true , false , "/usr/bin/melt" , "atsc_720p_60" , "avformat" , "-" , "/tmp/kde-oli/kdenliveuX5481.mlt" , "/home/oli/kdenlive/Nous venons d'orient.wav" , () , ("f=wav", "ar=44100", "video_off=1", "threads=1", "real_time=-1") , -1 , -1 Started render process: "/usr/bin/melt" "/tmp/kde-oli/kdenliveuX5481.mlt -profile atsc_720p_60 -consumer avformat:/home/oli/kdenlive/Nous venons d'orient.wav progress=1 f=wav ar=44100 video_off=1 threads=1 real_time=-1" "Rendering of /home/oli/kdenlive/Nous venons d'orient.wav aborted, resulting video will probably be corrupted." <unknown>: Fatal IO error 9 (Mauvais descripteur de fichier) on X server :0. Unable to start Dr. Konqi | ||||||||
| Tags | No tags attached. | ||||||||
| Build/Install Method | Distribution package | ||||||||
| Attached Files | |||||||||
Notes |
|
|
(0007207) Olivier Berten (reporter) 2011-08-18 11:30 |
Oops, wrong category... please change to Render |
|
(0007237) j-b-m (administrator) 2011-08-29 11:35 |
I confirm that the crash is reproducible, the problem is in MLT or FFmpeg. Crash happens when using more than 10 tracks using avformat producers in MLT. To reproduce: melt 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav -track 1.wav Note that with 10 tracks it works ok, but 11 crashes. Using the same file for all tracks or a different file for each track doesn't make a difference. Both commands crash. Backtrace: ALSA lib pcm.c:7316:(snd_pcm_recover) underrun occurred [New Thread 0xaf3feb70 (LWP 11894)] Current Position: 0 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xaf3feb70 (LWP 11894)] mlt_deque_pop_back (self=0x0) at mlt_deque.c:130 130 return self->count > 0 ? self->list[ -- self->count ].addr : NULL; (gdb) thread apply all bt Thread 7 (Thread 0xaf3feb70 (LWP 11894)): #0 mlt_deque_pop_back (self=0x0) at mlt_deque.c:130 #1 0xb3c1c636 in producer_avformat_close (self=0xaf5b5928) at producer_avformat.c:2582 0000002 0xb7fb29b0 in cache_object_close (object=0x83c2520, data=0xaf5b5928, cache=<optimized out>) at mlt_cache.c:131 0000003 0xb7fb2a45 in mlt_cache_item_close (item=0x81491b0) at mlt_cache.c:174 0000004 0xb7f9e7bb in mlt_property_clear (self=0x81d2cf0) at mlt_property.c:117 0000005 mlt_property_close (self=0x81d2cf0) at mlt_property.c:590 0000006 0xb7f9eedc in mlt_properties_close (self=0x8989f50) at mlt_properties.c:1317 0000007 0xb7f9a4c7 in mlt_frame_close (self=0x8989f50) at mlt_frame.c:875 0000008 mlt_frame_close (self=0x8989f50) at mlt_frame.c:866 0000009 0xb7f9e7bb in mlt_property_clear (self=0x8995138) at mlt_property.c:117 0000010 mlt_property_close (self=0x8995138) at mlt_property.c:590 0000011 0xb7f9eedc in mlt_properties_close (self=0x8185f30) at mlt_properties.c:1317 0000012 0xb7f9a4c7 in mlt_frame_close (self=0x8185f30) at mlt_frame.c:875 0000013 mlt_frame_close (self=0x8185f30) at mlt_frame.c:866 0000014 0xb7f9e7bb in mlt_property_clear (self=0x8783e58) at mlt_property.c:117 0000015 mlt_property_close (self=0x8783e58) at mlt_property.c:590 0000016 0xb7f9eedc in mlt_properties_close (self=0x81d24d8) at mlt_properties.c:1317 0000017 0xb7f9a4c7 in mlt_frame_close (self=0x81d24d8) at mlt_frame.c:875 0000018 mlt_frame_close (self=0x81d24d8) at mlt_frame.c:866 0000019 0xb3c0715f in video_thread (arg=0x81b5090) at consumer_sdl.c:760 0000020 0xb7f7ed31 in start_thread (arg=0xaf3feb70) at pthread_create.c:304 0000021 0xb7ecd0ce in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 Backtrace stopped: Not enough registers or memory available to unwind further (...) |
|
(0007265) ddennedy (developer) 2011-09-03 21:28 |
MLT defaults to only permitting 10 *active* instances of avformat at the same time. This is an arbitrary default for the mlt_cache subsystem. To resolve it, something needs to call mlt_service_cache_set_size(service, "producer_avformat", N) on *any* MLT service object. N should probably equal the total number of tracks: audio + video. |
|
(0007268) j-b-m (administrator) 2011-09-04 20:42 |
Ok, I made further tests which revealed several problems. First of all, the crash is effectively related to MLT's maximum cache size. However, the method suggested by Dan does not work. Looking at mlt_service_cache_set_size, it calls: mlt_cache_set_size( cache, size ); Looking at the code for mlt_cache_set_size, I discovered that this function can only be called to make the cache size smaller, not larger, as explained in the description for this function. Trying to change this function to allow a cache size increase also fails, probably because some other stuff (like the "void* A" and "void* B" functions are defined using MAX_CACHE_SIZE which always has a value of 10). Manually changing the MAX_CACHE_SIZE default value fixes the crash but MLT is not able to change that max value correctly. Dan, can you have a look at it? |
|
(0007271) ddennedy (developer) 2011-09-04 21:56 |
Please confirm fix in mlt git commit e22f54d. I tried to fix melt as well in that commit because come render time, it would be affected. Oh, wait, I need to fix producer_xml as well, doing that now... |
|
(0007273) ddennedy (developer) 2011-09-04 22:01 |
...will need to come back to the xml producer tomorrow. |
|
(0007277) j-b-m (administrator) 2011-09-04 23:00 |
Wouldn't it be easier to directly patch MLT in the multitrack code? With your change to mlt_cache, the following patch solves the crash for me (no need to patch melt nor xml in that case): --- a/src/framework/mlt_multitrack.c +++ b/src/framework/mlt_multitrack.c @@ -211,8 +211,11 @@ int mlt_multitrack_connect( mlt_multitrack self, mlt_producer producer, int trac mlt_event_inc_ref( self->list[ track ]->event ); // Increment the track count if need be - if ( track >= self->count ) + if ( track >= self->count ) { self->count = track + 1; + if ( self->count > 10 ) + mlt_service_cache_set_size( MLT_MULTITRACK_SERVICE( self ), "producer_avformat", self->count ); + } // Refresh our stats mlt_multitrack_refresh( self ); |
|
(0007278) ddennedy (developer) 2011-09-05 07:30 |
Yes, perhaps easier. However, generally, I do not like putting module-specific code into the framework. I try to keep the framework code as clean and simple as possible pushing more complexity into the modules. |
|
(0007279) ddennedy (developer) 2011-09-05 08:07 |
more changes including producer_xml pushed to mlt git. |
|
(0007282) ddennedy (developer) 2011-09-06 23:33 |
Fixed in mlt git commit fa7d3ce using j-b-m's suggestion. |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2011-08-18 11:28 | Olivier Berten | New Issue | |
| 2011-08-18 11:28 | Olivier Berten | File Added: Nous venons d'orient.kdenlive | |
| 2011-08-18 11:30 | Olivier Berten | Note Added: 0007207 | |
| 2011-08-29 11:33 | j-b-m | Category | User Interface => MLT |
| 2011-08-29 11:35 | j-b-m | Note Added: 0007237 | |
| 2011-08-29 11:35 | j-b-m | Assigned To | => j-b-m |
| 2011-08-29 11:35 | j-b-m | Status | new => acknowledged |
| 2011-09-03 21:28 | ddennedy | Note Added: 0007265 | |
| 2011-09-04 20:42 | j-b-m | Note Added: 0007268 | |
| 2011-09-04 21:56 | ddennedy | Note Added: 0007271 | |
| 2011-09-04 22:01 | ddennedy | Note Added: 0007273 | |
| 2011-09-04 23:00 | j-b-m | Note Added: 0007277 | |
| 2011-09-05 07:30 | ddennedy | Note Added: 0007278 | |
| 2011-09-05 08:07 | ddennedy | Note Added: 0007279 | |
| 2011-09-06 23:33 | ddennedy | Note Added: 0007282 | |
| 2011-09-06 23:33 | ddennedy | Status | acknowledged => resolved |
| 2011-09-06 23:33 | ddennedy | Fixed in Version | => Recent git |
| 2011-09-06 23:33 | ddennedy | Resolution | open => fixed |
| 2011-10-31 15:23 | j-b-m | Fixed in Version | Recent git => 0.8.2 |
| 2011-11-01 18:56 | j-b-m | Status | resolved => closed |
| Copyright © 2000 - 2013 MantisBT Team |