[alsa-devel] A52 plugin segfault and patch
Takashi Iwai
tiwai at suse.de
Wed May 23 11:54:12 CEST 2007
At Tue, 22 May 2007 19:10:30 +0200,
Fabian van der Werf wrote:
>
> Hi All,
>
> I bumped into segfault when trying to use the a52 plugin. I linked the
> plugin with the latest svn revision of ffmpeg (r9102).
>
> Starting program: /usr/bin/aplay -Dsurround test.wav
> Failed to read a valid object file image from memory.
> [Thread debugging using libthread_db enabled]
> [New Thread -1211078432 (LWP 9835)]
> Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread -1211078432 (LWP 9835)]
> av_crc (ctx=0x0, crc=0, buffer=0x8072c14 , length=1116) at crc.c:77
> 77 if(!ctx[256])
> (gdb) bt
> #0 av_crc (ctx=0x0, crc=0, buffer=0x8072c14 , length=1116) at crc.c:77
> #1 0xb78ce8a1 in output_frame_end (s=0x0) at ac3enc.c:1135
> #2 0xb78d1010 in AC3_encode_frame (avctx=0x806d3c0, frame=0x8072c10
> "\vw", buf_size=6136, data=0x806e400) at ac3enc.c:1261
> #3 0xb7730f68 in avcodec_encode_audio (avctx=0x806d3c0, buf=0x8072c10
> "\vw", buf_size=6136, samples=0x0) at utils.c:863
> #4 0xb772f66c in convert_data (rec=0x805c868) at pcm_a52.c:57
> #5 0xb7730101 in a52_transfer (io=0x805c868, areas=0x80551f0,
> offset=0, size=1536) at pcm_a52.c:197
> #6 0xb7efcf11 in ioplug_priv_transfer_areas (pcm=0x806c138,
> areas=0x80551f0, offset=0, size=0) at pcm_ioplug.c:521
> #7 0xb7efcfd6 in snd_pcm_ioplug_mmap_commit (pcm=0x806c138, offset=0,
> size=1536) at pcm_ioplug.c:590
> #8 0xb7ebf7b7 in snd_pcm_mmap_commit (pcm=0x0, offset=0, frames=1536)
> at pcm.c:6305
> #9 0xb7ecc7e4 in snd_pcm_plugin_write_areas (pcm=0x8054f48,
> areas=0xbfc8ea10, offset=0, size=1536) at pcm_plugin.c:282
> #10 0xb7ebfc42 in snd_pcm_write_areas (pcm=0x8054f48,
> areas=0xbfc8ea10, offset=0, size=1536, func=0xb7ecc740
> <snd_pcm_plugin_write_areas>) at pcm.c:6492
> #11 0xb7ecbdff in snd_pcm_plugin_writei (pcm=0x8054f48,
> buffer=0x8074410, size=1536) at pcm_plugin.c:353
> #12 0xb7eb7da5 in snd_pcm_writei (pcm=0x8068488, buffer=0x8074410,
> size=0) at pcm_local.h:401
> #13 0x0804d05a in pcm_write (data=0x8074410 "", count=1536) at aplay.c:1260
> #14 0x0804d66f in playback_go (fd=8, loaded=0, count=48457728,
> rtype=2, name=0xbfc8fa1d "test.wav") at aplay.c:1986
> #15 0x0804e9b2 in playback (name=0xbfc8fa1d "test.wav") at aplay.c:2044
> #16 0x08050ea9 in main (argc=3, argv=0xbfc8ed64) at aplay.c:601
>
> The patch below fixes this segmentation fault by adding a call to avcodec_init()
>
> diff -Naur alsa-plugins-1.0.13/a52/pcm_a52.c
> alsa-plugins-1.0.13-patched/a52/pcm_a52.c
> --- alsa-plugins-1.0.13/a52/pcm_a52.c 2006-09-29 13:51:37.000000000 +0200
> +++ alsa-plugins-1.0.13-patched/a52/pcm_a52.c 2007-05-22
> 18:49:56.000000000 +0200
> @@ -676,6 +676,7 @@
> rec->channels = channels;
> rec->format = format;
>
> + avcodec_init();
> avcodec_register_all();
> rec->codec = avcodec_find_encoder(CODEC_ID_AC3);
> if (! rec->codec) {
>
> Regards,
> Fabian
Thanks, applied to HG tree now.
Takashi
More information about the Alsa-devel
mailing list