Opened 4 months ago

Last modified 2 months ago

#13465 infoneeded Bug Report - General

mythtv-setup rewrites all capturecard.videodevice to /dev/dvb/adapter0/frontend0

Reported by: abrossard Owned by: Klaas de Waal
Priority: minor Milestone: needs_triage
Component: MythTV - Mythtv-setup Version: Master Head
Severity: medium Keywords: mythtv-setup 0.29, 0.30, master
Cc: Ticket locked: no

Description

Hi,

This bug was first found with version 0.29 and is still present in the latest master. mythtv-setup resets all the inputcard videodevice to the same value after I modify one card or add one card. Here is the situation after saving the changes in mythtv-setup. The problem is seen in both tables capturecard and inputgroup.

mysql> select cardid, videodevice, displayname, defaultinput, signal_timeout, channel_timeout, inputname, sourceid from capturecard order by cardid;
+--------+------------------------------+-------------+--------------+----------------+-----------------+-----------+----------+
| cardid | videodevice                  | displayname | defaultinput | signal_timeout | channel_timeout | inputname | sourceid |
+--------+------------------------------+-------------+--------------+----------------+-----------------+-----------+----------+
|      9 | /dev/dvb/adapter0/frontend0  | Nova T500 0 | DVBInput     |            750 |            3500 | DVBInput  |        1 |
|     11 | /dev/dvb/adapter0/frontend0  | Nova T500 2 | DVBInput     |            500 |            1750 | DVBInput  |        1 |
|     17 | /dev/dvb/adapter0/frontend0  | PV1         | Television   |           1000 |            1750 | DVBInput  |        1 |
|     22 | /dev/dvb/adapter0/frontend0  | PTV2        | Television   |           1000 |            1750 | DVBInput  |        1 |
|     24 | /dev/dvb/adapter0/frontend0  | TBS-0 F0    | Television   |           1000 |            3000 | DVBInput  |        1 |
|     25 | /dev/dvb/adapter0/frontend0  | TBS-0 SAT   | Television   |          15000 |           20000 | DVBInput  |        3 |
|     26 | /dev/dvb/adapter0/frontend0  | TBS-1 F0    | Television   |           1000 |            3000 | DVBInput  |        1 |
|     27 | /dev/dvb/TBS6590-1/frontend1 | TBS-1 SAT   | Television   |           9000 |           20000 | DVB-S2    |        3 |

I just wanted to check if the new version would allow me to set some new parameters on the existing card 27. When it proposed a videodevice, I had to select "new" and retyped the old value. This is what the table is supposed to look like:

| cardid | videodevice                  | displayname | defaultinput | signal_timeout | channel_timeout | inputname | sourceid |
+--------+------------------------------+-------------+--------------+----------------+-----------------+-----------+----------+
|      9 | /dev/dvb/NOVA0/frontend0     | Nova T500 0 | DVBInput     |            750 |            3500 | DVBInput  |        1 |
|     11 | /dev/dvb/NOVA1/frontend0     | Nova T500 2 | DVBInput     |            500 |            1750 | DVBInput  |        1 |
|     17 | /dev/dvb/PCTV0/frontend0     | PV1         | Television   |           1000 |            1750 | DVBInput  |        1 |
|     22 | /dev/dvb/PCTV1/frontend0     | PTV2        | Television   |           1000 |            1750 | DVBInput  |        1 |
|     24 | /dev/dvb/TBS6590-0/frontend0 | TBS-0 F0    | Television   |           1000 |            3000 | DVBInput  |        1 |
|     25 | /dev/dvb/TBS6590-0/frontend1 | TBS-0 SAT   | Television   |          15000 |           20000 | DVBInput  |        3 |
|     26 | /dev/dvb/TBS6590-1/frontend0 | TBS-1 F0    | Television   |           1000 |            3000 | DVBInput  |        1 |
|     27 | /dev/dvb/TBS6590-1/frontend1 | TBS-1 SAT   | Television   |           9000 |           20000 | DVB-S2    |        3 |

mytv[72] /usr/local/bin/mythtv-setup --version
Please attach all output as a file in bug reports.
MythTV Version : v31-Pre-517-gc3e7f806d0

Output:

2019-06-29 19:20:19.033263 C  mythtv-setup version: master [v31-Pre-517-gc3e7f806d0] www.mythtv.org
2019-06-29 19:20:19.033276 C  Qt version: compile: 5.12.2, runtime: 5.12.2
2019-06-29 19:20:21.743131 I  Current MythTV Schema Version (DBSchemaVer): 1350
2019-06-29 19:20:24.870371 I  VBox: Using UPNP to search for Vboxes (3 secs)
2019-06-29 19:20:28.614070 I  CardUtil(/dev/dvb/NOVA0/frontend0): dvb api version 5.11
2019-06-29 19:20:28.614096 I  CardUtil(/dev/dvb/NOVA0/frontend0): Delivery systems: DVB-T
2019-06-29 19:20:28.761978 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:28.762005 I  CardUtil: Supported delivery systems: DVB-T
2019-06-29 19:20:28.763171 W  DiSEqCDevTree: No device tree for cardid 9
2019-06-29 19:20:28.829565 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:28.829601 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:28.852727 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:28.852760 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:28.852772 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:30.373587 I  CardUtil(/dev/dvb/NOVA1/frontend0): dvb api version 5.11
2019-06-29 19:20:30.373617 I  CardUtil(/dev/dvb/NOVA1/frontend0): Delivery systems: DVB-T
2019-06-29 19:20:30.522343 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:30.522366 I  CardUtil: Supported delivery systems: DVB-T
2019-06-29 19:20:30.523425 W  DiSEqCDevTree: No device tree for cardid 11
2019-06-29 19:20:30.589635 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:30.589669 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:30.612835 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:30.612868 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:30.612914 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:31.791716 I  CardUtil(/dev/dvb/PCTV0/frontend0): dvb api version 5.11
2019-06-29 19:20:31.791745 I  CardUtil(/dev/dvb/PCTV0/frontend0): Delivery systems: DVB-T
2019-06-29 19:20:31.830839 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:31.830873 I  CardUtil: Supported delivery systems: DVB-T
2019-06-29 19:20:31.831906 W  DiSEqCDevTree: No device tree for cardid 17
2019-06-29 19:20:31.897672 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:31.897706 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:31.920260 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:31.920295 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:31.920307 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:32.316740 I  CardUtil(/dev/dvb/PCTV1/frontend0): dvb api version 5.11
2019-06-29 19:20:32.316768 I  CardUtil(/dev/dvb/PCTV1/frontend0): Delivery systems: DVB-T
2019-06-29 19:20:32.355466 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:32.355489 I  CardUtil: Supported delivery systems: DVB-T
2019-06-29 19:20:32.356437 W  DiSEqCDevTree: No device tree for cardid 22
2019-06-29 19:20:32.422481 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:32.422515 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:32.445481 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:32.445514 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:32.445526 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:32.814670 I  CardUtil(/dev/dvb/TBS6590-0/frontend0): dvb api version 5.11
2019-06-29 19:20:32.814716 I  CardUtil(/dev/dvb/TBS6590-0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:32.837382 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:32.837425 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:32.837437 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:32.838308 W  DiSEqCDevTree: No device tree for cardid 24
2019-06-29 19:20:32.905348 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:32.905383 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:32.928125 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:32.928158 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:32.928170 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:33.960768 I  CardUtil(/dev/dvb/TBS6590-0/frontend1): dvb api version 5.11
2019-06-29 19:20:33.960801 I  CardUtil(/dev/dvb/TBS6590-0/frontend1): Delivery systems: DVB-S DVB-S2 DSS
2019-06-29 19:20:34.228674 I  CardUtil: Current delivery system: DVB-S2
2019-06-29 19:20:34.228701 I  CardUtil: Supported delivery systems: DVB-S DVB-S2 DSS
2019-06-29 19:20:34.281865 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:34.281899 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:34.304122 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:34.304155 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:34.304167 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:36.286632 I  CardUtil(/dev/dvb/TBS6590-1/frontend0): dvb api version 5.11
2019-06-29 19:20:36.286668 I  CardUtil(/dev/dvb/TBS6590-1/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:36.309521 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:36.309553 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:36.309564 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:36.310645 W  DiSEqCDevTree: No device tree for cardid 26
2019-06-29 19:20:36.377952 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:36.377985 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:36.400730 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:36.400752 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:36.400759 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:20:37.408718 I  CardUtil(/dev/dvb/TBS6590-1/frontend1): dvb api version 5.11
2019-06-29 19:20:37.408750 I  CardUtil(/dev/dvb/TBS6590-1/frontend1): Delivery systems: DVB-S DVB-S2 DSS
2019-06-29 19:20:37.676740 I  CardUtil: Current delivery system: DVB-S2
2019-06-29 19:20:37.676767 I  CardUtil: Supported delivery systems: DVB-S DVB-S2 DSS
2019-06-29 19:20:37.745562 I  CardUtil(/dev/dvb/adapter0/frontend0): dvb api version 5.11
2019-06-29 19:20:37.745596 I  CardUtil(/dev/dvb/adapter0/frontend0): Delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:37.768028 I  CardUtil: Current delivery system: DVB-T
2019-06-29 19:20:37.768061 I  CardUtil: Supported delivery systems: DVB-T DVB-T2 DVB-C/A ISDBT DVB-C/B
2019-06-29 19:20:37.768073 I  CardUtil: Changing delivery system from DVB-T to DVB-T2
2019-06-29 19:21:38.420739 I  CardUtil(/dev/dvb/TBS6590-1/frontend1): dvb api version 5.11
2019-06-29 19:21:38.420772 I  CardUtil(/dev/dvb/TBS6590-1/frontend1): Delivery systems: DVB-S DVB-S2 DSS
2019-06-29 19:21:38.692738 I  CardUtil: Current delivery system: DVB-S2
2019-06-29 19:21:38.692766 I  CardUtil: Supported delivery systems: DVB-S DVB-S2 DSS


Alain

Change History (6)

comment:1 Changed 4 months ago by Klaas de Waal

Owner: changed from Peter Bennett to Klaas de Waal
Status: newassigned

This is a problem that I cannot reproduce on today's master.

I have tested this by first changing the channel_timeout of the last card, cardid 6, from 10000 to 11000 and then by changing the channel timeout of the first card, cardid 1, from 10000 to 12000. This is the result:

 MariaDB [mythconverg]> select cardid,videodevice,displayname,defaultinput,signal_timeout,channel_timeout from capturecard;
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
| cardid | videodevice                    | displayname | defaultinput | signal_timeout | channel_timeout |
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
|      1 | /dev/dvb/adapter_tb0/frontend1 | TBS-S2      | Television   |           7000 |           10000 |
|      2 | /dev/dvb/adapter_kc0/frontend0 | KC0         | Television   |           3000 |           20000 |
|      3 | /dev/dvb/adapter41/frontend0   | DS0         | Television   |           7000 |           10000 |
|      4 | /dev/dvb/adapter_mg0/frontend0 | MG0         | Television   |           3000 |            9000 |
|      5 | /dev/dvb/adapter_mg0/frontend0 | MG0         | Television   |           3000 |            9000 |
|      6 | /dev/dvb/adapter42/frontend0   | DS1         | Television   |           7000 |           10000 |
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
6 rows in set (0.001 sec)

MariaDB [mythconverg]> select cardid,videodevice,displayname,defaultinput,signal_timeout,channel_timeout from capturecard;
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
| cardid | videodevice                    | displayname | defaultinput | signal_timeout | channel_timeout |
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
|      1 | /dev/dvb/adapter_tb0/frontend1 | TBS-S2      | Television   |           7000 |           10000 |
|      2 | /dev/dvb/adapter_kc0/frontend0 | KC0         | Television   |           3000 |           20000 |
|      3 | /dev/dvb/adapter41/frontend0   | DS0         | Television   |           7000 |           10000 |
|      4 | /dev/dvb/adapter_mg0/frontend0 | MG0         | Television   |           3000 |            9000 |
|      5 | /dev/dvb/adapter_mg0/frontend0 | MG0         | Television   |           3000 |            9000 |
|      6 | /dev/dvb/adapter42/frontend0   | DS1         | Television   |           7000 |           11000 |
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
6 rows in set (0.001 sec)

MariaDB [mythconverg]> select cardid,videodevice,displayname,defaultinput,signal_timeout,channel_timeout from capturecard;
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
| cardid | videodevice                    | displayname | defaultinput | signal_timeout | channel_timeout |
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
|      1 | /dev/dvb/adapter_tb0/frontend1 | TBS-S2      | Television   |           7000 |           12000 |
|      2 | /dev/dvb/adapter_kc0/frontend0 | KC0         | Television   |           3000 |           20000 |
|      3 | /dev/dvb/adapter41/frontend0   | DS0         | Television   |           7000 |           10000 |
|      4 | /dev/dvb/adapter_mg0/frontend0 | MG0         | Television   |           3000 |            9000 |
|      5 | /dev/dvb/adapter_mg0/frontend0 | MG0         | Television   |           3000 |            9000 |
|      6 | /dev/dvb/adapter42/frontend0   | DS1         | Television   |           7000 |           11000 |
+--------+--------------------------------+-------------+--------------+----------------+-----------------+
6 rows in set (0.001 sec)


I suggest to delete all capturecards and create all capture cards again with the mythtv-setup gui only. If the problem is still there, please give an exact sequence on how to produce the problem so that it is possible to recreate it.

comment:2 Changed 3 months ago by Klaas de Waal

Status: assignedinfoneeded

comment:3 Changed 3 months ago by Klaas de Waal

Status: infoneededassigned

It is possible to segfault mythtv-setup with the following sequence:

  • select existing capture card
  • change "DVB device" name with "New entry" to a non-existing device
  • Save then Exit
  • select same capture card again
  • change "DVB device" name to existing device, either with "New entry" or by selecting a device from the list
  • Save then Exit

Now there can be a segfault, or, when running with valgrind, lots of errors appear. This is likely to be the cause of the reported problem. To be continued.

comment:4 Changed 2 months ago by Klaas de Waal

The memory access errors leading to a segmentation fault can be reliably created by the following sequence:

  • select 2. Capture cards
  • select (New capture card)
  • Select New capture card
  • Select DVB-S satellite card
  • Select DiSEqC (Switch LNB and Rotor Confguration)
  • Select LNB as Device Type
  • Save then Exit
  • select 2. Capture cards
  • Select the same DVB-S satellite card created earlier
  • Change DVB device to a device that is not a DVB-S card
  • Save then Exit

When running with valgrind, an impressive amount of valgrind errors appear now about memory that is accessed after it is free'ed. If valgrind is not running there is often a segmentation fault now.

This is now temporarily fixed by not deleting the structure that is mentioned in the valgrind messages. This does create a minor memory leak but as this code is only used in mythtv-setup that is of little consequence, and a memory leak is better then a segmentation fault.

comment:5 Changed 2 months ago by Klaas de Waal <kdewaal@…>

In adc2c4f041/mythtv:

Fix segfault in capture card editor

There can be a segmentation fault in the capture card editor
of mythtv-setup when configuring DVB-S satellite cards.
This happens when a capture card is changed from DVB-S,with
a configured input type of LNB (anything but not Unconnected),
to another type of DVB card.
After the capture card has been changed to a non-DVB-S type and
the DiSEqC tree has been deleted, a "Save then Exit" refers
to the already deleted DiSEqC tree. This creates a segmentation fault.
There are many more things to fix in the DiSEqC configuration
code and once this is done the "delete m_root" can be enabled again.
For now it is better to have a memory leak than a segmentation fault.

Refs #13465

comment:6 Changed 2 months ago by Klaas de Waal

Status: assignedinfoneeded

Although in researching this ticket a segmentation fault has been found I cannot find a way to reproduce the problem of this ticket, about the rewrite of the "videodevice" field to /dev/dvb/adaptor0/frontend0 for all cards except the one that is edited.

As suggested before, please delete all capturecards and create all capture cards again with the mythtv-setup gui only. Change the capture card device only by selecting from the list of devices instead of manually typing in a device name.

If the problem is still there, please give an exact sequence on how to produce the problem so that it is possible to recreate it.

Note: See TracTickets for help on using tickets.