Hallo,
ich bin am Wochenende ausgehend von [yavdr-ansible] pin und zaphistory auf eine unglückliche funktionale Änderung in der glibc (?) gestoßen, die neu kompilierten alten C(++) Code kaputt machen kann.
Der fehler entsteht durch die Nutzung einer alte GNU Extension für den Format Specifier `%a[...]` bei den *scanf Methoden (http://manpages.ubuntu.com/man…/scanf.3.html#anmerkungen), der später durch das Posix-kompatible `%m[...]` (https://gcc.gnu.org/gcc-5/porting_to.html Abschnitt "Different meaning of the %a *scanf conversion specification") abgelöst wurde. Der VDR hat die Änderung zu %m[...] schon in Version 2.1.3 durchgezogen, aber leider wurde diese Änderung bei diversen Plugins nicht gemacht und dann klappt das Parsen von Strings nicht mehr, weil -D_GNU_SOURCE mit neuen glibc-Versionen nur noch bei bestimmten alten C und C++ Versionen respektiert wird.
Dieser Commit sieht so aus, als ob er für diese Änderung verantwortlich ist, aber dummerweise ist die offizielle Dokumentation noch nicht mal beim Hinweis auf `%m[...]` angekommen, geschweige denn, dass sie erwähnt, unter welchen Bedingungen man `%a[...]` noch nutzen kann: https://www.gnu.org/software/l…html#Dynamic-String-Input
Betroffen sind soweit ich das bei den Plugins mit mir bekannten Git-Repos sehen konnte, sind mindestens folgende Plugins:
- pin
- zaphistory
- mcli
- pvrinput
- playlist
- infosatepg
- robotv
- eepg
Für die Pakete in den yaVDR-PPAs für focal habe ich (soweit die Plugins dort paketiert sind) Patches eingebaut, aber am besten wäre es das Upstream zu korrigieren (also %a[ im sscanf-Aufruf durch %m[ und %as durch %ms zu ersetzen).