[PATCH] 6822627: NPE at ReferenceTypeImpl.constantPool
Egor Ushakov
egor.ushakov at jetbrains.com
Wed Jul 20 09:10:04 UTC 2016
Serguei, thanks for the review!
Please sponsor the fix, I do not know how to proceed.
Thanks!
Egor
On 20.07.2016 10:36, serguei.spitsyn at oracle.com wrote:
> Hi Egor,
>
> Thank you for providing the test!
>
> A couple of nits to the test:
>
> 56 if (!Arrays.equals(cpbytes, cpbytes2)) {
> 57 failure("Consequent constantPool results vary, first was : " + cpbytes + ", now: " + cpbytes2);
> 58 };
> Last semicolon is not need.
> 74 if (!testFailed) {
> 75 println("ConstantPoolInfoGC: passed");
> 76 } else {
> 77 throw new Exception("ConstantPoolInfoGC: failed");
> 78 }
> I'd suggest to rearrange the statement above to something like this:
> 74 if (testFailed) {
> 75 throw new Exception("ConstantPoolInfoGC: failed");
> 76 }
> 77 println("ConstantPoolInfoGC: passed");
>
> But I leave it up to you. No need to see another webrev. I
> can sponsor your fix, if needed. Thanks, Serguei On 7/19/16 00:07,
> Egor Ushakov wrote:
>>
>> Hi Serguei,
>>
>> here's a new webrev with a test included:
>> http://cr.openjdk.java.net/~avu/JDK-6822627/webrev.01/
>>
>> Egor
>>
>> On 15.07.2016 12:22, serguei.spitsyn at oracle.com wrote:
>>> Hi Egor, The fix looks good modulo the synchronization issue. Do you
>>> have a jtreg unit test reproducing this failure mode? We have a rule
>>> to provide a test coverage for the fixes. Thanks, Serguei On 7/15/16
>>> 00:03, Egor Ushakov wrote:
>>>>
>>>> Thanks for your comments!
>>>>
>>>> I totally agree that the code there requires major refactoring. In
>>>> the fix I tried not to make it worse and fix the NPE.
>>>>
>>>> On 14.07.2016 20:06, Martin Buchholz wrote:
>>>>> The lack of volatile or synchronization, plus the use of multiple
>>>>> mutable fields, suggests that a deeper fix is necessary to be
>>>>> truly correct. For comparison, much of the similar code
>>>>> implementing reflection has been changed to use volatile. But
>>>>> that's a big job, for the serviceability team.
>>>>> On Thu, Jul 14, 2016 at 2:33 AM, Egor Ushakov
>>>>> <egor.ushakov at jetbrains.com <mailto:egor.ushakov at jetbrains.com>>
>>>>> wrote:
>>>>>
>>>>> Hi, I'm a developer from IDEA debugger (we have company OCA).
>>>>> We've increased usage of ReferenceTypeImpl.constantPool and
>>>>> now facing JDK-6822627 more often. Please review and sponsor
>>>>> the fix. The problem was that constantPoolBytesRef
>>>>> SoftReference value coud be GCed and there was no check for
>>>>> that. I've added it to the check inside getConstantPoolInfo to
>>>>> request the bytes again in this case. BUGURL:
>>>>> https://bugs.openjdk.java.net/browse/JDK-6822627 WEBREV:
>>>>> http://cr.openjdk.java.net/~avu/JDK-6822627/webrev.00/
>>>>> <http://cr.openjdk.java.net/%7Eavu/JDK-6822627/webrev.00/>
>>>>> Thanks!-- Egor Ushakov Software Developer JetBrains
>>>>> http://www.jetbrains.com The Drive to Develop
>>>>>
>>>> --
>>>> Egor Ushakov
>>>> Software Developer
>>>> JetBrains
>>>> http://www.jetbrains.com
>>>> The Drive to Develop
>> --
>> Egor Ushakov
>> Software Developer
>> JetBrains
>> http://www.jetbrains.com
>> The Drive to Develop
--
Egor Ushakov
Software Developer
JetBrains
http://www.jetbrains.com
The Drive to Develop
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20160720/e14ca3cf/attachment.html>
More information about the serviceability-dev
mailing list