[vlc] VLC can't open MKV files muxed with Mkvmerge

Raul Vidal raulvior.bcn at gmail.com
Mon Apr 14 23:06:52 CEST 2014


Hi all,
I'm new to this list. I just registered to try to get VLC to play MKV 
files made with mkvmerge (6.3 and later).

On Mkvmerge I'm not doing nothing in special. For testing I took a file 
written by Handbrake which would play on both VLC and SMPlayer and 
remuxed it with Mkvmerge. The file resulting from Mkvmerge didn't play 
in VLC nor SMPlayer.

After reading the mediainfo output I saw that Mkvmerge was using Lavf 
library instead of libeml and libmatroska. I decided then to turn on the 
--engage lacing_ebml option and muxed again the file. The output did 
play on SMPlayer but VLC still didn't want to read it.

I've been adding more options but without any luck. The suggestions from 
mkvtoolnix webpage didn't work (
https://trac.bunkus.org/wiki/FAQ:PlaybackDoesNotWorkVLCCannotSeekMkvmerge590
https://trac.bunkus.org/wiki/FAQ%3AImprovingPlaybackCompatibilityWithPlayers#Notusingcertainnewelementsinthecueswith--engageno_cue_durationand--engageno_cue_relative_position
). VLC still crashes.

The crash output is as follows (it's always the same crash):
VLC media player 2.0.8 Twoflower (revision 2.0.8a-0-g68cf50b)
[0x1e0d108] main libvlc: Ejecutar vlc con la interfaz predeterminada. 
Use «cvlc» para usar vlc sin interfaz.
libva info: VA-API version 0.33.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
[0x7f45a8c17278] avcodec decoder: Using VA API version 0.33 for hardware 
decoding.
*** Error in `vlc': free(): invalid next size (fast): 0x00007f457837ec70 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x80996)[0x7f45bc809996]
/lib/x86_64-linux-gnu/libc.so.6(+0x82614)[0x7f45bc80b614]
/lib/x86_64-linux-gnu/libc.so.6(__libc_memalign+0x9a)[0x7f45bc80ce1a]
/lib/x86_64-linux-gnu/libc.so.6(posix_memalign+0x4c)[0x7f45bc80ea2c]
/usr/lib/x86_64-linux-gnu/libavutil.so.51(av_malloc+0x2b)[0x7f4589532d2b]
/usr/lib/x86_64-linux-gnu/libavutil.so.51(av_mallocz+0xe)[0x7f4589532d9e]
/usr/lib/x86_64-linux-gnu/libavcodec.so.53(+0x46ed2)[0x7f458978ced2]
/usr/lib/x86_64-linux-gnu/libavcodec.so.53(+0x21590c)[0x7f458995b90c]
/usr/lib/x86_64-linux-gnu/libavcodec.so.53(+0x217fc2)[0x7f458995dfc2]
/usr/lib/x86_64-linux-gnu/libavcodec.so.53(+0x218cd9)[0x7f458995ecd9]
/usr/lib/x86_64-linux-gnu/libavcodec.so.53(avcodec_decode_video2+0xa1)[0x7f4589b11781]
/usr/lib/vlc/plugins/codec/libavcodec_plugin.so(+0x611e)[0x7f458a90811e]
/usr/lib/libvlccore.so.5(+0x3ce2f)[0x7f45bcfaee2f]
/usr/lib/libvlccore.so.5(+0x3dcc5)[0x7f45bcfafcc5]
/usr/lib/libvlccore.so.5(+0x3dde4)[0x7f45bcfafde4]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7f6e)[0x7f45bcd5cf6e]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f45bc8839cd]




I also downloaded the debugging symbols for VLC and run it inside gdb to 
get more detail, this is what GDB shows in the backtrace:
Program received signal SIGABRT, Aborted.
....
#0  0x00007ffff712bf77 in __GI_raise (sig=sig at entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff712f5e8 in __GI_abort () at abort.c:90
#2  0x00007ffff71694fb in __libc_message (do_abort=do_abort at entry=2, 
fmt=fmt at entry=0x7ffff727d240 "*** Error in `%s': %s: 0x%s ***\n")
     at ../sysdeps/unix/sysv/linux/libc_fatal.c:199
#3  0x00007ffff7175996 in malloc_printerr (ptr=0x7fffbc362bb0, 
str=0x7ffff727d3e0 "free(): invalid next size (fast)", action=3) at 
malloc.c:4923
#4  _int_free (av=av at entry=0x7fffbc000020, p=p at entry=0x7fffbc362ba0, 
have_lock=have_lock at entry=1) at malloc.c:3779
#5  0x00007ffff7177614 in _int_memalign (av=av at entry=0x7fffbc000020, 
alignment=alignment at entry=32, bytes=bytes at entry=24964) at malloc.c:4393
#6  0x00007ffff7178e1a in __GI___libc_memalign (alignment=32, 
bytes=24964) at malloc.c:3033
#7  0x00007ffff717aa2c in __posix_memalign (memptr=0x7fffc7822868, 
alignment=18446744073709551615, size=26185) at malloc.c:4953
#8  0x00007fffca117d2b in av_malloc () from 
/usr/lib/x86_64-linux-gnu/libavutil.so.51
#9  0x00007fffca117d9e in av_mallocz () from 
/usr/lib/x86_64-linux-gnu/libavutil.so.51
#10 0x00007fffca37191e in ?? () from 
/usr/lib/x86_64-linux-gnu/libavcodec.so.53
#11 0x00007fffca54090c in ?? () from 
/usr/lib/x86_64-linux-gnu/libavcodec.so.53
#12 0x00007fffca542fc2 in ?? () from 
/usr/lib/x86_64-linux-gnu/libavcodec.so.53
#13 0x00007fffca543cd9 in ?? () from 
/usr/lib/x86_64-linux-gnu/libavcodec.so.53
#14 0x00007fffca6f6781 in avcodec_decode_video2 () from 
/usr/lib/x86_64-linux-gnu/libavcodec.so.53
#15 0x00007fffcb4ed11e in DecodeVideo (p_dec=0x7fffdc003a78, 
pp_block=<optimized out>) at video.c:622
#16 0x00007ffff791ae2f in DecoderDecodeVideo 
(p_dec=p_dec at entry=0x7fffdc003a78, p_block=0x7fffdcc12090, 
p_block at entry=0x0) at input/decoder.c:1517
#17 0x00007ffff791bcc5 in DecoderProcessVideo (b_flush=false, 
p_block=0x7fffdcc12090, p_dec=0x7fffdc003a78) at input/decoder.c:1888
#18 DecoderProcess (p_dec=p_dec at entry=0x7fffdc003a78, 
p_block=p_block at entry=0x7fffdcc12090) at input/decoder.c:2063
#19 0x00007ffff791bde4 in DecoderThread (p_data=0x7fffdc003a78) at 
input/decoder.c:938
#20 0x00007ffff76c8f6e in start_thread (arg=0x7fffc7823700) at 
pthread_create.c:311
#21 0x00007ffff71ef9cd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:113



The VLC version I'm using is 2.0.8, the one available in Ubuntu 13.10 
repositories. It plays without any problems the file coming from 
Handbrake but not from mkvmerge. I've tested a lot of options but none 
did work.

Thanks in advance.



More information about the vlc mailing list