JENKINS: Xvnc does not set the DISPLAY environment

https://issues.jenkins-ci.org/browse/JENKINS-3502


Since an update to version 1.6 and Hudson 1.299 the DISPLAY variable is not set
during the build process anymore.
We try to test a SWT application wich requires this env-var or refuses to start.
Below is first the SWT exception - with a cryptic error message but this means
not DISPLAY is found.
Below the trace are all system properties printed by Sytem.getProperties().list(...)

Exception in thread "main" org.eclipse.swt.SWTError: No more handles
[gtk_init_check() failed]
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source)
at org.eclipse.swt.widgets.Display.create(Unknown Source)
at org.eclipse.swt.graphics.Device.<init>(Unknown Source)
at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
at org.eclipse.swt.widgets.Display.getDefault(Unknown Source)
at de.willuhn.jameica.gui.GUI.getDisplay(GUI.java:748)
at de.willuhn.jameica.gui.SplashScreen.<init>(SplashScreen.java:69)
at
de.willuhn.jameica.system.ApplicationCallbackSWT.getStartupMonitor(ApplicationCallbackSWT.java:168)
at de.willuhn.jameica.system.Application.init(Application.java:96)
at de.willuhn.jameica.system.Application.newInstance(Application.java:86)
at de.willuhn.jameica.Main.main(Main.java:78)

System Properties:
– listing properties –
java.vendor=Sun Microsystems Inc.
JOB_NAME=c - jameica-update-server
PWD=/home/markusw/emedia-solutions-wolf.d...
localRepository=/home/markusw/.m2/repository
sun.java.launcher=SUN_STANDARD
sun.management.compiler=HotSpot Client Compiler
PATH=/home/markusw/bin:/usr/local/bin:/usr...
os.name=Linux
sun.boot.class.path=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/...
EXECUTOR_NUMBER=0
env.PWD=/home/markusw/emedia-solutions-wolf.d...
env.LANG=de_DE.UTF-8
java.vm.specification.vendor=Sun Microsystems Inc.
java.runtime.version=1.5.0_16-b02
LD_LIBRARY_PATH=/usr/lib/jvm/java-6-sun-1.6.0.10/jre/...
user.name=markusw
env._=/usr/bin/nohup
env.USER=markusw
env.SHELL=/bin/bash
env.NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat
env.PATH=/usr/lib/jvm/java-1.5.0-sun/bin:/home...
user.language=de
sun.boot.library.path=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/...
java.version=1.5.0_16
user.timezone=Europe/Berlin
sun.arch.data.model=32
TERM=xterm
NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat
java.endorsed.dirs=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/...
BUILD_ID=2009-04-16_08-18-23
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
file.encoding.pkg=sun.io
env.SHLVL=2
SHELL=/bin/bash
file.separator=/
env.SVN_REVISION=67
java.specification.name=Java Platform API Specification
java.class.version=49.0
user.country=DE
env.BUILD_NUMBER=66
java.home=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/jre
java.vm.info=mixed mode, sharing
env.LOGNAME=markusw
os.version=2.6.27-11-generic
env.HUDSON_COOKIE=42d394fc-8cfa-4a21-b1c0-3d6037b8425a
path.separator=:
java.vm.version=1.5.0_16-b02
env.LANGUAGE=de_DE:de:en_GB:en
env.JOB_NAME=c - jameica-update-server
SHLVL=2
_=/usr/bin/nohup
env.JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
java.awt.printerjob=sun.print.PSPrinterJob
env.TERM=xterm
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
sun.io.unicode.encoding=UnicodeLittle
LOGNAME=markusw
HOME=/home/markusw
env.HUDSON_URL=http://hudson.emedia-solutions-wolf.de/
env.BUILD_TAG=hudson-c - jameica-update-server-66
maven.interceptor=/home/markusw/.hudson/plugins/maven-p...
user.home=/home/markusw
BUILD_TAG=hudson-c - jameica-update-server-66
HUDSON_URL=http://hudson.emedia-solutions-wolf.de/
env.OLDPWD=/home/markusw/emedia-solutions-wolf.d...
java.specification.vendor=Sun Microsystems Inc.
CLASSPATH=
java.library.path=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/...
java.vendor.url=http://java.sun.com/
env.HUDSON_HOME=/home/markusw/.hudson
java.vm.vendor=Sun Microsystems Inc.
java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
maven.home=/usr/local/apache-maven-2.0.9
java.class.path=/home/markusw/.hudson/plugins/maven-p...
env.EXECUTOR_NUMBER=0
env.XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt
java.vm.specification.name=Java Virtual Machine Specification
PATH+JDK=/usr/lib/jvm/java-1.5.0-sun/bin
java.vm.specification.version=1.0
sun.os.patch.level=unknown
sun.cpu.endian=little
MAIL=/var/mail/markusw
env.HOME=/home/markusw
surefire.test.class.path=/home/markusw/.hudson/jobs/c - jameic...
java.io.tmpdir=/tmp
env.LD_LIBRARY_PATH=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/...
HUDSON_HOME=/home/markusw/.hudson
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
OLDPWD=/home/markusw/emedia-solutions-wolf.d...
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
os.arch=i386
java.ext.dirs=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/...
SVN_REVISION=67
user.dir=/home/markusw/.hudson/jobs/c - jameic...
env.BUILD_ID=2009-04-16_08-18-23
line.separator=

java.vm.name=Java HotSpot(TM) Client VM
BUILD_NUMBER=66
basedir=/home/markusw/.hudson/jobs/c - jameic...
file.encoding=UTF-8
env.MAIL=/var/mail/markusw
LANG=de_DE.UTF-8
env.WORKSPACE=/home/markusw/.hudson/jobs/c - jameic...
WORKSPACE=/home/markusw/.hudson/jobs/c - jameic...
java.specification.version=1.5
LANGUAGE=de_DE:de:en_GB:en
USER=markusw
XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt

