JDK-6933269 : TextStreamReader isValueAvailable() returns unexpectedly false when inlining is used.
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6u18
  • Priority: P3
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: solaris_10
  • CPU: sparc
  • Submitted: 2010-03-09
  • Updated: 2011-02-16
  • Resolved: 2011-01-11
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6-poolResolved
Related Reports
Relates :  
Relates :  
Relates :  
Description
The bug occurs when their code CdrDeserializer.deserialize(...) first
instantiates a private TextStreamReader, setting its value to a non-empty string and then invoking isValueAvailable() on the reader. On some occasions, isValueAvailable() returns unexpectedly false. From their review of the code, this may only happen if the String cdrRecord has a length of 0 or starts with the character _elementDelimiter.
Both is *not* the case (as they see in the trace output whenever isValueAvailable() returns false). The problem is also reproducable when they synchronize CdrDeserializer.deserialize(...) (which is the only method accessing the private variable _reader).
With the additional JVM option -XX:-Inline, they can *not* reproduce this bug.

The snippets of relevant code are attached, along with the log files from -XX:UnlockDiagnoisticVMOptions -XX:LogCompilation.

Please see the attachments for the code, and the log files.
/net/cores.uk/export/calls/72541972/
Also has a copy of the attachments.