Em Mon, 26 Aug 2019 22:25:28 +0300
Olcay Korkmaz <olcay.kr...@gmail.com> escreveu:

> 1.14.2 and git tree build gives the same error
> TS of entire transponder:
> https://drive.google.com/file/d/1zHouZSlbPowyJY5tzT5ro0r4ciPURkbi/view?usp=sharing

Thanks!

Please don't top-post.

> > Em Mon, 26 Aug 2019 19:59:17 +0300
> > Olcay Korkmaz <olcay...@gmail.com> escreveu:
> >  


> > > Service TV8, provider TV8: digital television
> > > Storing as channel TV8
> > >
> > > Program received signal SIGSEGV, Segmentation fault.
> > > 0x00007ffff7ba5cff in dvb_store_channel ()
> > >    from /usr/lib/x86_64-linux-gnu/libdvbv5.so.0
> > > (gdb) backtrace  
> >
> >  
> > > #0 0x00007ffff7ba5cff in dvb_store_channel ()
> > >    from /usr/lib/x86_64-linux-gnu/libdvbv5.so.0
> > > #1 0x00005555555560c6 in run_scan (dvb=0x55555575d2e0, 
> > > args=0x7fffffffdc80)
> > >     at dvbv5-scan.c:313
> > > #2 main (argc=<optimized out>, argv=<optimized out>) at dvbv5-scan.c:562

Ok, the problem is happening here:

Program received signal SIGSEGV, Segmentation fault.
dvb_store_channel (dvb_file=0x7fffffffe460, __p=0x5555555605d0, 
dvb_scan_handler=0x555555565060, get_detected=0, 
    get_nit=0) at dvb-file.c:1345
1345                    if (dvb_scan_handler->nit->transport) {
(gdb) bt
#0  dvb_store_channel (dvb_file=0x7fffffffe460, __p=0x5555555605d0, 
dvb_scan_handler=0x555555565060, get_detected=0, 
    get_nit=0) at dvb-file.c:1345
#1  0x0000555555556847 in run_scan (dvb=0x5555555604f0, args=0x7fffffffe4b0) at 
dvbv5-scan.c:313
#2  main (argc=<optimized out>, argv=<optimized out>) at dvbv5-scan.c:562

The enclosed patch should fix the issue. Could you please check?

diff --git a/lib/libdvbv5/dvb-file.c b/lib/libdvbv5/dvb-file.c
index d077271a6546..474b59cb6fce 100644
--- a/lib/libdvbv5/dvb-file.c
+++ b/lib/libdvbv5/dvb-file.c
@@ -1342,7 +1342,7 @@ int dvb_store_channel(struct dvb_file **dvb_file,
                        dvb_log(_("Storing as channel %s"), channel);
                vchannel = dvb_vchannel(parms, dvb_scan_handler->nit, 
service->service_id);
 
-               if (dvb_scan_handler->nit->transport) {
+               if (dvb_scan_handler->nit && dvb_scan_handler->nit->transport) {
                        network_id = 
dvb_scan_handler->nit->transport->network_id;
                        transport_id = 
dvb_scan_handler->nit->transport->transport_id;
                }


Regards,
Mauro

Reply via email to