Package: libavcodec52 Version: 4:0.6.2-4 Severity: important Tags: patch Yesterday mplayer crashed trying to play a WMV file:
,---- | Program received signal SIGSEGV, Segmentation fault. | ff_imdct_calc_sse (s=0xf535d4b0, output=0xf53594b0, input=0xf53554b0) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/x86/fft_sse.c:185 | 185 /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/x86/fft_sse.c: Datei oder Verzeichnis nicht gefunden. | in /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/x86/fft_sse.c | (gdb) bt full | #0 ff_imdct_calc_sse (s=0xf535d4b0, output=0xf53594b0, input=0xf53554b0) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/x86/fft_sse.c:185 | j = -4096 | k = 4080 | n = 4096 | n4 = 1024 | #1 0xf6e2b270 in ff_imdct_calc (s=0xf534d020, samples=0xf5375020) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/fft.h:140 | No locals. | #2 wma_decode_block (s=0xf534d020, samples=0xf5375020) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/wmadec.c:750 | n4 = 1024 | index = <value optimized out> | a = <value optimized out> | bsize = 0 | total_gain = <value optimized out> | mdct_norm = <value optimized out> | n = <value optimized out> | v = <value optimized out> | ch = <value optimized out> | coef_nb_bits = <value optimized out> | nb_coefs = {1864, 1864} | #3 wma_decode_frame (s=0xf534d020, samples=0xf5375020) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/wmadec.c:783 | i = <value optimized out> | n = <value optimized out> | ch = <value optimized out> | incr = <value optimized out> | ptr = <value optimized out> | iptr = <value optimized out> | #4 0xf6e2bf19 in wma_decode_superframe (avctx=0x8541520, data=0xf5375020, data_size=0xffffb888, avpkt=0xffffb83c) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/wmadec.c:897 | buf = 0x84e3430 "\a" | buf_size = 2230 | s = 0xf534d020 | nb_frames = 6 | bit_offset = 8 | i = <value optimized out> | pos = <value optimized out> | len = <value optimized out> | q = <value optimized out> | samples = 0xf5375020 | #5 0xf6de8e2d in avcodec_decode_audio3 (avctx=0x8541520, samples=0xf5375020, frame_size_ptr=0xffffb888, avpkt=0xffffb83c) at /build/buildd-libav_0.6.2-4-i386-T5vqZ8/libav-0.6.2/libavcodec/utils.c:656 | ret = <value optimized out> | #6 0x08202ff5 in decode_audio (sh_audio=0x84e1528, buf=0xf5375020 "", minlen=1, maxlen=257536) at libmpcodecs/ad_ffmpeg.c:214 | pkt = {pts = -9223372036854775808, dts = -9223372036854775808, data = 0x84e3430 "\a", size = 2230, stream_index = 0, flags = 0, duration = 0, destruct = 0, priv = 0x0, pos = -1, convergence_duration = 0} | len2 = 257536 | pts = 3.0640000000000001 | x = 2230 | start = 0x84e3430 "\a" | y = <value optimized out> | len = <value optimized out> | #7 0x08203371 in init (sh_audio=0x84e1528) at libmpcodecs/ad_ffmpeg.c:131 | tries = 0 | x = <value optimized out> | lavc_context = 0x8541520 | lavc_codec = <value optimized out> | #8 0x0812bb8c in init_audio_codec (sh_audio=0x84e1528, codecname=<value optimized out>, afm=<value optimized out>, status=2, selected=0xffffb97c) at libmpcodecs/dec_audio.c:107 | No locals. | #9 init_audio (sh_audio=0x84e1528, codecname=<value optimized out>, afm=<value optimized out>, status=2, selected=0xffffb97c) at libmpcodecs/dec_audio.c:229 | mpadec = 0x83d2ebc | i = 3 | orig_fourcc = 353 | force = 0 | #10 0x0812bed7 in init_best_audio_codec (sh_audio=0x84e1528, audio_codec_list=0xffffb974, audio_fm_list=0x0) at libmpcodecs/dec_audio.c:282 | status = 2 | selected = 0x85093e8 | ac_l_default = {0x82c0f0a "", 0x0} | #11 0x0809d9f9 in reinit_audio_chain () at mplayer.c:1664 | No locals. | #12 0x0809f82a in main (argc=2, argv=0xffffdb14) at mplayer.c:3679 | frame_time_remaining = <value optimized out> | blit_frame = 0 | mem_ptr = <value optimized out> | opt_exit = <value optimized out> | i = <value optimized out> | (gdb) `---- This has been triggered by the recent recompilation of libav with gcc-4.6. The bug has been fixed upstream in commit 770c410fb, a backport of the patch that works for me is attached. -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (101, 'experimental') Architecture: i386 (x86_64) Kernel: Linux 3.0.0-nouveau (SMP w/2 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libavcodec52 depends on: ii libavutil50 4:0.6.2-4 Libav utility library ii libc6 2.13-10 Embedded GNU C Library: Shared lib ii libdirac-encoder0 1.0.2-4 open and royalty free high quality ii libfaad2 2.7-6 freeware Advanced Audio Decoder - ii libgsm1 1.0.13-3 Shared libraries for GSM speech co ii libopenjpeg2 1.3+dfsg-4 JPEG 2000 image compression/decomp ii libschroedinger-1.0-0 1.0.10-2.1 library for encoding/decoding of D ii libspeex1 1.2~rc1-1 The Speex codec runtime library ii libtheora0 1.1.1+dfsg.1-3 The Theora Video Compression Codec ii libva1 1.0.12-2 Video Acceleration (VA) API for Li ii libvorbis0a 1.3.2-1 The Vorbis General Audio Compressi ii libvorbisenc2 1.3.2-1 The Vorbis General Audio Compressi ii libvpx0 0.9.6-1 VP8 video codec (shared library) ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime libavcodec52 recommends no packages. libavcodec52 suggests no packages. -- no debconf information
>From 770c410fbb8e1b87ce8ad7f3d7eddaa55e2b8295 Mon Sep 17 00:00:00 2001 From: Alex Converse <alex.conve...@gmail.com> Date: Sun, 30 Jan 2011 01:04:41 -0800 Subject: [PATCH] Fix ff_imdct_calc_sse() on gcc-4.6 Gcc 4.6 only preserves the first value when using an array with an "m" constraint. Signed-off-by: Mans Rullgard <m...@mansr.com> --- libavcodec/x86/fft_sse.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) --- a/libavcodec/x86/fft_sse.c +++ b/libavcodec/x86/fft_sse.c @@ -23,7 +23,7 @@ #include "libavcodec/dsputil.h" #include "fft.h" -DECLARE_ALIGNED(16, static const int, m1m1m1m1)[4] = +DECLARE_ASM_CONST(16, int, ff_m1m1m1m1)[4] = { 1 << 31, 1 << 31, 1 << 31, 1 << 31 }; void ff_fft_dispatch_sse(FFTComplex *z, int nbits); @@ -183,7 +183,7 @@ j = -n; k = n-16; __asm__ volatile( - "movaps %4, %%xmm7 \n" + "movaps "MANGLE(ff_m1m1m1m1)", %%xmm7 \n" "1: \n" "movaps (%2,%1), %%xmm0 \n" "movaps (%3,%0), %%xmm1 \n" @@ -196,8 +196,7 @@ "add $16, %0 \n" "jl 1b \n" :"+r"(j), "+r"(k) - :"r"(output+n4), "r"(output+n4*3), - "m"(*m1m1m1m1) + :"r"(output+n4), "r"(output+n4*3) ); }
_______________________________________________ pkg-multimedia-maintainers mailing list pkg-multimedia-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers