Page 1 of 1

Error when I add a music library

PostPosted: Sun Sep 10, 2006 8:24 pm
by humanizer
Hi!

I installed newest tomcat and newest JRE. Subsonic deploys fine. I added a directory with only one mp3 album. Worked great. Then I added one more . Everyting looks fine til i add the large music path. Then he gives me this in left and top border :

Exception java.lang.NullPointerException
Message null
Java version Sun Microsystems Inc. 1.5.0_06
Operating system Linux 2.4.22
Tomcat home /usr/local/apache-tomcat-5.5.17
Stack trace java.lang.NullPointerException at net.sourceforge.subsonic.domain.MusicFile$MusicFileSorter.compare(MusicFile.java:568) at net.sourceforge.subsonic.domain.MusicFile$MusicFileSorter.compare(MusicFile.java:553) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at net.sourceforge.subsonic.domain.MusicFile.getChildren(MusicFile.java:252) at net.sourceforge.subsonic.domain.MusicIndex.getIndexedChildren(MusicIndex.java:159) at net.sourceforge.subsonic.controller.LeftController.handleRequestInternal(LeftController.java:46) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:796) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:727) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:181) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:216) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:195) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148) at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:25) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source)

What can i do to make it work?

PostPosted: Mon Sep 11, 2006 7:51 am
by sindre_mehus
Hi,

Sounds like there is something in one of your music folders which Subsonic doesn't handle.

Could you try to narrow it down to the one music folder which causes problems, and then do a "ls -l" in that folder? Please post the result here (or send it to me by email if you don't want to disclose it to the world).

Regards,
Sindre

PostPosted: Tue Sep 12, 2006 11:02 am
by dieter
I had the same problem on my linux system.
The error was caused by special national characters included in some file names.
Renaming these files containing only plain ASCII chars solved the problem.

PostPosted: Tue Sep 12, 2006 11:24 am
by humanizer
Ahh ok. I really dont want to rename all my mp3s with national characters. Will this be fixed in future releases?

PostPosted: Tue Sep 12, 2006 1:07 pm
by sindre_mehus
I'll be more than happy to fix it, but I need more info. I have files with international characters myself, but I've never seen this error.

humanizer, can you please verify that it is indeed a problem with characters, and narrow it down to a minimal, reproducible case?

Thanks a lot :-)

Sindre

PostPosted: Wed Sep 13, 2006 7:34 am
by dieter
here is an example:

miraculix:/data/mp3/test # cp test_1.mp3 test_ä.mp3
miraculix:/data/mp3/test # cp test_1.mp3 test_ü.mp3

miraculix:/data/mp3/test # l
-rwxr-xr-x 1 root root 11849141 Sep 13 09:19 test_1.mp3*
-rwxr-xr-x 1 root root 11849141 Sep 13 09:20 test_?.mp3*
-rwxr-xr-x 1 root root 11849141 Sep 13 09:20 test_?.mp3*

the char 'ä' (0xE4) and 'ü' (0xFC) is sown as a '?' in the file listing. please note that only the display is showing the '?' but the filename contains the corresponding hex value.

the following exception in subsonic happens after changing into the test folder:

Error
Subsonic encountered an internal error. You can report this error in the Subsonic Forum. Please include the information below.

Exception java.lang.NullPointerException
Message null
Java version Sun Microsystems Inc. 1.5.0_05
Operating system Linux 2.6.13-15.11-default
Tomcat home /data0/pkg/apache-tomcat-5.5.12
Stack trace java.lang.NullPointerException at net.sourceforge.subsonic.domain.MusicFile$MusicFileSorter.compare(MusicFile.java:569) at net.sourceforge.subsonic.domain.MusicFile$MusicFileSorter.compare(MusicFile.java:553) at java.util.Arrays.mergeSort(Arrays.java:1284) at java.util.Arrays.sort(Arrays.java:1223) at net.sourceforge.subsonic.domain.MusicFile.getChildren(MusicFile.java:252) at net.sourceforge.subsonic.controller.MainController.handleRequestInternal(MainController.java:31) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:796) at

...
please ask if you need more info.

regards,
dieter

PostPosted: Thu Sep 14, 2006 6:06 am
by sindre_mehus
Lovely! I'll try to reproduce.
Thanks, Sindre