Bugzilla – Bug 16648
Squeezebox Server won't run on Perl 5.12
Last modified: 2010-11-17 13:55:26 UTC
SqueezeBox server does not work with Perl 5.12. This error is reported # service squeezeboxserver start Starting squeezeboxserver_trunk: Use of inherited AUTOLOAD for non-method YAML::Syck::DumpYAML() is deprecated at /usr/share/squeezeboxserver_trunk/server/CPAN/YAML/Syck.pm line 65. The following modules failed to load: EV JSON::XS Digest::SHA1 YAML::Syck GD Sub::Name This error prevents SqueezeBox server from running on Fedora 14 and virtually all of the latest versions Linux. There have been some workarounds posted in the user forum but they don't work or cause instability in SBS.
Still broken in Squeezebox 7.6 too Perl 5.12.
*** This bug has been confirmed by popular vote. ***
In Fedora 14, I've been able to whittle the list of failed modules down to "EV" and "YAML::Syck" by installing the following rpms: perl-Digest-SHA1-2.12-4.fc14.x86_64 perl-GD-2.44-4.fc14.x86_64 perl-JSON-XS-2.27-2.fc14.x86_64 perl-Sub-Name-0.04-6.fc14.x86_64 I also have the following installed: perl-Event-1.12-4.fc14.x86_64 perl-YAML-0.70-5.fc14.noarch But I still get the following error: # /etc/init.d/squeezeboxserver start Starting Squeezebox Server: Use of inherited AUTOLOAD for non-method YAML::Syck::DumpYAML() is deprecated at /usr/share/squeezeboxserver/CPAN/YAML/Syck.pm line 65. The following modules failed to load: EV YAML::Syck
A temporary workaround has been found and is explained here: http://forums.slimdevices.com/showpost.php?p=587995&postcount=85%22 Since we now know the exact issue, hopefully it can be quickly fixed in the "official" Logitech RPMs.
The fix posted here did not work for me. http://forums.slimdevices.com/showpost.php?p=587995&postcount=85%22 The only way I could get it working was to rebuild all the perl code that is part of SqueezeBox Server against perl 5.12.
The rebuild requirement is mentioned in post 85. If using the "official" Logitech distributions, you should download the latest nightly. Here is the comment from post 85: "The second is that the perl modules need to be rebuilt against perl 5.12. ISTR, that anyg mentioned he had built a 7.5.2 release with perl 5.12 modules. The 6.2 nightlies definitely have 5.12 modules. (That's what I'm running.)" The Logitech downloads can be found here: http://downloads.slimdevices.com/nightly/ I've only tested the 7.6 code - however, I believe the latest 7.5 code has been recompiled. Not sure about the 7.4...
Caution, the download in post 85 is specific to Fedora 14 - not sure if it will work in other distributions (however the root cause is the same). Again, hopefully Logitech will get this fixed quickly now that we all know the issue. It's causing alot of unnecessary confusion. Thanks to JackOfAll for publishing a clear, concise and simple to install workaround for Fedora!
Gerald, I do see that the nightly 7.5 and 7.6 builds have the 5.12 perl modules now. But I still get the # /etc/init.d/squeezeboxserver start Starting Squeezebox Server: Use of inherited AUTOLOAD for non-method YAML::Syck::DumpYAML() is deprecated at /usr/share/squeezeboxserver/CPAN/YAML/Syck.pm line 65. The following modules failed to load: EV XML::Parser::Expat JSON::XS Digest::SHA1 YAML::Syck GD Sub::Name error when I run them. I don't get this with the RPM I built against F14. Did you do anything special to get 7.6 nightly to run on F14?
(In reply to comment #8) > Gerald, I do see that the nightly 7.5 and 7.6 builds have the 5.12 perl modules > now. But I still get the > > # /etc/init.d/squeezeboxserver start > Starting Squeezebox Server: Use of inherited AUTOLOAD for non-method > YAML::Syck::DumpYAML() is deprecated at > /usr/share/squeezeboxserver/CPAN/YAML/Syck.pm line 65. > The following modules failed to load: EV XML::Parser::Expat JSON::XS > Digest::SHA1 YAML::Syck GD Sub::Name > > error when I run them. I don't get this with the RPM I built against F14. Did > you do anything special to get 7.6 nightly to run on F14? Did you: 1. Download Fedora 14 x86_64 libssp.so.0.0.0 2. Enter root mode 3. Place the file in /usr/libexec 4. chmod 777 libssp.so.0.0.0 5. issue command: ldconfig
(In reply to comment #9) > (In reply to comment #8) > > Gerald, I do see that the nightly 7.5 and 7.6 builds have the 5.12 perl modules > > now. But I still get the > > > > # /etc/init.d/squeezeboxserver start > > Starting Squeezebox Server: Use of inherited AUTOLOAD for non-method > > YAML::Syck::DumpYAML() is deprecated at > > /usr/share/squeezeboxserver/CPAN/YAML/Syck.pm line 65. > > The following modules failed to load: EV XML::Parser::Expat JSON::XS > > Digest::SHA1 YAML::Syck GD Sub::Name > > > > error when I run them. I don't get this with the RPM I built against F14. Did > > you do anything special to get 7.6 nightly to run on F14? > > Did you: > > 1. Download Fedora 14 x86_64 libssp.so.0.0.0 > 2. Enter root mode > 3. Place the file in /usr/libexec > 4. chmod 777 libssp.so.0.0.0 > 5. issue command: ldconfig Sorry, made a typo on item 3 - should read: 3. Place the file in /usr/lib64 Otherwise it definitely won't work... ;-)
I didn't do that. But why should SqueezeBox server need libssp? It never needed it before. Also the version of SsqueezeBox server that I rebuilt against Perl 5.12 doesn't need libssp and seems to work fine.
(In reply to comment #11) > I didn't do that. But why should SqueezeBox server need libssp? It never needed > it before. Also the version of SsqueezeBox server that I rebuilt against Perl > 5.12 doesn't need libssp and seems to work fine. I tried your package, it didn't work for me. The issue was explained in post 85 above. My understanding was libssp was always needed, prior to F14 it was in another location; now it has moved - hence the requirement to put it back. I've tested this workaround on three systems, the results are consistent.
What problems did you have with my RPM? It has been working flawlessly on VortexBox systems. Are you using Fedora x64? If so my RPM only works on 32 bit systems.
As for libssp I have searched my F11 system and can't find it. The standard SqueezeBox server is running fin on this systems.
I was able to fix this by doing the following: 1) cd /usr/share/squeezeboxserver/CPAN/YAML 2) mv Syck.pm Syck.pm.orig 3) Download and install the 2 rpms from here: http://packman.links2linux.org/package/llvm-gcc/142305 4) ln -s /usr/lib64/llvm-gcc/lib64/libssp.so.0 /usr/lib64/libssp.so.0 I also ensured all the following rpms were installed via yum: perl-Digest-SHA1-2.12-4.fc14.x86_64 perl-Sub-Name-0.04-6.fc14.x86_64 perl-YAML-0.70-5.fc14.noarch perl-YAML-LibYAML-0.33-1.fc14.x86_64 perl-YAML-Parser-Syck-0.01-15.fc14.x86_64 perl-YAML-Syck-1.07-4.fc14.x86_64 perl-YAML-Tiny-1.40-3.fc14.noarch And I'm using the following Squeezebox rpm: squeezeboxserver-7.5.2-0.1.31488.noarch
(In reply to comment #12) > (In reply to comment #11) > > I didn't do that. But why should SqueezeBox server need libssp? It never needed > > it before. Also the version of SsqueezeBox server that I rebuilt against Perl > > 5.12 doesn't need libssp and seems to work fine. > > I tried your package, it didn't work for me. The issue was explained in post > 85 above. My understanding was libssp was always needed, prior to F14 it was > in another location; now it has moved - hence the requirement to put it back. > I've tested this workaround on three systems, the results are consistent. Correction, libssp was not always needed, but they are needed now - it didn't move; my error. There is a discussion about what is going on here: http://forums.slimdevices.com/showthread.php?t=80458 For Fedora 14, the instructions above (corrected in comment 10) work.
It's the fact that andyg's (self-compiled) perl and the perl 5.12 modules he's building for the SBS distribution are built on a Debian Etch box with a standalone libssp that is causing the issue. (Compile with -fstack-protector and -lssp is added to the link flags, I guess.) From what I can tell, most of the recent distributions have the stack guard/check code in glibc and do not use the libssp (from the gcc distribution) when code is compiled with the stack-protector flag.
OK that makes sense. That's why when I rebuilt the perl stuff using a Fedora 14 build machine my RPM doesn't need libssp but the code released from Logitech needs it.
*** Bug 16369 has been marked as a duplicate of this bug. ***
== Auto-comment from SVN commit #31544 to the slim repo by agrundman == == http://svn.slimdevices.com/slim?view=revision&revision=31544 == Fixed bug 16648, rebuilt Perl 5.12 modules with -fno-stack-protector