Announcement

Collapse
No announcement yet.

7.4.0-1 dies on startup on Centos 4.8

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    7.4.0-1 dies on startup on Centos 4.8

    [[email protected] ~]# service squeezeboxserver start
    Starting Squeezebox Server: [ OK ]

    In the /var/log/messages:

    Oct 9 19:39:55 jumpy runuser: Use of uninitialized value in subroutine entry at /usr/share/squeezeboxserver/CPAN/YAML/Syck.pm line 75.
    Oct 9 19:39:55 jumpy squeezeboxserver: squeezeboxserver startup succeeded

    The process isn't running:

    [[email protected] ~]# ps auxww | grep squee
    root 2490 0.0 0.0 5260 640 pts/2 S+ 19:40 0:00 grep squee

    It looks like the perl function Load() isn't being passed a parameter.

    I reverted to 7.3.3 and everything works fine.

    #2
    Tried 7.4.1-1 to no avail

    I still have the same problem with 7.4.1-1. Reverting back to 7.3.3-1.

    Comment


      #3
      Originally posted by jmwhite5 View Post
      I still have the same problem with 7.4.1-1. Reverting back to 7.3.3-1.
      I had the same problem, I think it is because /var/lib/squeezeboxserver/prefs/server.prefs is missing after install.

      I tried :
      touch /var/lib/squeezeboxserver/prefs/server.prefs
      chown squeezeboxserver:squeezeboxserver /var/lib/squeezeboxserver/prefs/server.prefs
      service squeezeboxserver start

      and at some point the server.prefs got filled with values.

      The problem I now have is that squeezeboxserver segfaults:

      sudo -u squeezeboxserver /usr/libexec/squeezeboxserver --prefsdir=/var/lib/squeezeboxserver/prefs --logdir=/var/log/squeezeboxserver --cachedir=/var/lib/squeezeboxserver/cache --charset=utf8

      gives:

      [09-11-27 16:38:31.9852] main::init (320) Starting Squeezebox Server (v7.4.1, r28947, Tue Oct 20 07:59:38 PDT 2009) perl 5.008005
      Segmentation fault

      Very frustraiting:
      The older 7.3.3 will install but my Squeezebox-radio can't use it.

      The current stable 7.4.1 won't install on my Centos4.x/SME7.4 server where all my music is but will install on a Centos5/SMEserver8b4 install (a virtual machine) machine and on a Fedora12 install (a virtual machine).

      Mark Leman

      Comment


        #4
        7.4.0-1 dies on startup on Centos 4.8

        > The current stable 7.4.1 won't install on my Centos4.x/SME7.4 server
        > where all my music is but will install on a Centos5/SMEserver8b4 install


        AFAIK the perl used in CentOS 4.x is outdated (5.8.5) and has some serious bugs which lead to crashing SBS eg. when using the CLI. This has been an ongoing issue for years. I've ended up compiling perl 5.10 myself and modify slimserver.pl to use it instead of the system's perl binary.

        CentOS5 obviously has a more recent perl installation.

        --

        Michael
        Michael

        "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
        (LMS: Settings/Information)

        Comment


          #5
          Thanks Michael, I'll look in to the possibility of upgrading the version of perl in SME7 but I'm not too hopeful.

          Regards, Mark Leman

          Comment


            #6
            7.4.0-1 dies on startup on Centos 4.8

            > Thanks Michael, I'll look in to the possibility of upgrading the version
            > of perl in SME7 but I'm not too hopeful.


            Using SME7 myself I didn't go that way. SME heavily relies on perl for all its configuration. I didn't dare updating perl. Instead I'm using a perl I've installed in parallel.

            It's been quite a bit of tinkering to get it working. I used to provide the same solution for download for SME6/Perl 5.8. If you're willing to help figure the easiest procedure out, we can try to set this up for download for any CentOS4 based system user. Just let me know.

            --

            Michael
            Michael

            "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
            (LMS: Settings/Information)

            Comment


              #7
              Hi Michael,
              Like you I did not really want to tinker with the perl in SME7, as you rightly say, perl is fairly fundamental to how SME server works.

              It was good to see some code in the squeezeboxserver RPM install script to handle SME server. It would be a shame for that to be there and the install to fail for other reason. At least the future is bright with the SME8b4 install working 'out of the box'

              I'm certainly willing to help and I am happy write up the results in a 'howto' at contribs.org (the firefly media server Howto is one I did).

              If you have any notes send them my way and I'll have a go.

              There is also a thread over on contribs.org http://forums.contribs.org/index.php/topic,45083.0.html

              Regards, Mark Leman

              Comment


                #8
                7.4.0-1 dies on startup on Centos 4.8

                Mark,

                here is a very quickly converted howto, based on the version I did for SME 6:


                You might need to change a path or filename or other, as I don't know them right now. Please give it a try and let me know what did work and what not.

                --

                Michael
                Michael

                "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
                (LMS: Settings/Information)

                Comment


                  #9
                  Hi Michael,
                  Thanks for that, I have got as far as:

                  service slimserver stop
                  cd /usr/local/squeezebox
                  /usr/local/bin/perl5.10.0 slimserver.pl

                  which I changed to:
                  service squeezeboxserver stop
                  cd /usr/libexec
                  /usr/local/bin/perl5.10.0 squeezeboxserver

                  Which gave me:
                  [[email protected] libexec]# /usr/local/bin/perl5.10.0 /usr/libexec/squeezeboxserver
                  /usr/local/bin/perl5.10.0: symbol lookup error: /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/auto/Time/HiRes/HiRes.so: undefined symbol: Perl_Tstack_sp_ptr
                  [[email protected] libexec]#

                  Which I assume is because Perl5.10.0 is trying to use a library file from 5.8.5 "HiRes.so"?

                  I see I have "/usr/local/perl510/lib/5.10.0/i386-linux-thread-multi/auto/Time/HiRes/HiRes.so" so how to pursuade my system to use it? :-)

                  Regards, Mark Leman
                  Last edited by marklemsn; 2009-12-03, 00:25.

                  Comment


                    #10
                    Bit later....I am going to experiment with
                    perl -I /home/path/lib -I /usr/another/lib script.pl

                    Comment


                      #11
                      7.4.0-1 dies on startup on Centos 4.8

                      > /usr/local/bin/perl5.10.0: symbol lookup error:
                      > /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/auto/Time/HiRes/HiRes.so:
                      > undefined symbol: Perl_Tstack_sp_ptr


                      Argh... yeah... I knew it was more complicated than this. It's still trying to load perl 5.8.x modules, as SME is explicitely setting the PERL5LIB environment variable. I therefore have patched one more file. Here's my full diff:


                      Index: Slim/bootstrap.pm
                      ================================================== =================
                      --- Slim/bootstrap.pm (revision 29510)
                      +++ Slim/bootstrap.pm (working copy)
                      @@ -140,6 +140,7 @@
                      $libPath,
                      );

                      [email protected] = grep { $_ !~ /5\.8/ } @INC;
                      $d_startup && printf("Got \@INC containing:\n%s\n\n", join("\n", @INC));

                      # This works like 'use lib'
                      Index: slimserver.pl
                      ================================================== =================
                      --- slimserver.pl (revision 29510)
                      +++ slimserver.pl (working copy)
                      @@ -1,4 +1,4 @@
                      -#!/usr/bin/perl -w
                      +#!/usr/bin/perl5.10.0 -w

                      # Squeezebox Server Copyright 2001-2009 Logitech.
                      # This program is free software; you can redistribute it and/or
                      Index: scanner.pl
                      ================================================== =================
                      --- scanner.pl (revision 29510)
                      +++ scanner.pl (working copy)
                      @@ -1,4 +1,4 @@
                      -#!/usr/bin/perl -w
                      +#!/usr/bin/perl5.10.0 -w

                      The change to bootstrap.pm will simply remove all 5.8 related paths from the include path.

                      I'll update my page accordingly. Thanks for testing!

                      --

                      Michael
                      Michael

                      "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
                      (LMS: Settings/Information)

                      Comment


                        #12
                        :-) :-) :-) Can't quite believe it but I have just got it to work :-) :-) :-)

                        I had a look at your patches and added the line to /usr/lib/perl5/vendor_perl/Slim/bootstrap.pm as suggested:

                        Index: Slim/bootstrap.pm
                        ================================================== =================
                        --- Slim/bootstrap.pm (revision 29510)
                        +++ Slim/bootstrap.pm (working copy)
                        @@ -140,6 +140,7 @@
                        $libPath,
                        );

                        [email protected] = grep { $_ !~ /5\.8/ } @INC;
                        $d_startup && printf("Got \@INC containing:\n%s\n\n", join("\n", @INC));

                        # This works like 'use lib'

                        Tried to start Squeezeboxserver but it complained about lots of missing libraries (like DBI, JSON,... etc)

                        Restarted with:
                        squeezeboxserver --d_startup --s_stdout >debug.txt
                        to see what was going on.

                        Found it was looking in the following paths for the libraries:

                        /usr/libexec/CPAN
                        /usr/libexec/CPAN/arch/5.10/i386-linux-thread-multi/auto
                        /usr/libexec/CPAN/arch/5.10.0/i386-linux-thread-multi
                        /usr/libexec/CPAN/arch/5.10.0/i386-linux-thread-multi/auto
                        /usr/libexec/CPAN/arch/5.10/i386-linux-thread-multi
                        /usr/libexec/CPAN/arch/5.10/i386-linux-thread-multi/auto
                        /usr/libexec/CPAN/arch/i386-linux-thread-multi
                        /usr/libexec/lib
                        /usr/libexec
                        /usr/libexec
                        /usr/share/squeezeboxserver/CPAN/arch/5.10//i386-linux-thread-multi
                        /usr/share/squeezeboxserver/CPAN/arch/5.10/
                        /usr/local/perl510/lib/5.10.0/i386-linux-thread-multi
                        /usr/local/perl510/lib/5.10.0
                        /usr/local/perl510/lib/site_perl/5.10.0/i386-linux-thread-multi
                        /usr/local/perl510/lib/site_perl/5.10.0
                        /usr/lib/perl5/vendor_perl

                        Now I know that all the CPAN stuff is in /usr/share/squeezeboxserver/CPAN/ not /usr/libexec/CPAN, so and this is a tempoary kludge till I work our a nicer way, if I add a file system link:

                        ln -s /usr/share/squeezeboxserver/CPAN/ /usr/libexec/CPAN

                        Then things get much better! :-)

                        (I also notice the '//' in /usr/share/squeezeboxserver/CPAN/arch/5.10//i386-linux-thread-multi. Does perl mind about the double '/'? Might it work without needing the file system link if this was right?)

                        Now tried:
                        sudo -u squeezeboxserver /usr/libexec/squeezeboxserver --prefsdir=/var/lib/squeezeboxserver/prefs --logdir=/var/log/squeezeboxserver --cachedir=/var/lib/squeezeboxserver/cache --charset=utf8

                        And it works! ;-) and so does:

                        service squeezeboxserver start

                        I will let this settle in my mind for a few hours, retest it on a fresh virtual machine install of SME7 and then create a howto page on contribs.org.

                        Thanks Michael for your help, advice and encouragement. Without it I would not have got this working.

                        Regards, Mark Leman

                        Comment


                          #13
                          7.4.0-1 dies on startup on Centos 4.8

                          > :-) :-) :-) Can't quite believe it but I have just got it to work :-)

                          Great!

                          > /usr/libexec/CPAN
                          > /usr/libexec/CPAN/arch/5.10/i386-linux-thread-multi/auto
                          > /usr/libexec/CPAN/arch/5.10.0/i386-linux-thread-multi
                          > /usr/libexec/CPAN/arch/5.10.0/i386-linux-thread-multi/auto
                          > /usr/libexec/CPAN/arch/5.10/i386-linux-thread-multi
                          > /usr/libexec/CPAN/arch/5.10/i386-linux-thread-multi/auto
                          > /usr/libexec/CPAN/arch/i386-linux-thread-multi
                          > /usr/libexec/lib
                          > /usr/libexec
                          > /usr/libexec
                          > /usr/share/squeezeboxserver/CPAN/arch/5.10//i386-linux-thread-multi
                          > /usr/share/squeezeboxserver/CPAN/arch/5.10/


                          > ln -s /usr/share/squeezeboxserver/CPAN/ /usr/libexec/CPAN


                          Hm... are you running from the rpm file? Basically what you're missing is

                          /usr/share/squeezeboxserver/CPAN/arch/5.10/i386-linux-thread-multi/auto

                          right? I wonder whether this is an issue with how I've compiled that perl build.

                          > I will let this settle in my mind for a few hours, retest it on a fresh
                          > virtual machine install of SME7 and then create a howto page on
                          > contribs.org.


                          Did you plan to link to my page for the download? I'll have to update with your findings.

                          --

                          Michael
                          Michael

                          "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
                          (LMS: Settings/Information)

                          Comment


                            #14
                            7.4.0-1 dies on startup on Centos 4.8

                            > I'll have to update with your findings.

                            Done: http://www.herger.net/slim/detail.php?nr=1278

                            --

                            Michael
                            Michael

                            "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
                            (LMS: Settings/Information)

                            Comment


                              #15
                              Hi Michael,

                              Tonight I have re-run the install procedure from my notes and the details on your page on a fresh SME7 server and all went well.

                              I noticed a minor problem in your instructions, the names of the 3 files to patch is wrong.

                              Next I will create a new 'howto' Wiki page on contribs.org for squeezeboxserver based on the current SqueezeCenter howto and the work you and I have done. Is it ok to link to your perl tar file (with appropriate acknowledgement of course )? Alternatively I can host a copy.

                              Below are my notes from tonights work.

                              Regards, Mark Leman

                              ssh to server as root:

                              db yum_repositories set squeezecenter-release repository \
                              BaseURL http://repos.slimdevices.com/yum/squeezecenter/release/ \
                              EnableGroups no \
                              GPGCheck no \
                              GPGKey http://repos.slimdevices.com/yum/squ...-SqueezeCenter \
                              Name 'SqueezeCenter Release Repository' \
                              Visible no \
                              status disabled

                              signal-event yum-modify

                              yum --enablerepo=squeezecenter-release install squeezeboxserver

                              db configuration set squeezeboxserver service \
                              status enabled \
                              TCPPorts 9000,3483 \
                              UDPPorts 9000,3483 \
                              access private

                              signal-event remoteaccess-update

                              mkdir -p /opt/squeezeboxserver/playlists
                              mkdir -p /opt/squeezeboxserver/music
                              chown squeezeboxserver:squeezeboxserver /opt/squeezeboxserver/playlists
                              chown squeezeboxserver:squeezeboxserver /opt/squeezeboxserver/music

                              cd /usr/local
                              wget http://www.herger.net/slim/perl510.tgz
                              tar -xzf perl510.tgz

                              check perl has installed ok with:
                              /usr/local/perl510/bin/perl5.10.0 -v

                              ln -s /usr/local/perl510/bin/perl5.10.0 /usr/local/bin/
                              ln -s /usr/share/squeezeboxserver/CPAN/ /usr/libexec/CPAN

                              Next 3 files need to be re-modified after any upgrade.

                              edit first line of '/usr/libexecsqueezeboxserver' and '/usr/libexecsqueezeboxserver-scanner'
                              from
                              #!/usr/bin/perl -w
                              to
                              #!/usr/local/bin/perl5.10.0 -w

                              edit '/usr/lib/perl5/vendor_perl/Slim/bootstrap.pm'

                              At line 142 add
                              @INC = grep { $_ !~ /5\.8/ } @INC;

                              To test:
                              sudo -u squeezeboxserver /usr/libexec/squeezeboxserver --prefsdir=/var/lib/squeezeboxserver/prefs --logdir=/var/log/squeezeboxserver --cachedir=/var/lib/squeezeboxserver/cache --charset=utf8 --d_startup --s_stdout

                              ctrl-c will stop

                              To start service
                              service stueezeboxserver start

                              access web interface at 'http://my_servers_ip:9000/'

                              logs are in /var/log/squeezeboxserver/

                              Comment

                              Working...
                              X