looks like this crashes now in branch ffdemux
Opened this issue · 5 comments
vdr-plugin-vaapidevice/codec.c
Line 440 in b1f79f7
Thread 39 "device 1 receiv" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffa6bd2700 (LWP 3039)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff614ee97 in __GI_raise (sig=sig@entry=6)
at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff6150801 in __GI_abort () at abort.c:79
#2 0x00007fffed2500dd in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#3 0x00007fffed768044 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007fffed76968e in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#5 0x00007fffed3c58d0 in avcodec_flush_buffers ()
at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#6 0x00007fffeee05aa2 in CodecVideoFlushBuffers (decoder=0x555555c5ba70)
at codec.c:440
#7 0x00005555556b6705 in cPlayer::DeviceClear() (this=0x555556185948)
at player.h:31
#8 0x00005555556b6705 in cTransfer::Receive(unsigned char const*, int) (this=0x5555561857f0, Data=0x7fffdc49ed33 "G\023\355\021\304\313\365\341\374+\215\245W\216\271\001\016\236\327\213\227I\373\325P\235\305+\034\211t\252$\223+13\001\036\027S?9\272jqS\336\037\315\030|FGa\302\037G%\017\352ko\301\236\t\272E\334=\\\361\346ř\314\362\235\027\340\371x\375y\370\071\226\267\254\017\263\277\037c\327_|\312\350y\372\017\206e\351\bd\342\177\020n\031\302Q\032\233K\274\306\347\336\353:\n\035z\241\370H\206h\v#\346\377_Pڸi'Fj)\274\022.b\221\310T\344\065\016\030\016J\275\336Oc]* \001\311~\\/^9*;\031\237\021\370\247՟*\177A^\367*=\357G", Length=188) at transfer.c:56
#9 0x000055555560a302 in cDevice::Action() (this=0x5555560dab50)
at device.c:1681
---Type <return> to continue, or q <return> to quit---
#10 0x00005555556a7e35 in cThread::StartThread(cThread*) (Thread=0x5555560dab50) at thread.c:293
#11 0x00007ffff79556db in start_thread (arg=0x7fffa6bd2700)
at pthread_create.c:463
#12 0x00007ffff623188f in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
Thank you for reporting.
This might be caused by threads. Can you try to disable them with the following patch and then try to reproduce the crash:
diff --git a/codec.c b/codec.c
index bcf3d31..d36c12a 100644
--- a/codec.c
+++ b/codec.c
@@ -277,10 +277,6 @@ void CodecVideoOpen(VideoDecoder * decoder)
// FIXME: for software decoder use all cpus, otherwise 1
decoder->VideoCtx->thread_count = 1;
// open codec
- if (video_codec->capabilities & (AV_CODEC_CAP_AUTO_THREADS)) {
- Debug4("codec: auto threads enabled");
- decoder->VideoCtx->thread_count = 0;
- }
decoder->VideoCtx->opaque = decoder; // our structure
@@ -293,16 +289,6 @@ void CodecVideoOpen(VideoDecoder * decoder)
if (video_codec->capabilities & AV_CODEC_CAP_DR1) {
Debug4("codec: can use own buffer management");
}
- if (video_codec->capabilities & AV_CODEC_CAP_FRAME_THREADS) {
- Debug4("codec: supports frame threads");
- decoder->VideoCtx->thread_count = 0;
- decoder->VideoCtx->thread_type |= FF_THREAD_FRAME;
- }
- if (video_codec->capabilities & AV_CODEC_CAP_SLICE_THREADS) {
- Debug4("codec: supports slice threads");
- decoder->VideoCtx->thread_count = 0;
- decoder->VideoCtx->thread_type |= FF_THREAD_SLICE;
- }
decoder->VideoCtx->thread_safe_callbacks = 0;
decoder->VideoCtx->get_format = Codec_get_format;
decoder->VideoCtx->get_buffer2 = Codec_get_buffer2;
Also note that the ffdemux branch is under heavy development and not yet stable.
I'm hoping it may eventually help with the audio issues reported in #98
I know it's not stable
with the patch it works and I cannot reproduce the crash(before when running in gdb it did crash immediately)
there is another crash on startup sometimes (witch the patch)
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `vdr -D- -l3 -w 60 -Pfemon -Psatip -d2 -s 192.168.178.129:554|DVBS2-4,DVBT2-2|m'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
[Current thread is 1 (Thread 0x7f3137a8b700 (LWP 7106))]
(gdb) bt
#0 0x00007f31a6a1de97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007f31a6a1f801 in __GI_abort () at abort.c:79
#2 0x00007f319de51ec8 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#3 0x00007f319de52065 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#4 0x00007f319de53518 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#5 0x00007f319de5ff64 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#6 0x00007f319dc917a7 in () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#7 0x00007f319dc94588 in avcodec_send_packet () at /usr/lib/x86_64-linux-gnu/libavcodec.so.58
#8 0x00007f319f6d48b1 in CodecVideoDecode (decoder=0x560c04d0c000) at codec.c:397
#9 0x00007f319f6c132d in VideoDecodeInput (stream=0x7f319f8e3600 <MyVideoStream>) at vaapidev.c:623
#10 0x00007f319f6c6dba in VaapiDisplayHandlerThread () at video.c:3925
#11 0x00007f319f6cdc6c in VideoDisplayHandlerThread (dummy=<optimized out>) at video.c:4551
#12 0x00007f31a82246db in start_thread (arg=0x7f3137a8b700) at pthread_create.c:463
#13 0x00007f31a6b0088f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
I've not seen such before on my systems. Unfortunately the backtrace hides the actual source of the assert.
You'll need to add debugging symbols to your ffmpeg to make the lines 2-6 of your backtrace to contain relevant information.
here it goes
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `vdr -D- -l3 -w 60 -Pfemon -Psatip -d2 -s 192.168.178.129:554|DVBS2-4,DVBT2-2|m'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
[Current thread is 1 (Thread 0x7f3137a8b700 (LWP 7106))]
(gdb) bt
#0 0x00007f31a6a1de97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007f31a6a1f801 in __GI_abort () at abort.c:79
#2 0x00007f319de51ec8 in alloc_frame (s=s@entry=0x7f312c077180) at src/libavcodec/hevc_refs.c:117
#3 0x00007f319de52065 in generate_missing_ref (poc=-80, s=0x7f312c077180) at src/libavcodec/hevc_refs.c:402
#4 0x00007f319de52065 in add_candidate_ref (s=s@entry=0x7f312c077180, list=0x7f312c0776c8, poc=-80, ref_flag=ref_flag@entry=2) at src/libavcodec/hevc_refs.c:441
#5 0x00007f319de53518 in ff_hevc_frame_rps (s=s@entry=0x7f312c077180) at src/libavcodec/hevc_refs.c:491
#6 0x00007f319de5ff64 in hevc_frame_start (s=0x7f312c077180) at src/libavcodec/hevcdec.c:2789
#7 0x00007f319de5ff64 in decode_nal_unit (nal=<optimized out>, s=0x7f312c077180) at src/libavcodec/hevcdec.c:2934
#8 0x00007f319de5ff64 in decode_nal_units (length=<optimized out>, buf=<optimized out>, s=0x7f312c077180) at src/libavcodec/hevcdec.c:3045
#9 0x00007f319de5ff64 in hevc_decode_frame (avctx=<optimized out>, data=<optimized out>, got_output=<optimized out>, avpkt=<optimized out>) at src/libavcodec/hevcdec.c:3181
#10 0x00007f319dc917a7 in decode_simple_internal (frame=0x7f312c3407c0, avctx=0x7f312c33fd80) at src/libavcodec/decode.c:398
#11 0x00007f319dc917a7 in decode_simple_receive_frame (frame=<optimized out>, avctx=<optimized out>) at src/libavcodec/decode.c:594
#12 0x00007f319dc917a7 in decode_receive_frame_internal (avctx=avctx@entry=0x7f312c33fd80, frame=0x7f312c3407c0) at src/libavcodec/decode.c:612
#13 0x00007f319dc94588 in avcodec_send_packet (avctx=avctx@entry=0x7f312c33fd80, avpkt=0x7f3137a8acf0) at src/libavcodec/decode.c:674
#14 0x00007f319f6d48b1 in CodecVideoDecode (decoder=0x560c04d0c000) at codec.c:397
#15 0x00007f319f6c132d in VideoDecodeInput (stream=0x7f319f8e3600 <MyVideoStream>) at vaapidev.c:623
#16 0x00007f319f6c6dba in VaapiDisplayHandlerThread () at video.c:3925
#17 0x00007f319f6cdc6c in VideoDisplayHandlerThread (dummy=<optimized out>) at video.c:4551
#18 0x00007f31a82246db in start_thread (arg=0x7f3137a8b700) at pthread_create.c:463
#19 0x00007f31a6b0088f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)