Activity

knisterpeter knisterpeter added a comment - 2009/Apr/18 12:47 AM

When I create a simple job and output the 'env' cmd on the shell the DISPLAY is
set. But the strange thing in that is that during my test (surefire) all hudson
specific env-vars are set (like HUDSON_HOME, HUDSON_URL, ...) only the DISPLAY
is missing.

jglick Jesse Glick added a comment - 2009/Apr/20 4:37 PM

Confirmed, it does not work for native Maven jobs.

jglick Jesse Glick added a comment - 2009/Apr/20 4:51 PM

xvnc-1.5.hpi does not work in 1.301-SNAPSHOT either, so I guess the regression
is in Hudson core and/or Maven plugin.

scm_issue_link SCM/JIRA link daemon added a comment - 2009/Apr/20 5:44 PM

Code changed in hudson
User: : jglick
Path:
trunk/hudson/main/maven-plugin/src/main/java/hudson/maven/MavenBuild.java
trunk/hudson/main/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
http://fisheye4.cenqua.com/changelog/hudson/?cs=17323
Log:
[FIXED JENKINS-3502] Maven builds were not correctly using build wrappers.
Module set builds were running wrappers but ignoring any environment variables they tried to set.
Individual module builds (e.g. "Run in parallel" checked, or just click Build Now on a module) were ignoring wrappers altogether.
Either way, $DISPLAY was not being set when the XVNC plugin was used.
Note: there is a certain amount of code duplication in the various doRun implementations which could perhaps be factored out somewhere.

scm_issue_link SCM/JIRA link daemon added a comment - 2014/Oct/09 8:36 PM

Code changed in jenkins
User: Kohsuke Kawaguchi
Path:
src/main/java/hudson/maven/AbstractMavenBuild.java
src/main/java/hudson/maven/MavenModuleSetBuild.java
http://jenkins-ci.org/commit/maven-plugin/cab3151ea023536ab789f3b74a891f38144fe302
Log:
JENKINS-20884 Mutating 'envVars' returned from getEnvironment() creates a bad precedent.

It is better to just recompute the envVars, which will reflect all the added environments.

See: https://github.com/jenkinsci/maven-plugin/pull/14

Relevant conversation:

(11:31:53 AM) KostyaSha: kohsuke, while windows is eating your IO, could you advice with https://github.com/jenkinsci/maven-plugin/pull/14 ?
(11:34:27 AM) kohsuke: KostyaSha: the bug looks legit, but I'm not sure about the fix. Basically I agree with Jesse's comment
(11:35:35 AM) KostyaSha: kohsuke, this broken by design i think, it should be a good idea to share envvars for builders. This should also reduce .getEnvironments() calls
(11:36:33 AM) KostyaSha: kohsuke, is there any place where they maybe safely shared?
(11:37:03 AM) kohsuke: I'm afraid I don't understand the notion of "sharing envvars"
(11:37:35 AM) kohsuke: It gets computed from various things, and I thought EnvironmentContributingAction is a part of it
(11:38:44 AM) KostyaSha: kohsuke, yes, and they are stored in envvars variable, then job calls prebuilders that modifies EnvironmentContributingAction and then job calls maven build with not updated envvars content
(11:39:05 AM) kohsuke: then it should just call EnvVars envVars = getEnvironment(listener); again
(11:39:50 AM) KostyaSha: kohsuke, i not sure that there is no any specific changes with envvars after first getEnvironment(listener) call and before prebuilders
(11:40:30 AM) KostyaSha: i compared on my local instance and this should work, but i not sure... potentially some changes to envvars maybe lost...
(11:40:31 AM) kohsuke: Basically, one should never modify what Run.getEnvironment() returned
(11:40:51 AM) kohsuke: If the map returned is missing some desirable entries, then it should be fixing by having the getEnvironment() implementation add them
(11:41:11 AM) kohsuke: It looks to me that this change violates that idea
(11:42:02 AM) KostyaSha: i like idea of refreshing with simple call to getEnvironment(listener)
(11:42:03 AM) kohsuke: if environment-contributing subset of rootBuild.actions should be a part of the env vars, according to the above principle it should be done in the getEnvironment() method
(11:42:52 AM) kohsuke: (Also, let's not print out random stuff into "logger.println" that most users would not care
(11:43:02 AM) kohsuke: Those should be j.u.logging statements)
(11:43:28 AM) KostyaSha: kohsuke, yeah this logger not needed of course
(11:44:55 AM) KostyaSha: kohsuke, https://github.com/zygm0nt/maven-plugin/blob/master/src/main/java/hudson/maven/MavenModuleSetBuild.java#L648 what this part do?
(11:45:44 AM) kohsuke: That looks wrong to me, too, for the same reason
(11:45:49 AM) kohsuke: All right, you convinced me to open this in IDE
(11:46:03 AM) kohsuke: Screw the preparation for the meeting
(11:47:29 AM) kohsuke: Wow, that line has jglick fixing HUDSON-3502
(11:47:31 AM) jenkins-admin: JENKINS-3502:Xvnc does not set the DISPLAY environment (Closed) https://issues.jenkins-ci.org/browse/JENKINS-3502
(11:48:06 AM) KostyaSha: 0_o
(11:48:17 AM) kohsuke: From 2009
(11:49:34 AM) KostyaSha: kohsuke, and the next block is also added for resolving variables
(11:49:42 AM) kohsuke: Yep
(11:50:28 AM) KostyaSha: so after every step we need recalculate changes... so easy to allow do direct modifications of envvars i think


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值