[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#910451: Bug #910451: bs1770gain segfaults on MP3 files



Dear Maintainer,
I tried to have a look at this crash.

But just found out that valgrind shows reproducible
the following invalid read to already freed memory:

==14641== Invalid read of size 4
==14641==    at 0x4EC1424: av_packet_copy_props (avpacket.c:578)
==14641==    by 0x4EC1BB2: av_packet_ref (avpacket.c:605)
==14641==    by 0x4F499F9: avcodec_send_packet (decode.c:662)
==14641==    by 0x4F49EE2: compat_decode (decode.c:769)
==14641==    by 0x1118B2: frame_reader_run (ffsox_frame_reader.c:277)
==14641==    by 0x111EDF: ffsox_engine_run (ffsox_engine.c:33)
==14641==    by 0x113A0D: ffsox_sox_reader_read (ffsox_sox_reader.c:117)
==14641==    by 0x113AFD: drain (ffsox_sox_read_handler.c:56)
==14641==    by 0x4871932: drain_effect (effects.c:352)
==14641==    by 0x4871932: sox_flow_effects (effects.c:445)
==14641==    by 0x110797: ffsox_analyze (ffsox_analyze.c:164)
==14641==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14641==    by 0x10C3F2: main (bs1770gain.c:1000)
==14641==  Address 0x11fc6eb8 is 8 bytes inside a block of size 16 free'd
==14641==    at 0x48369EB: free (vg_replace_malloc.c:530)
==14641==    by 0x4EC0A78: av_packet_free_side_data (avpacket.c:275)
==14641==    by 0x4EC149C: av_packet_unref (avpacket.c:594)
==14641==    by 0x1126B3: source_run (ffsox_source.c:173)
==14641==    by 0x111EDF: ffsox_engine_run (ffsox_engine.c:33)
==14641==    by 0x113A0D: ffsox_sox_reader_read (ffsox_sox_reader.c:117)
==14641==    by 0x113AFD: drain (ffsox_sox_read_handler.c:56)
==14641==    by 0x4871932: drain_effect (effects.c:352)
==14641==    by 0x4871932: sox_flow_effects (effects.c:445)
==14641==    by 0x110797: ffsox_analyze (ffsox_analyze.c:164)
==14641==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14641==    by 0x10C3F2: main (bs1770gain.c:1000)
==14641==  Block was alloc'd at
==14641==    at 0x48356EF: malloc (vg_replace_malloc.c:298)
==14641==    by 0x4837A34: realloc (vg_replace_malloc.c:785)
==14641==    by 0x4EC0BA2: av_packet_add_side_data (avpacket.c:315)
==14641==    by 0x4EC0C6C: av_packet_new_side_data (avpacket.c:341)
==14641==    by 0x4C76E25: read_frame_internal (utils.c:1714)
==14641==    by 0x4C7853A: avformat_find_stream_info (utils.c:3767)
==14641==    by 0x112901: ffsox_source_create (ffsox_source.c:43)
==14641==    by 0x110559: ffsox_analyze (ffsox_analyze.c:58)
==14641==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14641==    by 0x10C3F2: main (bs1770gain.c:1000)
==14641== 
==14641== (action on error) vgdb me ... 

Stepped over av_packet_unref(pkt) in "source_run (ffsox_source.c:173)"
and the side_data pointer in that pkt got set to 0.

Therefore it looks like there is once made a copy of pkt/avpkt/src,
in which the pointer to the side_data is still alive after it got freed.

Kind regards,
Bernhard

# from Initial bug report

(gdb) bt
#0  0x00005555555d08b0 in  ()
#1  0x00007ffff7da900e in av_buffer_unref () at /usr/lib/x86_64-linux-gnu/libavutil.so.56
#2  0x00007ffff6a0d4c5 in av_packet_unref (pkt=pkt@entry=0x5555555b6300) at src/libavcodec/avpacket.c:595
#3  0x00007ffff6a930f8 in decode_simple_internal (frame=0x5555555b6480, avctx=0x5555555b4640) at src/libavcodec/decode.c:377
#4  0x00007ffff6a930f8 in decode_simple_receive_frame (frame=<optimized out>, avctx=<optimized out>) at src/libavcodec/decode.c:594
#5  0x00007ffff6a930f8 in decode_receive_frame_internal (avctx=avctx@entry=0x5555555b4640, frame=frame@entry=0x5555555b6480) at src/libavcodec/decode.c:612
#6  0x00007ffff6a95bbb in avcodec_receive_frame (avctx=0x5555555b4640, frame=0x5555555b6480) at src/libavcodec/decode.c:726
#7  0x00007ffff6a95e7b in compat_decode (avctx=avctx@entry=0x5555555b4640, frame=frame@entry=0x5555555b6480, got_frame=got_frame@entry=0x7fffffffd964, pkt=pkt@entry=0x5555555b39a0) at src/libavcodec/decode.c:782
#8  0x00007ffff6a9624d in avcodec_decode_audio4 (avctx=avctx@entry=0x5555555b4640, frame=frame@entry=0x5555555b6480, got_frame_ptr=got_frame_ptr@entry=0x7fffffffd964, avpkt=avpkt@entry=0x5555555b39a0) at src/libavcodec/decode.c:838
#9  0x000055555555d5e2 in frame_reader_run (n=0x5555555b3960) at ffsox_frame_reader.c:172
#10 0x000055555555db0c in ffsox_machine_run (m=m@entry=0x7fffffffd9d0, node=<optimized out>, node@entry=0x555555592410) at ffsox_machine.c:30
#11 0x000055555555f4be in ffsox_sox_reader_read (sa=sa@entry=0x555555592410, buf=<optimized out>, len=<optimized out>) at ffsox_sox_reader.c:117
#12 0x000055555555f5a2 in drain (e=<optimized out>, obuf=<optimized out>, osamp=0x7fffffffdac8) at ffsox_sox_read_handler.c:56
#13 0x00007ffff63bd933 in drain_effect (n=0, chain=0x55555558f3e0) at effects.c:352
#14 0x00007ffff63bd933 in sox_flow_effects (chain=chain@entry=0x55555558f3e0, callback=callback@entry=0x0, client_data=client_data@entry=0x0) at effects.c:445
#15 0x000055555555c704 in ffsox_analyze (ac=ac@entry=0x7fffffffdde0, ai=<optimized out>, vi=<optimized out>) at ffsox_analyze.c:159
#16 0x000055555555a6ae in bs1770gain_tree_analyze (tree=<optimized out>, odirname=0x0, options=0x7fffffffdef0) at bs1770gain_tree.c:141
#17 0x000055555555808a in main (argc=<optimized out>, argv=0x7fffffffe118) at bs1770gain.c:970












apt install dpkg-dev devscripts systemd-coredump gdb valgrind sox ffmpeg bs1770gain bs1770gain-dbgsym libsox3-dbgsym libavcodec58-dbgsym libavformat58-dbgsym



mkdir bs1770gain/orig -p
cd    bs1770gain/orig
apt source bs1770gain
cd ../..

mkdir ffmpeg/orig -p
cd    ffmpeg/orig
apt source ffmpeg
cd ../..



-------------------





valgrind --vgdb=yes --vgdb-error=0 /usr/bin/bs1770gain sine.mp3

gdb -q /usr/bin/bs1770gain









==14641== Invalid read of size 4
==14641==    at 0x4EC1424: av_packet_copy_props (avpacket.c:578)
==14641==    by 0x4EC1BB2: av_packet_ref (avpacket.c:605)
==14641==    by 0x4F499F9: avcodec_send_packet (decode.c:662)
==14641==    by 0x4F49EE2: compat_decode (decode.c:769)
==14641==    by 0x1118B2: frame_reader_run (ffsox_frame_reader.c:277)
==14641==    by 0x111EDF: ffsox_engine_run (ffsox_engine.c:33)
==14641==    by 0x113A0D: ffsox_sox_reader_read (ffsox_sox_reader.c:117)
==14641==    by 0x113AFD: drain (ffsox_sox_read_handler.c:56)
==14641==    by 0x4871932: drain_effect (effects.c:352)
==14641==    by 0x4871932: sox_flow_effects (effects.c:445)
==14641==    by 0x110797: ffsox_analyze (ffsox_analyze.c:164)
==14641==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14641==    by 0x10C3F2: main (bs1770gain.c:1000)
==14641==  Address 0x11fc6eb8 is 8 bytes inside a block of size 16 free'd
==14641==    at 0x48369EB: free (vg_replace_malloc.c:530)
==14641==    by 0x4EC0A78: av_packet_free_side_data (avpacket.c:275)
==14641==    by 0x4EC149C: av_packet_unref (avpacket.c:594)
==14641==    by 0x1126B3: source_run (ffsox_source.c:173)
==14641==    by 0x111EDF: ffsox_engine_run (ffsox_engine.c:33)
==14641==    by 0x113A0D: ffsox_sox_reader_read (ffsox_sox_reader.c:117)
==14641==    by 0x113AFD: drain (ffsox_sox_read_handler.c:56)
==14641==    by 0x4871932: drain_effect (effects.c:352)
==14641==    by 0x4871932: sox_flow_effects (effects.c:445)
==14641==    by 0x110797: ffsox_analyze (ffsox_analyze.c:164)
==14641==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14641==    by 0x10C3F2: main (bs1770gain.c:1000)
==14641==  Block was alloc'd at
==14641==    at 0x48356EF: malloc (vg_replace_malloc.c:298)
==14641==    by 0x4837A34: realloc (vg_replace_malloc.c:785)
==14641==    by 0x4EC0BA2: av_packet_add_side_data (avpacket.c:315)
==14641==    by 0x4EC0C6C: av_packet_new_side_data (avpacket.c:341)
==14641==    by 0x4C76E25: read_frame_internal (utils.c:1714)
==14641==    by 0x4C7853A: avformat_find_stream_info (utils.c:3767)
==14641==    by 0x112901: ffsox_source_create (ffsox_source.c:43)
==14641==    by 0x110559: ffsox_analyze (ffsox_analyze.c:58)
==14641==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14641==    by 0x10C3F2: main (bs1770gain.c:1000)
==14641== 
==14641== (action on error) vgdb me ... 




root@debian:~# gdb -q /usr/bin/bs1770gain
Reading symbols from /usr/bin/bs1770gain...Reading symbols from /usr/lib/debug/.build-id/27/f66bc797034082028906650b73c94e3d14b07f.debug...done.
done.
(gdb) set height 0
(gdb) set width 0
(gdb) set pagination off
(gdb) directory /home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2
Source directories searched: /home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2:$cdir:$cwd
(gdb) directory /home/benutzer/ffmpeg/orig/ffmpeg-4.0.2/libavcodec
Source directories searched: /home/benutzer/ffmpeg/orig/ffmpeg-4.0.2/libavcodec:/home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2:$cdir:$cwd
(gdb) target remote | vgdb
Remote debugging using | vgdb
relaying data between gdb and process 14641
warning: remote target does not support file transfer, attempting to access files from local filesystem.
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/.build-id/dc/5cb16f5e644116cac64a4c3f5da4d081b81a4f.debug...done.
done.
0x0000000004001210 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) cont
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
av_packet_copy_props (dst=dst@entry=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:578
578              int size          = src->side_data[i].size;

(gdb) bt
#0  av_packet_copy_props (dst=dst@entry=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:578
#1  0x0000000004ec1bb3 in av_packet_ref (dst=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:605
#2  0x0000000004f499fa in avcodec_send_packet (avctx=avctx@entry=0x120209c0, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:662
#3  0x0000000004f49ee3 in compat_decode (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame=got_frame@entry=0x1fff000494, pkt=pkt@entry=0x12047310) at src/libavcodec/decode.c:769
#4  0x0000000004f4a22d in avcodec_decode_audio4 (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame_ptr=got_frame_ptr@entry=0x1fff000494, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:838
#5  0x00000000001118b3 in frame_reader_run (n=0x120472d0) at ffsox_frame_reader.c:277
#6  0x0000000000111ee0 in ffsox_engine_run (e=e@entry=0x1fff000500, node=<optimized out>, node@entry=0x12050b60) at ffsox_engine.c:33
#7  0x0000000000113a0e in ffsox_sox_reader_read (sa=0x12050b60, buf=<optimized out>, len=<optimized out>) at ffsox_sox_reader.c:117
#8  0x0000000000113afe in drain (e=<optimized out>, obuf=<optimized out>, osamp=0x1fff0005e8) at ffsox_sox_read_handler.c:56
#9  0x0000000004871933 in drain_effect (n=0, chain=0x12050f20) at effects.c:352
#10 sox_flow_effects (chain=chain@entry=0x12050f20, callback=callback@entry=0x0, client_data=client_data@entry=0x0) at effects.c:445
#11 0x0000000000110798 in ffsox_analyze (ac=ac@entry=0x1fff000900, ai=<optimized out>, vi=<optimized out>) at ffsox_analyze.c:164
#12 0x000000000010e7e9 in bs1770gain_tree_analyze (tree=<optimized out>, odirname=0x0, options=0x1fff000a10) at bs1770gain_tree.c:155
#13 0x000000000010c3f3 in main (argc=<optimized out>, argv=0x1fff000c48) at bs1770gain.c:1000

(gdb) print &(src->side_data[0].size)
$7 = (int *) 0x11fc6eb8

(gdb) up
#1  0x0000000004ec1bb3 in av_packet_ref (dst=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:605
605         ret = av_packet_copy_props(dst, src);
(gdb) print &(src->side_data[0].size)
$8 = (int *) 0x11fc6eb8

(gdb) up
#2  0x0000000004f499fa in avcodec_send_packet (avctx=avctx@entry=0x120209c0, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:662
662             ret = av_packet_ref(avci->buffer_pkt, avpkt);
(gdb) print &(avpkt->side_data[0].size)
$9 = (int *) 0x11fc6eb8

(gdb) up
#3  0x0000000004f49ee3 in compat_decode (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame=got_frame@entry=0x1fff000494, pkt=pkt@entry=0x12047310) at src/libavcodec/decode.c:769
769             ret = avcodec_send_packet(avctx, pkt);
(gdb) print &(pkt->side_data[0].size)
$10 = (int *) 0x11fc6eb8

(gdb) up
#4  0x0000000004f4a22d in avcodec_decode_audio4 (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame_ptr=got_frame_ptr@entry=0x1fff000494, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:838
838         return compat_decode(avctx, frame, got_frame_ptr, avpkt);
(gdb) print &(avpkt->side_data[0].size)
$11 = (int *) 0x11fc6eb8

(gdb) up
#5  0x00000000001118b3 in frame_reader_run (n=0x120472d0) at ffsox_frame_reader.c:277
277         else if (avcodec_decode_audio4(cc,frame,&got_frame,pkt)<0) {
(gdb) print &(pkt->side_data[0].size)
$12 = (int *) 0x11fc6eb8

(gdb) list ffsox_frame_reader.c:182,280
182     static int frame_reader_run(frame_reader_t *n)
183     {
184     #if defined (FRAME_READER_RUN_CODE) // [
185       int code=-1;
186     #endif // ]
187       AVCodecContext *cc=n->si.cc;
188       frame_t *fo=&n->fo;
189       AVFrame *frame=fo->frame;
190       AVPacket *pkt=&n->pkt;
191       int got_frame,size;
192
193     //DMARKLN();
194       switch (n->state) {
195       case STATE_RUN:
196     //DMARKLN();
197         while (0<pkt->size) {
198     //DMARKLN();
199           if (0ll<fo->nb_samples.frame) {
200             DMESSAGE("frame not consumed");
201     #if defined (FRAME_READER_RUN_CODE) // [
202             goto exit;
203     #else // ] [
204             return -1;
205     #endif // ]
206           }
207
208     #if 0 // [
209           if ((size=avcodec_decode_audio4(cc,frame,&got_frame,pkt))<0) {
210     #else // ] [
211     //DMARKLN();
212           size=avcodec_decode_audio4(cc,frame,&got_frame,pkt);
213     //DVWRITELN("size: %d",size);
214
215                             if (size<0) {
216                                     //DMARKLN();
217     #endif // ]
218     #if defined (FRAME_READER_SKIP_ERROR) // [
219             // skip the package.
220     #if defined (PBU_DEBUG) // [
221             DMESSAGE("decoding audio, skipping audio package");
222     #endif // ]
223             pkt->size=0;
224     #if defined (FRAME_READER_RUN_CODE) // [
225             code=0;
226             goto exit;
227     #else // ] [
228             return 0;
229     #endif // ]
230     #else // ] [
231             DMESSAGE("decoding audio");
232     #if defined (FRAME_READER_RUN_CODE) // [
233             goto exit;
234     #else // ] [
235             return -1;
236     #endif // ]
237     #endif // ]
238     #if 1 // [
239           }
240     //DMARKLN();
241     #else // ] [
242           }
243     #endif // ]
244
245     #if 0 // [
246           pkt->size-=size;
247           pkt->data+=size;
248     #else // ][
249     //DVWRITELN("size: %d, pkt->size: %d",size,pkt->size);
250           pkt->size-=size;
251           pkt->data+=size;
252     //DVWRITELN("size: %d, pkt->size: %d",size,pkt->size);
253     //DVWRITELN("got_frame: %d",got_frame);
254     #endif // ]
255
256           if (0!=got_frame) {
257     #if defined (FRAME_READER_RUN_CODE) // [
258             code=frame_reader_next_set_frame(n,fo);
259             goto exit;
260     #else // ] [
261             return frame_reader_next_set_frame(n,fo);
262     #endif // ]
263           } 
264         }
265
266         return MACHINE_POP;
267       case STATE_FLUSH:
268         pkt->size=0;
269         pkt->data=NULL;
270
271     //DVWRITELN("cc: %p, codec_id: %0x, OPUS: %0x, frame: %p, got_frame: %d, pkt: %p",cc,cc->codec_id,AV_CODEC_ID_OPUS,frame,got_frame,pkt);
272         if (AV_CODEC_ID_OPUS==cc->codec_id) {
273           n->state=STATE_END;
274
275           return frame_reader_next_set_frame(n,NULL);
276         }
277         else if (avcodec_decode_audio4(cc,frame,&got_frame,pkt)<0) {
278           DMESSAGE("decoding audio");
279     #if defined (FRAME_READER_RUN_CODE) // [
280             goto exit;

(gdb) print &(n->pkt.side_data[0].size)
$14 = (int *) 0x11fc6eb8
(gdb) print n
$15 = (frame_reader_t *) 0x120472d0

(gdb) up
#6  0x0000000000111ee0 in ffsox_engine_run (e=e@entry=0x1fff000500, node=<optimized out>, node@entry=0x12050b60) at ffsox_engine.c:33
33          op=node->vmt->run(node);
(gdb) print node
$16 = <optimized out>

(gdb) list ffsox_engine.c:22,35
22      int ffsox_engine_run(engine_t *e, node_t *node)
23      {
24        int op;
25
26        e->node=node;
27
28        while (NULL!=(node=e->node)) {
29      //fprintf(stderr,"%s: RUN\n",node->vmt->name);
30      //DVWRITELN("vmt %p",node->vmt);
31      //DVWRITELN("vmt->run %p",node->vmt->run);
32      //DVWRITELN("vmt->name \"%s\"",node->vmt->name);
33          op=node->vmt->run(node);
34      //DVWRITELN("op: %d",op);
35

(gdb) print e->node
$17 = (ffsox_node_t *) 0x120472d0
(gdb) print e
$18 = (engine_t *) 0x1fff000500

(gdb) up
#7  0x0000000000113a0e in ffsox_sox_reader_read (sa=0x12050b60, buf=<optimized out>, len=<optimized out>) at ffsox_sox_reader.c:117
117         if (ffsox_engine_run(&m,&sa->node)<0) {
(gdb) print m
$19 = {source = 0x0, node = 0x120472d0}
(gdb) print &m
$20 = (engine_t *) 0x1fff000500







--------------


root@debian:~# valgrind --vgdb=yes --vgdb-error=0 /usr/bin/bs1770gain sine.mp3
...
==14983== Invalid read of size 4
==14983==    at 0x4EC1424: av_packet_copy_props (avpacket.c:578)
==14983==    by 0x4EC1BB2: av_packet_ref (avpacket.c:605)
==14983==    by 0x4F499F9: avcodec_send_packet (decode.c:662)
==14983==    by 0x4F49EE2: compat_decode (decode.c:769)
==14983==    by 0x1118B2: frame_reader_run (ffsox_frame_reader.c:277)
==14983==    by 0x111EDF: ffsox_engine_run (ffsox_engine.c:33)
==14983==    by 0x113A0D: ffsox_sox_reader_read (ffsox_sox_reader.c:117)
==14983==    by 0x113AFD: drain (ffsox_sox_read_handler.c:56)
==14983==    by 0x4871932: drain_effect (effects.c:352)
==14983==    by 0x4871932: sox_flow_effects (effects.c:445)
==14983==    by 0x110797: ffsox_analyze (ffsox_analyze.c:164)
==14983==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14983==    by 0x10C3F2: main (bs1770gain.c:1000)
==14983==  Address 0x11fc6eb8 is 8 bytes inside a block of size 16 free'd
==14983==    at 0x48369EB: free (vg_replace_malloc.c:530)
==14983==    by 0x4EC0A78: av_packet_free_side_data (avpacket.c:275)
==14983==    by 0x4EC149C: av_packet_unref (avpacket.c:594)
==14983==    by 0x1126B3: source_run (ffsox_source.c:173)
==14983==    by 0x111EDF: ffsox_engine_run (ffsox_engine.c:33)
==14983==    by 0x113A0D: ffsox_sox_reader_read (ffsox_sox_reader.c:117)
==14983==    by 0x113AFD: drain (ffsox_sox_read_handler.c:56)
==14983==    by 0x4871932: drain_effect (effects.c:352)
==14983==    by 0x4871932: sox_flow_effects (effects.c:445)
==14983==    by 0x110797: ffsox_analyze (ffsox_analyze.c:164)
==14983==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14983==    by 0x10C3F2: main (bs1770gain.c:1000)
==14983==  Block was alloc'd at
==14983==    at 0x48356EF: malloc (vg_replace_malloc.c:298)
==14983==    by 0x4837A34: realloc (vg_replace_malloc.c:785)
==14983==    by 0x4EC0BA2: av_packet_add_side_data (avpacket.c:315)
==14983==    by 0x4EC0C6C: av_packet_new_side_data (avpacket.c:341)
==14983==    by 0x4C76E25: read_frame_internal (utils.c:1714)
==14983==    by 0x4C7853A: avformat_find_stream_info (utils.c:3767)
==14983==    by 0x112901: ffsox_source_create (ffsox_source.c:43)
==14983==    by 0x110559: ffsox_analyze (ffsox_analyze.c:58)
==14983==    by 0x10E7E8: bs1770gain_tree_analyze (bs1770gain_tree.c:155)
==14983==    by 0x10C3F2: main (bs1770gain.c:1000)
==14983== 
==14983== (action on error) vgdb me ... 






root@debian:~# gdb -q /usr/bin/bs1770gain
Reading symbols from /usr/bin/bs1770gain...Reading symbols from /usr/lib/debug/.build-id/27/f66bc797034082028906650b73c94e3d14b07f.debug...done.
done.
(gdb) set height 0
(gdb) set width 0
(gdb) set pagination off
(gdb) directory /home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2
Source directories searched: /home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2:$cdir:$cwd
(gdb) directory /home/benutzer/ffmpeg/orig/ffmpeg-4.0.2/libavcodec
Source directories searched: /home/benutzer/ffmpeg/orig/ffmpeg-4.0.2/libavcodec:/home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2:$cdir:$cwd
(gdb) target remote | vgdb
Remote debugging using | vgdb
relaying data between gdb and process 14983
warning: remote target does not support file transfer, attempting to access files from local filesystem.
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/.build-id/dc/5cb16f5e644116cac64a4c3f5da4d081b81a4f.debug...done.
done.
0x0000000004001210 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) b ffsox_source.c:173
Breakpoint 1 at 0x1126ac: file ffsox_source.c, line 173.
(gdb) ignore 1 43
Will ignore next 43 crossings of breakpoint 1.
(gdb) cont
Continuing.

Breakpoint 1, source_run (n=0x1fff000740) at ffsox_source.c:173
173           av_packet_unref(pkt);
(gdb) print pkt.side_data
$1 = (AVPacketSideData *) 0x11fc6eb0
(gdb) print &(pkt.side_data[0].size)
$2 = (int *) 0x11fc6eb8
(gdb) print pkt
$3 = (AVPacket *) 0x1fff000798

(gdb) next
176           if (av_read_frame(n->f.fc,pkt)<0) {

(gdb) print pkt.side_data
$4 = (AVPacketSideData *) 0x0
(gdb) print pkt
$5 = (AVPacket *) 0x1fff000798

(gdb) cont
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
av_packet_copy_props (dst=dst@entry=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:578
578              int size          = src->side_data[i].size;

(gdb) print src
$6 = (const AVPacket *) 0x12047310
(gdb) print src->side_data
$7 = (AVPacketSideData *) 0x11fc6eb0
(gdb) print i
$8 = 0
(gdb) print src->side_data[0].size
$9 = 10
(gdb) print &(src->side_data[0].size)
$10 = (int *) 0x11fc6eb8

(gdb) bt
#0  av_packet_copy_props (dst=dst@entry=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:578
#1  0x0000000004ec1bb3 in av_packet_ref (dst=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:605
#2  0x0000000004f499fa in avcodec_send_packet (avctx=avctx@entry=0x120209c0, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:662
#3  0x0000000004f49ee3 in compat_decode (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame=got_frame@entry=0x1fff000494, pkt=pkt@entry=0x12047310) at src/libavcodec/decode.c:769
#4  0x0000000004f4a22d in avcodec_decode_audio4 (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame_ptr=got_frame_ptr@entry=0x1fff000494, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:838
#5  0x00000000001118b3 in frame_reader_run (n=0x120472d0) at ffsox_frame_reader.c:277
#6  0x0000000000111ee0 in ffsox_engine_run (e=e@entry=0x1fff000500, node=<optimized out>, node@entry=0x12050b60) at ffsox_engine.c:33
#7  0x0000000000113a0e in ffsox_sox_reader_read (sa=0x12050b60, buf=<optimized out>, len=<optimized out>) at ffsox_sox_reader.c:117
#8  0x0000000000113afe in drain (e=<optimized out>, obuf=<optimized out>, osamp=0x1fff0005e8) at ffsox_sox_read_handler.c:56
#9  0x0000000004871933 in drain_effect (n=0, chain=0x12050f20) at effects.c:352
#10 sox_flow_effects (chain=chain@entry=0x12050f20, callback=callback@entry=0x0, client_data=client_data@entry=0x0) at effects.c:445
#11 0x0000000000110798 in ffsox_analyze (ac=ac@entry=0x1fff000900, ai=<optimized out>, vi=<optimized out>) at ffsox_analyze.c:164
#12 0x000000000010e7e9 in bs1770gain_tree_analyze (tree=<optimized out>, odirname=0x0, options=0x1fff000a10) at bs1770gain_tree.c:155
#13 0x000000000010c3f3 in main (argc=<optimized out>, argv=0x1fff000c48) at bs1770gain.c:1000

(gdb) up
#1  0x0000000004ec1bb3 in av_packet_ref (dst=0x12047f80, src=src@entry=0x12047310) at src/libavcodec/avpacket.c:605
605         ret = av_packet_copy_props(dst, src);
(gdb) 
#2  0x0000000004f499fa in avcodec_send_packet (avctx=avctx@entry=0x120209c0, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:662
662             ret = av_packet_ref(avci->buffer_pkt, avpkt);
(gdb) 
#3  0x0000000004f49ee3 in compat_decode (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame=got_frame@entry=0x1fff000494, pkt=pkt@entry=0x12047310) at src/libavcodec/decode.c:769
769             ret = avcodec_send_packet(avctx, pkt);
(gdb) 
#4  0x0000000004f4a22d in avcodec_decode_audio4 (avctx=avctx@entry=0x120209c0, frame=frame@entry=0x120505c0, got_frame_ptr=got_frame_ptr@entry=0x1fff000494, avpkt=avpkt@entry=0x12047310) at src/libavcodec/decode.c:838
838         return compat_decode(avctx, frame, got_frame_ptr, avpkt);
(gdb) 
#5  0x00000000001118b3 in frame_reader_run (n=0x120472d0) at ffsox_frame_reader.c:277
277         else if (avcodec_decode_audio4(cc,frame,&got_frame,pkt)<0) {

(gdb) print pkt
$11 = (AVPacket *) 0x12047310
(gdb) print &n->pkt
$12 = (AVPacket *) 0x12047310
(gdb) up
#6  0x0000000000111ee0 in ffsox_engine_run (e=e@entry=0x1fff000500, node=<optimized out>, node@entry=0x12050b60) at ffsox_engine.c:33
33          op=node->vmt->run(node);
(gdb) print node
$13 = <optimized out>

(gdb) list ffsox_engine.c:22,35
22      int ffsox_engine_run(engine_t *e, node_t *node)
23      {
24        int op;
25
26        e->node=node;
27
28        while (NULL!=(node=e->node)) {
29      //fprintf(stderr,"%s: RUN\n",node->vmt->name);
30      //DVWRITELN("vmt %p",node->vmt);
31      //DVWRITELN("vmt->run %p",node->vmt->run);
32      //DVWRITELN("vmt->name \"%s\"",node->vmt->name);
33          op=node->vmt->run(node);
34      //DVWRITELN("op: %d",op);
35









gdb -q --args /usr/bin/bs1770gain sine.mp3


set height 0
set width 0
set pagination off
directory /home/benutzer/bs1770gain/orig/bs1770gain-0.5.1/libffsox-2
directory /home/benutzer/ffmpeg/orig/ffmpeg-4.0.2/libavcodec
target remote | vgdb

b ffsox_source.c:173
ignore 1 43
cont




Reply to: