Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-82

Viewing unit test results causes Tomcat termination

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • core
    • None
    • Platform: All, OS: All

      My tomcat works without X11.

      When I added an ability to view unit test results in Hudson, I was getting
      Tomcat termination, with no clear indication what's wrong.

      It turned out that since JFree chart triggers some AWT activity, and since I
      don't have working X11, java was terminating, which is not good.

      The solution that I have now is to start Tomcat with -Djava.awt.headless=true,
      but maybe there is a way to do something in Hudson to eliminate this issue
      altogether.

          [JENKINS-82] Viewing unit test results causes Tomcat termination

          Apparently this is a problem that happens when a machine doesn't have X
          libraries installed. For example, I run my Hudson without the DISPLAY variable
          set, but it still works. See

          http://www.mail-archive.com/tomcat-user@jakarta.apache.org/msg159825.html

          Let's see what can be done in the program to work around this.

          Kohsuke Kawaguchi added a comment - Apparently this is a problem that happens when a machine doesn't have X libraries installed. For example, I run my Hudson without the DISPLAY variable set, but it still works. See http://www.mail-archive.com/tomcat-user@jakarta.apache.org/msg159825.html Let's see what can be done in the program to work around this.

          vsizikov added a comment -

          I checked with Java2D folks, they said that no extra X11 libs needed (and, in my
          case, I have all the X11 libs, I just don't start X11 server).

          Just in case, here is a stack trace:
          java.lang.reflect.InvocationTargetException
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at
          sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at
          sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:585)
          at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:50)
          at org.kohsuke.stapler.Stapler$6.doDispatch(Stapler.java:393)
          at
          org.kohsuke.stapler.Stapler$NameBasedDispatcher.dispatch(Stapler.java:315)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:214)
          at org.kohsuke.stapler.Stapler.access$100(Stapler.java:42)
          at org.kohsuke.stapler.Stapler$4.doDispatch(Stapler.java:370)
          at
          org.kohsuke.stapler.Stapler$NameBasedDispatcher.dispatch(Stapler.java:315)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:214)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:172)
          at org.kohsuke.stapler.Stapler.service(Stapler.java:77)
          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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
          at
          org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
          at
          org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
          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(Thread.java:595)
          Caused by: java.lang.InternalError: Can't connect to X11 window server using
          'server.domain' as the value of the DISPLAY variable.
          at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
          at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53)
          at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142)
          at java.security.AccessController.doPrivileged(Native Method)
          at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Class.java:164)
          at
          java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
          at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:96)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Class.java:164)
          at java.awt.Toolkit$2.run(Toolkit.java:821)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:804)
          at javax.swing.UIManager.initialize(UIManager.java:1262)
          at javax.swing.UIManager.maybeInitialize(UIManager.java:1245)
          at javax.swing.UIManager.getDefaults(UIManager.java:556)
          at javax.swing.UIManager.getColor(UIManager.java:590)
          at org.jfree.chart.JFreeChart.<clinit>(JFreeChart.java:237)
          at
          org.jfree.chart.ChartFactory.createStackedAreaChart(ChartFactory.java:956)
          at
          hudson.tasks.junit.TestResultAction.createChart(TestResultAction.java:218)
          at hudson.tasks.junit.TestResultAction.doGraph(TestResultAction.java:209)
          at hudson.model.Project.doTestResultTrend(Project.java:549)

          vsizikov added a comment - I checked with Java2D folks, they said that no extra X11 libs needed (and, in my case, I have all the X11 libs, I just don't start X11 server). Just in case, here is a stack trace: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:50) at org.kohsuke.stapler.Stapler$6.doDispatch(Stapler.java:393) at org.kohsuke.stapler.Stapler$NameBasedDispatcher.dispatch(Stapler.java:315) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:214) at org.kohsuke.stapler.Stapler.access$100(Stapler.java:42) at org.kohsuke.stapler.Stapler$4.doDispatch(Stapler.java:370) at org.kohsuke.stapler.Stapler$NameBasedDispatcher.dispatch(Stapler.java:315) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:214) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:172) at org.kohsuke.stapler.Stapler.service(Stapler.java:77) 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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) 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(Thread.java:595) Caused by: java.lang.InternalError: Can't connect to X11 window server using 'server.domain' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53) at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68) at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:96) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at java.awt.Toolkit$2.run(Toolkit.java:821) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:804) at javax.swing.UIManager.initialize(UIManager.java:1262) at javax.swing.UIManager.maybeInitialize(UIManager.java:1245) at javax.swing.UIManager.getDefaults(UIManager.java:556) at javax.swing.UIManager.getColor(UIManager.java:590) at org.jfree.chart.JFreeChart.<clinit>(JFreeChart.java:237) at org.jfree.chart.ChartFactory.createStackedAreaChart(ChartFactory.java:956) at hudson.tasks.junit.TestResultAction.createChart(TestResultAction.java:218) at hudson.tasks.junit.TestResultAction.doGraph(TestResultAction.java:209) at hudson.model.Project.doTestResultTrend(Project.java:549)

          See the relevant discussion at http://jira.atlassian.com/browse/CONF-1737

          It seems like the best we can do is to produce a nice error messaeg suggesting
          for a solution.

          Kohsuke Kawaguchi added a comment - See the relevant discussion at http://jira.atlassian.com/browse/CONF-1737 It seems like the best we can do is to produce a nice error messaeg suggesting for a solution.

          Modified to generate an error message.

          Kohsuke Kawaguchi added a comment - Modified to generate an error message.

            Unassigned Unassigned
            vsizikov vsizikov
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: