Opened 16 months ago

Closed 16 months ago

Last modified 16 months ago

#10171 closed defect (fixed)

wavarc: crash with valid 8 bit mono file (comp. level 3)

Reported by: ami_stuff Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

(gdb) r -i 8_33_M_C3.WA -y out.wav
Starting program: fmpeg_g -i 8_33_M_C3.WA -y out.wav
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
ffmpeg version N-109758-gbdc76f467f Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  configuration: 
  libavutil      57. 44.100 / 57. 44.100
  libavcodec     59. 63.100 / 59. 63.100
  libavformat    59. 38.100 / 59. 38.100
  libavdevice    59.  8.101 / 59.  8.101
  libavfilter     8. 56.100 /  8. 56.100
  libswscale      6.  8.112 /  6.  8.112
  libswresample   4.  9.100 /  4.  9.100
Input #0, wavarc, from '8_33_M_C3.WA':
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Audio: wavarc (3NLP / 0x504C4E33), 33333 Hz, mono, s16p
Stream mapping:
  Stream #0:0 -> #0:0 (wavarc (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[New Thread 0x7ffff6b9c700 (LWP 21435)]
[New Thread 0x7ffff639b700 (LWP 21436)]
[New Thread 0x7ffff5b9a700 (LWP 21437)]
[New Thread 0x7ffff5399700 (LWP 21438)]
[New Thread 0x7ffff4b98700 (LWP 21439)]
[New Thread 0x7fffeffff700 (LWP 21440)]
[New Thread 0x7fffef7fe700 (LWP 21441)]
[New Thread 0x7fffeeffd700 (LWP 21442)]
[New Thread 0x7fffee7fc700 (LWP 21443)]
Output #0, wav, to 'out.wav':
  Metadata:
    ISFT            : Lavf59.38.100
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 33333 Hz, mono, s16, 533 kb/s
    Metadata:
      encoder         : Lavc59.63.100 pcm_s16le
[New Thread 0x7fffedffb700 (LWP 21444)]
[wavarc @ 0x55555715b380] get_buffer() failedspeed=   0x    

Thread 1 "ffmpeg_g" received signal SIGSEGV, Segmentation fault.
av_buffer_unref (buf=buf@entry=0x55555715d2e0) at libavutil/buffer.c:144
144	    buffer_replace(buf, NULL);
(gdb) bt
#0  av_buffer_unref (buf=buf@entry=0x55555715d2e0) at libavutil/buffer.c:144
#1  0x00005555564c0d4c in av_frame_unref (frame=<optimized out>)
    at libavutil/frame.c:501
#2  av_frame_unref (frame=frame@entry=0x55555715d200) at libavutil/frame.c:491
#3  0x0000555555bc9e16 in ff_get_buffer (avctx=avctx@entry=0x55555715b380, 
    frame=frame@entry=0x55555715d200, flags=flags@entry=0)
    at libavcodec/decode.c:1548
#4  0x0000555556089f56 in wavarc_decode (avctx=0x55555715b380, 
    frame=0x55555715d200, got_frame_ptr=0x7fffffffdb5c, pkt=<optimized out>)
    at libavcodec/wavarc.c:400
#5  0x0000555555bc7b0a in decode_simple_internal (
    discarded_samples=<synthetic pointer>, frame=0x55555715d200, 
    avctx=0x55555715b380) at libavcodec/decode.c:285
#6  decode_simple_receive_frame (frame=<optimized out>, avctx=<optimized out>)
    at libavcodec/decode.c:541
#7  decode_receive_frame_internal (avctx=avctx@entry=0x55555715b380, 
    frame=frame@entry=0x55555715d200) at libavcodec/decode.c:560
#8  0x0000555555bc89a3 in ff_decode_receive_frame (avctx=0x55555715b380, 
    frame=0x55555715d200) at libavcodec/decode.c:708
#9  0x0000555555710f63 in decode (avctx=0x55555715b380, frame=0x55555715d200, 
    got_frame=0x7fffffffdcb0, pkt=<optimized out>, ist=<optimized out>)
    at fftools/ffmpeg.c:2093
#10 0x0000555555719260 in decode_audio (ist=0x55555715b1c0, pkt=0x0, 
--Type <RET> for more, q to quit, c to continue without paging--
    got_output=0x7fffffffdcb0, decode_failed=0x7fffffffdcb4)
    at fftools/ffmpeg.c:2145
#11 0x000055555571b3bd in process_input_packet (no_eof=0, pkt=<optimized out>, 
    ist=0x55555715b1c0) at fftools/ffmpeg.c:2594
#12 process_input (file_index=<optimized out>) at fftools/ffmpeg.c:3853
#13 transcode_step () at fftools/ffmpeg.c:3988
#14 transcode () at fftools/ffmpeg.c:4035
#15 0x00005555556f098b in main (argc=5, argv=0x7fffffffdf88)
    at fftools/ffmpeg.c:4173
==21379== Invalid write of size 4bitrate=N/A speed=   0x    
==21379==    at 0xC3DBE6: decode_2slp (wavarc.c:279)
==21379==    by 0xC3DBE6: wavarc_decode (wavarc.c:380)
==21379==    by 0x77BB09: decode_simple_internal (decode.c:285)
==21379==    by 0x77BB09: decode_simple_receive_frame (decode.c:541)
==21379==    by 0x77BB09: decode_receive_frame_internal (decode.c:560)
==21379==    by 0x77C6CF: avcodec_send_packet (decode.c:635)
==21379==    by 0x2C4F3B: decode.isra.0 (ffmpeg.c:2086)
==21379==    by 0x2CD25F: decode_audio (ffmpeg.c:2145)
==21379==    by 0x2CF3BC: process_input_packet (ffmpeg.c:2594)
==21379==    by 0x2CF3BC: process_input (ffmpeg.c:3853)
==21379==    by 0x2CF3BC: transcode_step (ffmpeg.c:3988)
==21379==    by 0x2CF3BC: transcode (ffmpeg.c:4035)
==21379==    by 0x2A498A: main (ffmpeg.c:4173)
==21379==  Address 0x5c4a8b0 is 0 bytes after a block of size 6,320 alloc'd
==21379==    at 0x483E0F0: memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==21379==    by 0x483E212: posix_memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==21379==    by 0x107D374: av_malloc (mem.c:105)
==21379==    by 0x107D53D: av_mallocz (mem.c:266)
==21379==    by 0x9C670C: init_context_defaults (options.c:133)
==21379==    by 0x9C670C: avcodec_alloc_context3 (options.c:160)
==21379==    by 0x2A55D3: add_input_streams (ffmpeg_demux.c:734)
==21379==    by 0x2A9050: ifile_open (ffmpeg_demux.c:1077)
==21379==    by 0x2BAB91: open_files.isra.0 (ffmpeg_opt.c:1244)
==21379==    by 0x2BC02E: ffmpeg_parse_options (ffmpeg_opt.c:1283)
==21379==    by 0x2A4949: main (ffmpeg.c:4156)
==21379== 
==21379== Invalid write of size 4
==21379==    at 0xC3DBD0: decode_2slp (wavarc.c:280)
==21379==    by 0xC3DBD0: wavarc_decode (wavarc.c:380)
==21379==    by 0x77BB09: decode_simple_internal (decode.c:285)
==21379==    by 0x77BB09: decode_simple_receive_frame (decode.c:541)
==21379==    by 0x77BB09: decode_receive_frame_internal (decode.c:560)
==21379==    by 0x77C6CF: avcodec_send_packet (decode.c:635)
==21379==    by 0x2C4F3B: decode.isra.0 (ffmpeg.c:2086)
==21379==    by 0x2CD25F: decode_audio (ffmpeg.c:2145)
==21379==    by 0x2CF3BC: process_input_packet (ffmpeg.c:2594)
==21379==    by 0x2CF3BC: process_input (ffmpeg.c:3853)
==21379==    by 0x2CF3BC: transcode_step (ffmpeg.c:3988)
==21379==    by 0x2CF3BC: transcode (ffmpeg.c:4035)
==21379==    by 0x2A498A: main (ffmpeg.c:4173)
==21379==  Address 0x5c4a8b4 is 4 bytes after a block of size 6,320 alloc'd
==21379==    at 0x483E0F0: memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==21379==    by 0x483E212: posix_memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==21379==    by 0x107D374: av_malloc (mem.c:105)
==21379==    by 0x107D53D: av_mallocz (mem.c:266)
==21379==    by 0x9C670C: init_context_defaults (options.c:133)
==21379==    by 0x9C670C: avcodec_alloc_context3 (options.c:160)
==21379==    by 0x2A55D3: add_input_streams (ffmpeg_demux.c:734)
==21379==    by 0x2A9050: ifile_open (ffmpeg_demux.c:1077)
==21379==    by 0x2BAB91: open_files.isra.0 (ffmpeg_opt.c:1244)
==21379==    by 0x2BC02E: ffmpeg_parse_options (ffmpeg_opt.c:1283)
==21379==    by 0x2A4949: main (ffmpeg.c:4156)
==21379== 
==21379== Invalid read of size 4
==21379==    at 0xC3DBAF: decode_2slp (wavarc.c:332)
==21379==    by 0xC3DBAF: wavarc_decode (wavarc.c:380)
==21379==    by 0x77BB09: decode_simple_internal (decode.c:285)
==21379==    by 0x77BB09: decode_simple_receive_frame (decode.c:541)
==21379==    by 0x77BB09: decode_receive_frame_internal (decode.c:560)
==21379==    by 0x77C6CF: avcodec_send_packet (decode.c:635)
==21379==    by 0x2C4F3B: decode.isra.0 (ffmpeg.c:2086)
==21379==    by 0x2CD25F: decode_audio (ffmpeg.c:2145)
==21379==    by 0x2CF3BC: process_input_packet (ffmpeg.c:2594)
==21379==    by 0x2CF3BC: process_input (ffmpeg.c:3853)
==21379==    by 0x2CF3BC: transcode_step (ffmpeg.c:3988)
==21379==    by 0x2CF3BC: transcode (ffmpeg.c:4035)
==21379==    by 0x2A498A: main (ffmpeg.c:4173)
==21379==  Address 0x5c4a9f4 is 0 bytes after a block of size 116 alloc'd
==21379==    at 0x483E0F0: memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==21379==    by 0x483E212: posix_memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==21379==    by 0x107D374: av_malloc (mem.c:105)
==21379==    by 0x107D53D: av_mallocz (mem.c:266)
==21379==    by 0x76D077: avcodec_parameters_to_context (codec_par.c:255)
==21379==    by 0x2A55ED: add_input_streams (ffmpeg_demux.c:738)
==21379==    by 0x2A9050: ifile_open (ffmpeg_demux.c:1077)
==21379==    by 0x2BAB91: open_files.isra.0 (ffmpeg_opt.c:1244)
==21379==    by 0x2BC02E: ffmpeg_parse_options (ffmpeg_opt.c:1283)
==21379==    by 0x2A4949: main (ffmpeg.c:4156)

Attachments (1)

8_33_M_C3.WA (146.3 KB ) - added by ami_stuff 16 months ago.

Download all attachments as: .zip

Change History (3)

by ami_stuff, 16 months ago

Attachment: 8_33_M_C3.WA added

comment:1 by Elon Musk, 16 months ago

Resolution: fixed
Status: newclosed

Do not use dosbox to encode files, it produces invalid ones.

comment:2 by ami_stuff, 16 months ago

I didn't use dosbox in this case.

I belive this file is valid. It decompresses correctly with wa32.exe to normal wav file.

the input wav data and the wa32.exe's decompressed wav data is identical:

ffmpeg -i file.wav -f u8 file.raw

Note: See TracTickets for help on using tickets.