Page 1 of 1

Broken images on status page

PostPosted: Fri Mar 22, 2013 7:26 pm
by DizkoDan
Hi,

Just setup MusicCabinet yesterday, and so far, I mostly love it! One thing that I haven't been able to figure out yet is why I'm getting broken images on the status page. All of the images there are broken for the statuschart & the 4 under users. I've tried different themes to see if that was the issue, but it always looks the same. Any ideas? Don't see anything interesting in the log.

Screen Shot 2013-03-22 at 3.22.26 PM.png

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 7:33 pm
by GJ51
Which browser? I've been noticing image anomalies in IE10 recently on Newegg that display images with rectangular random whitespace that doesn't show when I switch to Chrome.

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 8:03 pm
by DizkoDan
Chrome on OSX. I'll check it from windoze when I get home to see if there's any difference on other browsers.

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 8:13 pm
by shadow.8
Maybe check your musiccabinet.log file? You can find it's location by checking the "About" page under Bug Reports.

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:16 pm
by DizkoDan
Looks the same in any browser... As stated previously, there's nothing in the log when I load that page. Nothing in the subsonic.log either.

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:23 pm
by shadow.8
DizkoDan wrote:Looks the same in any browser... As stated previously, there's nothing in the log when I load that page. Nothing in the subsonic.log either.


The logs on the About page are from subsonic.log. There is a separate log, called musiccabinet.log, that you can look at specifically for Music Cabinet. For me, it is located at /tmp/musiccabinet.log whereas subsonic.log is located at /var/musiccabinet/subsonic.log.

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:25 pm
by DizkoDan
Right. Both logs contain no events when I load the status page.

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:31 pm
by hakko
Does it work if you try and view (yourhost:yourport)/userChart.view?type=stream ?

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:35 pm
by DizkoDan
Nope. Get a NullPointerException

Exception java.lang.NullPointerException
Message null
Java version Oracle Corporation 1.7.0_09-icedtea
Operating system Linux 2.6.32-042stab075.2
Server jetty/8.y.z-SNAPSHOT
Memory Used 46 of 94 MB
Stack trace java.lang.NullPointerException
at sun.awt.X11FontManager.getDefaultPlatformFont(X11FontManager.java:779)
at sun.font.SunFontManager$2.run(SunFontManager.java:432)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.(SunFontManager.java:375)
at sun.awt.X11FontManager.(X11FontManager.java:32)
at sun.reflect.GeneratedConstructorAccessor138.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:374)
at java.lang.Class.newInstance(Class.java:327)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:490)
at java.awt.Font.defaultLineMetrics(Font.java:2143)
at java.awt.Font.getLineMetrics(Font.java:2213)
at org.jfree.chart.axis.ValueAxis.findMaximumTickLabelHeight(ValueAxis.java:849)
at org.jfree.chart.axis.ValueAxis.reserveSpace(ValueAxis.java:789)
at org.jfree.chart.plot.CategoryPlot.calculateRangeAxisSpace(CategoryPlot.java:3092)
at org.jfree.chart.plot.CategoryPlot.calculateAxisSpace(CategoryPlot.java:3111)
at org.jfree.chart.plot.CategoryPlot.draw(CategoryPlot.java:3158)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1227)
at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1401)
at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1381)
at org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:183)
at org.jfree.chart.ChartUtilities.writeChartAsPNG(ChartUtilities.java:136)
at net.sourceforge.subsonic.controller.UserChartController.handleRequest(UserChartController.java:66)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:648)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at net.sourceforge.subsonic.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:47)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:54)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:559)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
at org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:670)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:722)

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:39 pm
by hakko
Are you running your subsonic.sh startup script with the option -Djava.awt.headless=true ?

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:43 pm
by DizkoDan
Looks like it.

java -Xmx256m -Dsubsonic.home=/var/subsonic -Dsubsonic.host=MYHOST -Dsubsonic.port=4040 -Dsubsonic.httpsPort=443 -Dsubsonic.contextPath=/ -Dsubsonic.defaultMusicFolder=/mp3z -Dsubsonic.defaultPodcastFolder=/var/music/Podcast -Dsubsonic.defaultPlaylistFolder=/var/playlists -Dsubsonic.war=subsonic-main.war -Djava.awt.headless=true -verbose:gc -jar subsonic-booter.jar

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 9:47 pm
by hakko
OK, now I'm just doing Google searches for your error message, but this seems pretty related to me: http://osdir.com/ml/jdk7-development-ja ... 00001.html

Do you happen to have the offical JDK installed or is the OpenJDK your only alternative?

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 10:06 pm
by DizkoDan
Looks like that was the issue. Just removed openjdk and used the oracle version, and i see the graphics now. I was trying to avoid oracle cuz I hate them ;)

Re: Broken images on status page

PostPosted: Fri Mar 22, 2013 10:14 pm
by hakko
Great! From the link, it sounds as if you can get it working on OpenJDK if you put some effort into it. I haven't tried myself, I was just trying to track down the error. (or basically find somebody else to blame)

Re: Broken images on status page

PostPosted: Mon Jan 02, 2017 7:03 am
by stefkoch
I also tried to figure out why i get the warning
Code: Select all
[2017-01-02 07:29:55,753] WARN CoverArtController - Failed to create thumbnail for Media file ...
java.lang.NullPointerException
        at sun.awt.X11FontManager.getDefaultPlatformFont(X11FontManager.java:779)


I am running subsonic 6.0 standalone (also with -Djava.awt.headless=true)
on a Synology NAS (dsm6, packages fontconfig and ttf-bitstream-vera ARE installed)

The link above suggests a wrong lib (platform version) installed, however that lib (libfreetype)
is not available/used at all on synology so I guess it does not apply

So while sticking to openjdk 7, i still have not found the solution.

Maybe you have an idea why
Code: Select all
net.sourceforge.subsonic.controller.CoverArtController$AutoCover.paintCover(CoverArtController.java:737)

wants to write a string and then use an X11 font for this... ?
It would be interesting what kind of String it would like to write there.... :?:

Well, here is the complete stacktrace:

Code: Select all
[2017-01-02 07:29:55,753] WARN CoverArtController - Failed to create thumbnail for Media file ...
java.lang.NullPointerException
        at sun.awt.X11FontManager.getDefaultPlatformFont(X11FontManager.java:779)
        at sun.font.SunFontManager$2.run(SunFontManager.java:433)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.SunFontManager.<init>(SunFontManager.java:376)
        at sun.awt.X11FontManager.<init>(X11FontManager.java:32)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at java.lang.Class.newInstance(Class.java:383)
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at java.awt.Font.getFont2D(Font.java:490)
        at java.awt.Font.access$000(Font.java:224)
        at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
        at sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
        at sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:634)
        at sun.java2d.SunGraphics2D.getFontInfo(SunGraphics2D.java:795)
        at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:50)
        at sun.java2d.pipe.ValidatePipe.drawString(ValidatePipe.java:165)
        at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2898)
        at net.sourceforge.subsonic.controller.CoverArtController$AutoCover.paintCover(CoverArtController.java:737)
        at net.sourceforge.subsonic.controller.CoverArtController$CoverArtRequest.createAutoCover(CoverArtController.java:423)
        at net.sourceforge.subsonic.controller.CoverArtController$CoverArtRequest.createImage(CoverArtController.java:416)
        at net.sourceforge.subsonic.controller.CoverArtController.getCachedImage(CoverArtController.java:263)
        at net.sourceforge.subsonic.controller.CoverArtController.handleRequest(CoverArtController.java:133)
        at net.sourceforge.subsonic.controller.CoverArtController.handleRequest(CoverArtController.java:106)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:715)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
        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:275)
        at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
        at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:47)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:59)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:313)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)
        at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:626)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)




I also checked the filesystem rights - they seem fine to me.

Any hints are appreciated.