RFR: 8025922 JNI access to Strings need to check if the value field is non-null
Staffan Larsen
staffan.larsen at oracle.com
Sat Oct 5 11:18:08 PDT 2013
On 4 okt 2013, at 16:23, Daniel D. Daugherty <daniel.daugherty at oracle.com> wrote:
> On 10/4/13 6:02 AM, Staffan Larsen wrote:
>> On 4 okt 2013, at 13:54, David Holmes <David.Holmes at oracle.com> wrote:
>>
>>> Hi Staffan,
>>>
>>> On 4/10/2013 9:23 PM, Staffan Larsen wrote:
>>>> If the String constructor has not completed, then we can't access the String value. It is still possible to do this from JNI, but it should not crash the VM.
>>>>
>>>> This was found while fixing a debugger issue (JDK-8021897) where stepping into the String constructor crashes the JVM. The fix for JDK-8021897 requires changes on the JDK side. Those changes will also include a JDI test for that issue, but won't be pushed until this change reaches jdk8-tl.
>>> Other than the debugger case is there any other case where these JNI calls can occur before the constructor has completed? At the moment I'm not sure if this is really a JNI problem or a debugger problem - surely there are many objects that the debugger may access partially initialized which might then lead to errors/crashes?
>> From JNI you can do AllocObject() and then GetStringLength() and it will cause the same crash. I'd love to include a test for this, but alas, our test harness does not support native code.
>>
>> /Staffan
>>
>
> That's not exactly true if you're talking about JavaTest/JTREG.
> You can add another native test and then we'll have another test
> that fails randomly on different Aurora test machines because
> of different tools on different machines. :-)
>
> Perhaps file an RFE that we should add a JNI test for this issue
> at "some point" in the future.
I just realized there is a way to do this: -XX:+ExecuteInternalVMTests. With that mechanism I can add a short test to the VM itself that exercises this code.
Filed: https://bugs.openjdk.java.net/browse/JDK-8025979
/Staffan
More information about the hotspot-runtime-dev
mailing list