StringBuilder.append抛出ArrayStoreException

时间:2015-09-04 02:00:57

标签: java

我们有一些代码执行var1 +“\ t”+ var2 ...其中var1和var2的类型为String,但它产生以下堆栈跟踪:

Caused by: java.lang.ArrayStoreException
       at java.lang.String.getChars(String.java:814) [rt.jar:1.8.0_40]
       at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:422) [rt.jar:1.8.0_40]
       at java.lang.StringBuilder.append(StringBuilder.java:136) [rt.jar:1.8.0_40]

此处的操作系统是带有Oracle Java 1.8.0_40的CentOS 6.6

这怎么可能? String.getChars正在执行System.arraycopy(...)并传递src和tgt vars类型为char []

我唯一可以在网上找到远程接近这个问题的是从2013年开始的“Firefox for Android”https://bugzilla.mozilla.org/show_bug.cgi?id=861660的错误报告,没有后续跟踪。

这是触发调用的实际代码行 StringBuilder.append:

bw.write(
  id + "\t" + effectiveTime + "\t" + active + "\t" 
  + moduleId + "\t" + lhsId + "\t" + rhsId + "\t" 
  + roleGroup + "\t" + roleId + "\t" 
  + inferredTypeId + "\t" + someId); 

这里的所有变量都是String类型,而bw是BufferedWriter(不是我希望这一点)。此外,系统中此时没有线程可以说。不幸的是,我们无法在我们的测试中复制错误,只能复制我们客户的错误。

0 个答案:

没有答案