Jenkins抛出java.lang.StackOverflowError —不仅在藏书中

问题描述 投票:2回答:1

[2019年7月31日更新该错误有时在取消存储调用之前发生,但始终在同一服务器上。为了查看问题是否是由于在需要覆盖文件的目录中进行隐藏操作而导致的,我清理了目录-但问题仍然存在。这次输出开始(抄写,任何错别字都是我的错):

Running on my_agent in C:/Jenkins/workspace/script_name
. . .
Running in D:\mydir
[Pipeline] {
[Pipeline] bat
[mydir] Running batch script
D:\mydir> dir .
<output of dir command>
[Pipeline] End of Pipeline
java.lang.StackOverflowError
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:115)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:778)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
etc.

它没有到达unstash调用,但是仍然出现相同的错误。= = = = =在Windows 10上的Jenkins中取消隐藏时获取java.lang.StackOverflowError;在一台服务器上发生,但不在另一台服务器上。似乎未隐藏的对象正在无限递归。

  • 隐藏和隐藏的名称相同吗? -是的;使用相同的功能来释放它们。
  • 重新启动Jenkins主服务器和从服务器-是。
  • 磁盘上有足够的空间可释放? -是的。
  • 关于此错误的网络搜索-是的,但此问题未得到解决。
  • 过去有此功能吗? -是的,unstash正在一台服务器上工作,而在另一台服务器上却没有。
  • 目标目录是否干净? -是的。
  • 在不同时间尝试过? -是的。
def stash_my_stuff() {
    stash includes: '**', name: 'my_stash'
}
def unstash_my_stuff() {
    unstash 'my_stash'
}

// on one agent
dir("d:\\tmsc") { unstash_my_stuff() }

// later on a different agent
dir("d:\\tmsc") { unstash_my_stuff() }
13:23:33 Running in D:\tmsc
[Pipeline] {
[Pipeline] unstash
[Pipeline] }
[Pipeline] // dir
[Pipeline] dir
13:24:01 Running in D:\tmsc
[Pipeline] {
[Pipeline] End of Pipeline
java.lang.StackOverflowError
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:111)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
    at org.jboss.marshalling.river.RiverMarshaller.doSerializableObject(RiverMarshaller.java:988)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:778)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
    at org.jboss.marshalling.river.RiverMarshaller.doSerializableObject(RiverMarshaller.java:988)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
etc., etc., etc.
sometimes it also includes
    at org.jboss.marshalling.river.RiverMarshaller.doSerializableObject(RiverMarshaller.java:967)
jenkins jenkins-pipeline stack-overflow
1个回答
0
投票

使用并行阶段时,我遇到了类似的问题。

我已经找到bug reportcomment之一(在下一条评论中得到好评)推荐此:

我也遇到了这个问题。我在Windows上使用Jenkins使用安装程序安装。经过一番挖掘,我意识到Jenkins的此发行版随附了32位版本的JRE,Windows服务(使用jenkins.xml文件)。这严重限制了堆内存的数量。JVM可以分配。如果您在相同情况下也遇到此问题,修改jenkins.xml以使用其他64位版本的JRE,以及增加最大堆分配(例如-Xmx1024m)。

我还没有尝试过(我对Jenkins的服务器没有适当的访问权,但是当我这样做时,我会更新answear。

© www.soinside.com 2019 - 2024. All rights reserved.