bas-t / descrambler

Standalone version of FFdecsawrapper
GNU General Public License v3.0
7 stars 11 forks source link

segfault with simultaneous recordings #21

Open SoftwareSchlosser opened 3 years ago

SoftwareSchlosser commented 3 years ago

Hi, dvbloopback / descrambler (ffdecsawrapper) works fine as long as only one of the dvbloopback devices is being used. If I start another recording / live-tv, it has green artifacts and eventually ffdecsawrapper segfaults soon.

Using the debug version and the resulting core dump, gdb shows this backtrace:


/usr/bin/ffdecsawrapper --join 0:3 --join 1:4 --join 2:5 --cam-budget --sid-nocache --buffer 16M --debug 0 --cam-dir /etc/ffdecsawrapper

#0  0x000055b43bbff3ab in stream_cypher_group_init(stream_regs*, long long __vector(2) (*) [4], long long __vector(2) (*) [4], unsigned char*) ()
[Current thread is 1 (Thread 0x7fd9e820d700 (LWP 2663019))]
(gdb) bt
#0  0x000055b43bbff3ab in stream_cypher_group_init(stream_regs*, long long __vector(2) (*) [4], long long __vector(2) (*) [4], unsigned char*) ()
#1  0x000055b43bc02c57 in decrypt_packets(void*, unsigned char**) ()
#2  0x000055b43bbe2596 in process_ts (csa=0x55b43bf2fec0, 
    buffer=0x7fd9e9aa1d58 "G\001\377\030\003\021\200\344\302\030\003B-\266{\375\023\255EQܹ\325\065Ӟ;\250\003\034\232\375\367\027\064\033\275VL\034\310(\314\310\062\350FU\310jz\016\036\030v\266\232\251\005p\363\023\bw\022\006\f\371\374\366\227\262\231\360\212\210\022\203IM%\217졞?\273\307\344+\224\023EI8\224j4J\036e\303B\326f\372F\353渏\310Ɋ\232\372\027dV\237\271`L\362\210U\246b\202\064\262\332\377p\357\371Q\213\344\313V\357\001\064\020\365\273\370=\315gb\303\070G2s\243\033\214⒀\376\220\223*\016h\v|\026i\254\341\364@\244\204òׯ5h\356\234\066G\001\377\031O\243\064\321\036,\362T"..., end=34968, force=0) at dvblb_plugins/plugin_ffdecsa.c:327
#3  0x000055b43bbe2fec in process_ffd (msg=0x55b43be9f770, priority=1) at dvblb_plugins/plugin_ffdecsa.c:512
#4  0x000055b43bbd8258 in msg_loop (arg=0x1) at src/msg_passing.c:118
#5  0x00007fd9ed1fb609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007fd9ecdd5293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95```
SoftwareSchlosser commented 3 years ago

I found out one of my two DVB-S2 adapters seemed to cause that trouble. There were also artifacts even when using it without dvbloopback. I removed it and everything worked fine for a few weeks. After adding another DVB-S2 dual receiver, ffdecsawrapper now crashes very often, even with only one recording / live tv:

/usr/bin/ffdecsawrapper --join 0:4 --join 1:5 --join 2:6 --join 3:7 --cam-budget --sid-nocache --buffer 16M --debug 0 --cam-dir /etc/ffdecsawrapper:

Thread 33 "ffdecsawrapper" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd8a16700 (LWP 1962352)]
#0  0x000055555560c3ab in stream_cypher_group_init(stream_regs*, long long __vector(2) (*) [4], long long __vector(2) (*) [4], unsigned char*) ()
#1  0x000055555560fc57 in decrypt_packets(void*, unsigned char**) ()
#2  0x00005555555ef596 in process_ts (csa=0x5555556aa4b0, 
    buffer=0x7ffff70f0b50 "G\373\316\017\065\343\301\230.\311\351*\213'\205F4\037\212\240^\323\t\363\027\"\211\005 l|\303۠x!W|dCIbT\030\241L\037q\277ݺm\212\247\064\204\212\233\027\346\373\312c!\312\366\275\273N\214\224\247\022\337\331\337Z?\200\366\375ڋ\224q\347G\275\227\241\022 \333\311\371\234\362\235\362\207\254p\031\026\351\315\006\306\070\065\367\357\350ōd\360\064\332\357AL\206\246I", 
    end=27072, force=0) at dvblb_plugins/plugin_ffdecsa.c:327
#3  0x00005555555effec in process_ffd (msg=0x55555567e740, priority=1) at dvblb_plugins/plugin_ffdecsa.c:512
#4  0x00005555555e5258 in msg_loop (arg=0x1) at src/msg_passing.c:118
#5  0x00007ffff7c6e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007ffff7848293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

The new adapter is fine and it works without problems without dvbloopback / ffdecsawrapper. So there must be something ffdecsawrapper doesn't like about my new hardware / configuration. Interesting that it's the same code that's crashing. Do you have any ideas?