[wildfly-dev] issues with IBM JVM on Linux
Alexey Loubyansky
alexey.loubyansky at redhat.com
Fri Sep 25 09:08:35 EDT 2015
I've been trying to narrow down sporadic failures in the wfcore patching
tests on the IBM JVM on Linux (version info below) for the last few
days. I wanted to share this because what I see doesn't make sense to
me. And I am not sure whether other modules have similar issues.
So, in patching tests the (sporadic) problem appears when parsing XML
attributes. E.g. if there is an element with attributes 'name' and
'add-on', sometimes the value of name will end up containing the value
of add-on attribute. Here is the actual code for this (Attribute is an
enum) from org.jboss.as.patching.metadata.PatchXmlUtils:
String name = null;
boolean isAddOn = false;
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final String value = reader.getAttributeValue(i);
final Attribute attribute =
Attribute.forName(reader.getAttributeLocalName(i));
if(Attribute.NAME == attribute) {
name = value;
} else if (Attribute.ADD_ON == attribute) {
isAddOn = Boolean.valueOf(value);
} else {
throw unexpectedAttribute(reader, i);
}
}
So, sometimes the tests fail because the value of name is 'true',
apparently. This is just one example. It affects parsing attributes in
general in this class.
I noticed that if I do anything with variable 'value' in the loop (or
pass it as an argument to some method and actually do something with it
in that method), e.g. System.err.println("value=" + value); the problem
goes away.
Another workaround I've found is to inline the variable, i.e. use
reader.getAttributeValue(i) directly instead of using a variable.
By the "problem goes away" I mean that I haven't seen these kind of
failures anymore with the changes I mentioned. To give some statistics,
with the original code the tests would fail from 2 to 5 times out of 10
runs.
With the inlined variable value they pass 100%. I've be running them for
3 days now.
Here is the JVM info.
java version "1.8.0"
Java(TM) SE Runtime Environment (build pxi3280-20150129_02)
IBM J9 VM (build 2.8, JRE 1.8.0 Linux x86-32 20150116_231420 (JIT
enabled, AOT enabled)
J9VM - R28_Java8_GA_20150116_2030_B231420
JIT - tr.r14.java_20150109_82886.02
GC - R28_Java8_GA_20150116_2030_B231420
J9CL - 20150116_231420)
JCL - 20150123_01 based on Oracle jdk8u31-b12
Any ideas or suggestions?
Thanks,
Alexey
More information about the wildfly-dev
mailing list