用户注销节点时,Jenkins构建失败

时间:2012-05-10 16:30:30

标签: c++ windows visual-studio-2008 jenkins

有时,Jenkins(1.461)完成的构建将停在中间某个位置的随机位置。这些构建是对Visual Studio 2008 SP1的devenv.com的主要C ++代码的手动脚本调用。 Visual Studio不会发出错误消息; devenv日志中的最后一条消息是正在构建的一些随机文件。由于构建后的Windows批处理命令依赖于某些构建输出,因此Jenkins构建失败。这很少发生(大约15个版本中的1个)。 Jenkins的错误日志在构建失败的时候没有显示任何异常。令人惊讶的是,它表示构建成功,即使它在其他地方都显示为失败。

问题与詹金斯有关。在开发人员的桌面上运行的相同构建脚本从未以这种方式失败。

Jenkins节点是32位Windows XP计算机。它们都有足够的可用磁盘空间。 Jenkins配置为每个节点一次只运行一个作业。事件日志显示在构建停止时没有发生明显不好的事情(例如,Visual Studio崩溃)。

有没有人有任何想法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

我不记得曾经和jenkins一起遇到这个问题,但我在MSVC 2008中经常发生链接器崩溃。这种情况几乎每天都会发生。如果它是链接器崩溃那么这可能是一个解释。(可能没有记录链接器崩溃?)

编辑: 我们在32位Win7上使用MSVC2008 SP1。 我们在构建c ++解决方案时使用MSBuild 3.5。

答案 1 :(得分:0)

我们最终将随机构建失败与Jenkins节点上的注销事件相关联。这导致了这个JVM bug/feature(Oracle Java错误ID 6871190),其中Windows中的注销事件导致信号处理程序终止JVM。您可以通过将-Xrs选项传递给JVM来禁用此行为(可能还有其他缺点),但该选项不会自动传播到子Java进程。

我们正在通过-Xrs来启动Jenkins本身,并且Jenkins服务本身通过注销生效。目前的假设是,Jenkins的构建过程的某些部分是通过另一个未使用-Xrs调用的Java子进程启动的。