MythTV / mythtv

The official MythTV repository
https://www.mythtv.org
GNU General Public License v2.0
701 stars 344 forks source link

Visualiser problems in MythMusic #429

Closed Jpilk closed 2 years ago

Jpilk commented 2 years ago

What steps will reproduce the bug?

'Listen to Radio Stream' . In case it's relevant this was 'Classic FM'. Or 'Play Music'. Select a visualiser. Goom and Synaesthenia have problems. With Goom playback stops immediately. Synaesthenia is OK until fullscreen is selected.

How often does it reproduce? Is there a required condition?

What is the expected behaviour?

What do you see instead?

Additional information

On selecting the Goom visualiser, 'Handling Aborted' is immediate. The core dump report comes several seconds later.

2021-12-12 11:42:35.662154 I ScreenSaverX11: Inhibited X11 screensaver MMX detected. Using fast method ! /usr/include/c++/11/array:188: constexpr std::array<_Tp, _Nm>::value_type& std::array<_Tp, _Nm>::operator[](std::array<_Tp, _Nm>::size_type) [with _Tp = short int; long unsigned int _Nm = 512; std::array<_Tp, _Nm>::reference = short int&; std::array<_Tp, _Nm>::size_type = long unsigned int]: Assertion '__n < this->size()' failed. Handling Aborted Aborted (core dumped) [john@HPFed ~]$

'Synaesthesia' in full-screen mode is unresponsive and eventually segfaults.

Jpilk commented 2 years ago

Ubuntu 20.04.3 LTS PPA at the same commit on an old laptop does show Goom full screen but then does not respond to attempts to leave, other than ctrl/c which provokes a segfault. I should probably start, as I do in el7, with 'MYTHTV_NO_EGL=1 mythfrontend.real'. The el7 command lines for setup and frontend omit the '.real'.

Classic FM shows a content-identifying popup that seems to disable the key response.

Jpilk commented 2 years ago

Following instructions posted by Hampton on users list, 22 Nov:

john@HPFed ~]$ sudo coredumpctl | tail

Sun 2021-12-12 11:39:37 GMT 525087 1000 1000 SIGSEGV truncated /usr/bin/mythfrontend 10.7M

Sun 2021-12-12 12:14:05 GMT 526626 1000 1000 SIGABRT truncated /usr/bin/mythfrontend 19.9M

[john@HPFed ~]$ sudo coredumpctl info 526626 PID: 526626 (mythfrontend) UID: 1000 (john) GID: 1000 (john) Signal: 6 (ABRT) Timestamp: Sun 2021-12-12 12:12:26 GMT (10h ago) Command Line: mythfrontend Executable: /usr/bin/mythfrontend Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.konsole-b005227f6f1e49039faafb6898b189da> Unit: user@1000.service User Unit: app-org.kde.konsole-b005227f6f1e49039faafb6898b189da.scope Slice: user-1000.slice Owner UID: 1000 (john) Boot ID: aba4fb2337334244aa5c2006a783655c Machine ID: 8e48e8936f164617831ccf1e0de0bbf0 Hostname: HPFed Storage: /var/lib/systemd/coredump/core.mythfrontend.1000.aba4fb2337334244aa5c2006a783655c.526626.1639311146000000.zs> Disk Size: 19.9M Message: Process 526626 (mythfrontend) of user 1000 dumped core.

            Stack trace of thread 526626:
            #0  0x00007f6a4ee662a2 n/a (n/a + 0x0)

[john@HPFed ~]$ sudo coredumpctl info 525087 PID: 525087 (mythfrontend) UID: 1000 (john) GID: 1000 (john) Signal: 11 (SEGV) Timestamp: Sun 2021-12-12 11:38:04 GMT (11h ago) Command Line: mythfrontend Executable: /usr/bin/mythfrontend Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.konsole-b005227f6f1e49039faafb6898b189da> Unit: user@1000.service User Unit: app-org.kde.konsole-b005227f6f1e49039faafb6898b189da.scope Slice: user-1000.slice Owner UID: 1000 (john) Boot ID: aba4fb2337334244aa5c2006a783655c Machine ID: 8e48e8936f164617831ccf1e0de0bbf0 Hostname: HPFed Storage: /var/lib/systemd/coredump/core.mythfrontend.1000.aba4fb2337334244aa5c2006a783655c.525087.1639309084000000.zs> Disk Size: 10.7M Message: Process 525087 (mythfrontend) of user 1000 dumped core.

            Stack trace of thread 525087:
            #0  0x00007efc577c6bda n/a (n/a + 0x0)

