Opendigitalradio / dablin

DAB/DAB+ receiver for Linux (including ETI-NI and EDI AF playback)
GNU General Public License v3.0
123 stars 27 forks source link

Crash with DAB+ #43

Closed andimik closed 5 years ago

andimik commented 5 years ago

I wanted to test DRMplus and have installed faad (and maybe others) with DRM support. A big mistake ........

But now dablin_gtk crashes:

AACDecoder: using decoder 'FAAD2'
terminate called after throwing an instance of 'std::runtime_error'
  what():  AACDecoderFAAD2: error while NeAACDecSetConfiguration
Abgebrochen (Speicherabzug geschrieben)

I even reinstalled all packages with $ dpkg --get-selections | grep "\binstall" | awk '{print $1}' > /tmp/dpkg.log and then $ sudo xargs -n1 apt-get --reinstall install -y < /tmp/dpkg.log .

But this is strange:

$ sudo apt-get install -f libfaad2*
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Hinweis: »libfaad2-dev« wird für das Suchmuster »libfaad2*« gewählt.
Hinweis: »libfaad2-0« wird für das Suchmuster »libfaad2*« gewählt.
Hinweis: »libfaad2« wird für das Suchmuster »libfaad2*« gewählt.
libfaad2 ist schon die neueste Version (2.8.8-1).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
andreas@E535:~$ dpkg -l faa*
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name            Version      Architektur  Beschreibung
+++-===============-============-============-===================================
ii  faad            2.8.8-1      amd64        freeware Advanced Audio Decoder pla
un  faad2           <keine>      <keine>      (keine Beschreibung vorhanden)

In the meanwhile I managed to get sound back for welle-io and qt-dab, but not for dablin ...

basicmaster commented 5 years ago

Hmm, did you try to compile it right from the start i.e. also calling cmake .. in an empty folder, instead of reusing the old folder or just calling make in it? If so, could you try with sudo ldconfig and start again with cmake .. in the empty folder? Which Linux distribution do you use?

andimik commented 5 years ago

Unfortunately that didn't work. I have Kubuntu 18.04

basicmaster commented 5 years ago

and have installed faad (and maybe others) with DRM support

How did you install it? Ready-to-use package via download or package source, or did you compile/install it on your own?

What does dpkg -l *faad* return?

basicmaster commented 5 years ago

And what does locate *libfaa*.so return? According to the package description, Ubuntu always provides two library versions, one with and one without the DRM option.

andimik commented 5 years ago
$ dpkg -l *faad*
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name            Version      Architektur  Beschreibung
+++-===============-============-============-===================================
ii  faad            2.8.8-1      amd64        freeware Advanced Audio Decoder pla
un  faad2           <keine>      <keine>      (keine Beschreibung vorhanden)
ii  libfaad-dev:amd 2.8.8-1      amd64        freeware Advanced Audio Decoder - d
ii  libfaad2:amd64  2.8.8-1      amd64        freeware Advanced Audio Decoder - r
un  libfaad2-0      <keine>      <keine>      (keine Beschreibung vorhanden)
un  libfaad2-dev    <keine>      <keine>      (keine Beschreibung vorhanden)

$ locate *libfaa*.so
/home/andreas/apps/faad2-2.7/libfaad/.libs/libfaad.so
/usr/lib/x86_64-linux-gnu/libfaad.so
/usr/lib/x86_64-linux-gnu/libfaad_drm.so
/usr/local/lib/libfaad.so
/usr/local/lib/libfaad2_drm.so
/usr/local/lib/libfaad_drm.so

/usr/local/lib$ locate *libfaa*.so                        
/home/andreas/apps/faad2-2.7/libfaad/.libs/libfaad.so
/home/andreas/apps/faad2-2.7/libfaad/.libs/libfaad.so.2
/home/andreas/apps/faad2-2.7/libfaad/.libs/libfaad.so.2.0.0
/lib64/libfaad.so.2
/usr/lib/x86_64-linux-gnu/libfaad.so
/usr/lib/x86_64-linux-gnu/libfaad.so.2
/usr/lib/x86_64-linux-gnu/libfaad.so.2.0.0
/usr/lib/x86_64-linux-gnu/libfaad_drm.so
/usr/lib/x86_64-linux-gnu/libfaad_drm.so.2
/usr/lib/x86_64-linux-gnu/libfaad_drm.so.2.0.0
/usr/local/lib/libfaad.so
/usr/local/lib/libfaad.so.2
/usr/local/lib/libfaad.so.2.0.0
/usr/local/lib/libfaad2_drm.so
/usr/local/lib/libfaad2_drm.so.2
/usr/local/lib/libfaad2_drm.so.2.0.0
/usr/local/lib/libfaad_drm.so
/usr/local/lib/libfaad_drm.so.2
/usr/local/lib/libfaad_drm.so.2.0.0

This is the output. Should I delete all files containing drm?

basicmaster commented 5 years ago

