Bug 16648 - Squeezebox Server won't run on Perl 5.12
: Squeezebox Server won't run on Perl 5.12
Status: RESOLVED FIXED
Product: Logitech Media Server
Classification: Unclassified
Component: Platform Support
: 7.4.1
: All RedHat Linux
: P2 major with 14 votes (vote)
: 7.5.2
Assigned To: Andy Grundman
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-11-05 08:06 UTC by Andrew
Modified: 2010-11-17 13:55 UTC (History)
4 users (show)

See Also:
Category: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew 2010-11-05 08:06:46 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.
Comment 1 simpz 2010-11-05 08:38:29 UTC
Still broken in Squeezebox 7.6 too Perl 5.12.
Comment 2 simpz 2010-11-05 08:39:03 UTC
*** This bug has been confirmed by popular vote. ***
Comment 3 Kyle K. 2010-11-08 01:43:24 UTC
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
Comment 4 gbcox@bzb.us 2010-11-09 11:23:50 UTC
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.
Comment 5 Andrew 2010-11-09 11:33:00 UTC
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.
Comment 6 gbcox@bzb.us 2010-11-09 11:38:22 UTC
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...
Comment 7 gbcox@bzb.us 2010-11-09 11:43:19 UTC
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!
Comment 8 Andrew 2010-11-09 12:36:07 UTC
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?
Comment 9 gbcox@bzb.us 2010-11-09 12:46:50 UTC
(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
Comment 10 gbcox@bzb.us 2010-11-09 13:19:05 UTC
(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... ;-)
Comment 11 Andrew 2010-11-09 15:33:27 UTC
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.
Comment 12 gbcox@bzb.us 2010-11-09 16:19:08 UTC
(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.
Comment 13 Andrew 2010-11-09 16:33:44 UTC
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.
Comment 14 Andrew 2010-11-09 16:35:03 UTC
As for libssp I have searched my F11 system and can't find it. The standard SqueezeBox server is running fin on this systems.
Comment 15 Kyle K. 2010-11-09 17:12:00 UTC
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
Comment 16 gbcox@bzb.us 2010-11-10 05:42:41 UTC
(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.
Comment 17 JackOfAll 2010-11-10 06:10:46 UTC
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.
Comment 18 Andrew 2010-11-10 07:20:45 UTC
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.
Comment 19 Andy Grundman 2010-11-17 13:40:18 UTC
*** Bug 16369 has been marked as a duplicate of this bug. ***
Comment 20 SVN Bot 2010-11-17 13:55:26 UTC
 == 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