[john@HPFed ~]$

Jpilk commented 2 years ago

The "MMX detected. Using fast method !" message appears reliably when goom is selected. It is from /mythtv/libs/libmythtv/visualisations/goom/filters.cpp The code has much ifdeffery and commenting out. The core dump appears only after tens of seconds.

Operating System: Fedora 34 KDE Plasma Version: 5.22.5 KDE Frameworks Version: 5.85.0 Qt Version: 5.15.2 Kernel Version: 5.15.7-100.fc34.x86_64 (64-bit) Graphics Platform: X11 Processors: 2 × Intel® Core™2 Duo CPU E8200 @ 2.66GHz Memory: 3.7 GiB of RAM Graphics Processor: NVIDIA GeForce GT 710/PCIe/SSE2

Jpilk commented 2 years ago

The problem with goom affects only my Fedora 34 boxes, both of which have nVidia cards. I'm using X11, not Wayland. The "MMX detected. Using fast method !" output appears in both F34 and el7; the error message which follows it in F34 (see initial post here) points to this code:

` // Element access. _GLIBCXX17_CONSTEXPR reference operator[](size_type n) noexcept { glibcxx_requires_subscript(n); <<<<<<<<<<<<<<<<<<<<<< return _AT_Type::_S_ref(_M_elems, n); }

  constexpr const_reference
  operator[](size_type __n) const noexcept
  {

if __cplusplus >= 201402L

__glibcxx_requires_subscript(__n);

endif

return _AT_Type::_S_ref(_M_elems, __n);
  }

` ....etc

Jpilk commented 2 years ago

The cause seems to me to be the use of an unsigned integer as an array index, when a short integer is expected.

Jpilk commented 2 years ago

This is very strange. Clearly the visualiser is not a vital part of MythTV, but goom does look pretty. It works in today's build of Master from the ubuntu ppa, and in my build of Master for el7 in July, but reliably crashes in recent builds for Fedora.

The logs on crashing suggest that the problem is in access through std::array, which was introduced during 'tidying' in August

https://github.com/MythTV/mythtv/commit/15d7643a23094c05505c66c10d003ec687eda7a7#diff-3eaefe57ec232ce9e0149fc9d0e2e1bc5def321ccdba69d32832ac51e2e2fab2

but I would expect that to affect ubuntu as well.

FWIW 'dnf install projectM-pulseaudio' provides a huge range of alternatives...

kmdewaal commented 2 years ago

John, I think that the last commit does fix the reported issues. Please give it a try.

Jpilk commented 2 years ago

Yes, thank you Klaas. Goom is working well now in Fedora, and in full screen mode in a 1024x576 KDE window runs at about 20% on 2 cores at 2 GHz. Both Visual Scaling factors ( in Music Settings ) are at 1.

I still have the problem of unresponsiveness when the content identifier is on screen, and at present Classic FM, for example, has that full time. Others have a fade out. Ctrl/c to quit seems a bit brutal. I'll experiment some more. Thanks again.

kmdewaal commented 2 years ago

I have tried all available visualizers and when playing back music files it all works OK now, including Synaesthenia and including exiting from full screen visualizer with an escape. There is a reproducible problem of unresponsiveness and worse when using "Live TV" (rather Live Audio in this case) to play DVB audio channels. This is a known problem described in trac ticket 13156. See https://code.mythtv.org/trac/ticket/13156 I do not have audio channels with a content identifier on screen as mentioned for Classic FM. If the unresponsiveness when trying to exit Classic FM is happening with Live TV then this issue can be closed.

Jpilk commented 2 years ago

The unresponsiveness when "watching this channel" in DVB radio can still be provoked, even with the visualiser off. Attempts to leave give 2 runs of "waited 100 ms for decoder lock" followed by a continuous stream of waiting 10 ms; exit by Ctrl/C to the frontend konsole logging window.

kmdewaal commented 2 years ago

There are definitely major problems with live rendering of DVB radio. I suggest to create a new issue for these problems. For the visualisations, the Goom visualizer has been playing here almost the full Christmas without problems so I consider that problem to be solved.

Jpilk commented 2 years ago

It's worth noting that the new Goom seems to give a much wider range of effects than the version that I see on the box that is stuck with the old 'working' version; and they all seem pretty good.