Hmm, according to the locate output, you seem to also have manually installed FAAD2 v2.8.8 (as this version - in contrast to v2.7 - compiles the DRM and the non-DRM version of the lib), as files are below /usr/local which most libs have as default folder when they are installed.

Unfortunately the source folder no longer exists, as it seems (only a folder for v2.7). But this is not a big issue: You can just download/extract the FAAD2 source code again, and run ./configure and sudo make uninstall to cleanly remove the previously installed files. Make sure with sudo updatedb and again locate *libfaa*.so that no more /usr/local/lib/.......files exist.

However I wonder where the libfaad2_drm.so files/links come from. FAAD2 doesn't seem to use this filename itself.

And finally again sudo ldconfig to "update the lib cache".

andimik commented 5 years ago

Now it's a bit less, but not completely ...

$ locate *faa*.so
/usr/lib/x86_64-linux-gnu/libfaad.so
/usr/lib/x86_64-linux-gnu/libfaad_drm.so
/usr/local/lib/libfaad2_drm.so
/usr/local/lib/libfaad_drm.so

I remember I was following https://gist.github.com/onetransistor/4cbe3a8ab5d47da22cde

Attached my history regarding faad and drm

history_faad.txt history_drm.txt

andreas@E535:/usr/local/lib$ ls -l *drm*
-rw-r--r-- 1 root root  335492 Dec  7 21:57 libdrmplus.a
-rwxr-xr-x 1 root root     976 Dec  7 21:57 libdrmplus.la
lrwxrwxrwx 1 root root      19 Dec  7 21:57 libdrmplus.so -> libdrmplus.so.0.1.0
lrwxrwxrwx 1 root root      19 Dec  7 21:57 libdrmplus.so.0 -> libdrmplus.so.0.1.0
-rwxr-xr-x 1 root root  195760 Dec  7 21:57 libdrmplus.so.0.1.0
lrwxrwxrwx 1 root root      36 Dec  7 21:50 libfaad2_drm.so -> /usr/local/lib/libfaad2_drm.so.2.0.0
lrwxrwxrwx 1 root root      36 Dec  7 21:50 libfaad2_drm.so.2 -> /usr/local/lib/libfaad2_drm.so.2.0.0
-rwxr-xr-x 1 root root 1107760 Dec  7 21:50 libfaad2_drm.so.2.0.0
-rw-r--r-- 1 root root 1729158 Dec  7 21:42 libfaad_drm.a
-rwxr-xr-x 1 root root     963 Dec  7 21:42 libfaad_drm.la
lrwxrwxrwx 1 root root      20 Dec  7 21:42 libfaad_drm.so -> libfaad_drm.so.2.0.0
lrwxrwxrwx 1 root root      18 Jan  9 22:48 libfaad_drm.so.2 -> libfaad_drm.so_alt
-rwxr-xr-x 1 root root 1100528 Dec  7 21:42 libfaad_drm.so.2.0.0
-rwxr-xr-x 1 root root 1100528 Jan  9 20:23 libfaad_drm.so_alt
andreas@E535:/usr/local/lib$ ls -l *aad*
lrwxrwxrwx 1 root root      36 Dec  7 21:50 libfaad2_drm.so -> /usr/local/lib/libfaad2_drm.so.2.0.0
lrwxrwxrwx 1 root root      36 Dec  7 21:50 libfaad2_drm.so.2 -> /usr/local/lib/libfaad2_drm.so.2.0.0
-rwxr-xr-x 1 root root 1107760 Dec  7 21:50 libfaad2_drm.so.2.0.0
-rw-r--r-- 1 root root 1729158 Dec  7 21:42 libfaad_drm.a
-rwxr-xr-x 1 root root     963 Dec  7 21:42 libfaad_drm.la
lrwxrwxrwx 1 root root      20 Dec  7 21:42 libfaad_drm.so -> libfaad_drm.so.2.0.0
lrwxrwxrwx 1 root root      18 Jan  9 22:48 libfaad_drm.so.2 -> libfaad_drm.so_alt
-rwxr-xr-x 1 root root 1100528 Dec  7 21:42 libfaad_drm.so.2.0.0
-rwxr-xr-x 1 root root 1100528 Jan  9 20:23 libfaad_drm.so_alt
lrwxrwxrwx 1 root root      21 Jan  9 22:48 libfaad.so.2 -> libfaad2_drm.so.2.0.0

Then I deleted all faad files in /usr/local/lib/ and /usr/lib/x86_64-linux-gnu/ and then sudo ldconfig and sudo updatedb again.

Recompiled faad2 and made install it.

Now I have audio in dablin_gtk again.

Thanks for the hints! I hope no one else having the same problem will have to read my instructions ...

So I close it

basicmaster commented 5 years ago

OK, great that it works again.

Nevertheless most often it is better to use the version from the package sources. So now you have cleaned up the old state (btw the files below /usr/lib/x86_64-linux-gnu/ are actually the ones from the package source), I would really recommend to go back using the FAAD2 version from the package sources. This means sudo make uninstall for the version you just recompiled and then (re)installing the relevant FAAD2 packages.