Request for review (S): add the JRE name to the error log
Christian Thalinger
christian.thalinger at oracle.com
Wed Jun 13 16:06:58 PDT 2012
On Jun 13, 2012, at 2:37 PM, Coleen Phillimore wrote:
>
> Kris,
>
> I'm sorry I didn't comment on this earlier. This looks fantastic. I tried to do this but didn't know how and had settled on the not-very-good version line in vmError that you improved. Thanks!!
Coleen, will you sponsor this change or should I do it?
-- Chris
> Coleen
>
> On 6/13/2012 5:12 PM, Christian Thalinger wrote:
>>
>> Does anyone from runtime have an opinion on this one?
>>
>> -- Chris
>>
>> On May 16, 2012, at 1:26 PM, Christian Thalinger wrote:
>>
>>>
>>> On May 16, 2012, at 12:44 PM, Krystal Mok wrote:
>>>
>>>> Hi all,
>>>>
>>>> Could I get some review for this change, please?
>>>> https://gist.github.com/2709918#file_jre_name.patch
>>>> I'm considering this as an initial draft version, and will improve it later on
>>>> based on comments received.
>>>>
>>>> Background:
>>>>
>>>> An earlier case on hotspot-dev [1][2] seemed to have hit a bug caused by mix-
>>>> matching an Oracle JRE with a OpenJDK-based HotSpot VM.
>>>>
>>>> Chris suggested [3] that, to better aid future analysis of similar problems,
>>>> it's useful to print the JRE name in the error log, in addition to the JRE
>>>> version as printed currently. This patch implements Chris' suggestion.
>>>>
>>>> An example of the effect of this patch is avaiable [4].
>>>>
>>>> There are a few details that I'm not too sure about yet, and I'm looking for
>>>> comments on them:
>>>>
>>>> 1. How and when should I get the JRE name?
>>>>
>>>> The JRE name is only exposed as a field of a Java-level class, namely the
>>>> "java_runtime_name" constant field in sun.misc.Version. I couldn't find it
>>>> exposed anywhere else. It is set into the Java-level system properties, by the
>>>> key "java.runtime.name", but that's not immediately available to the VM side.
>>>>
>>>> In my patch, I'm fetching the JRE name from sun.misc.Version.java_runtime_name
>>>> immediately after java.lang.System.initializeSystemClass() is invoked, and then
>>>> storing it in a static field in JDK_Version. This is safer to do then fetching
>>>> the name during error reporting, because it may be unreliable to access Java
>>>> heap contents when the VM is crashing.
>>>>
>>>> There are other alternatives that I've thought about. One is adding a new
>>>> private interface between JDK/JVM that would allow the JDK to expose its name
>>>> to the VM directly, perhaps with a new function JDK_GetName0(). But this is
>>>> more involved then the proposed change.
>>>>
>>>> 2. Where should I store the JRE name?
>>>>
>>>> As mentioned, I'm storing it in a newly added static field in JDK_Version right
>>>> now. But I'm not sure if this is the place it belongs. Universe doesn't seem
>>>> like the right place, neither.
>>>>
>>>> Any suggestions or comments are welcomed.
>>>
>>> I looked at the changes and I think this is the right way to implement it. It will definitely help debugging some strange crashes like the one mentioned.
>>>
>>> -- Chris
>>>
>>>>
>>>> Should I cc serviceability-dev as well?
>>>>
>>>> Regards,
>>>> Kris
>>>>
>>>> [1]: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2012-May/007647.html
>>>> [2]: http://mail.openjdk.java.net/pipermail/hotspot-dev/2012-May/005711.html
>>>> [3]: http://mail.openjdk.java.net/pipermail/hotspot-dev/2012-May/005725.html
>>>> [4]: https://gist.github.com/2709918
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20120613/d9558ac7/attachment-0001.html
More information about the hotspot-runtime-dev
mailing list