Looks good!

Thanks,
/Staffan

> On 4 mar 2015, at 15:14, Kevin Walls <kevin.wa...@oracle.com> wrote:
> 
> 
> Sure, I updated the webrev:
> 
> http://cr.openjdk.java.net/~kevinw/8073688/webrev.01/
> 
> Thanks
> Kevin
> 
> 
> On 04/03/2015 14:05, Staffan Larsen wrote:
>>> On 4 mar 2015, at 14:07, Kevin Walls <kevin.wa...@oracle.com> wrote:
>>> 
>>> 
>>> Hi Staffan --
>>> 
>>> staticness: I could have argued that either way, it doesn't need to be 
>>> static.  A static count of how many HotSpotTypeDataBase duplicate type 
>>> errors we have seen, or one count per HotSpotTypeDataBase?  Any doubt I 
>>> will make it per HotSpotTypeDatabase.  As I sometimes load multiple cores 
>>> in kjdb, or load them multiple times, I should be encouraging less 
>>> staticness in the SA overall: so yes let me remove that static! (updated 
>>> webrev in same location)
>> Thanks.
>> 
>>> 
>>> Well spotted on the structs loop: 8-)
>>> readVMTypes, readVMntConstants, readVMLongConstants may increase, or call 
>>> something could increase, the counter.
>>> readVMStructs does not.
>>> 
>>> These are four methods that are so similar you'd imagine they should get 
>>> merged into one method one day.  It seemed wrong to me to make the four 
>>> methods yet more different, by taking out the check on duplicateDefCount 
>>> for one of them.
>>> 
>>> Also, maybe readVMStructs should be checking for duplicates anyway, and 
>>> maybe one day it will.  I'm guessing it doesn't because it was harder in 
>>> that method compared to the others. 8-)
>>> 
>>> So I put it there for regularity, but if you think it's misleading I'll 
>>> take it out.
>> Yes, please take it out.
>> 
>> Thanks,
>> /Staffan
>> 
>>> In practice, as long as we have the duplicate check in readVMTypes(),  we 
>>> have the protection we need as this is called first.  It is highly unlikely 
>>> that would succeed and another of the methods would fail, the other checks 
>>> are just making the code consistent.
>>> 
>>> Thanks
>>> Kevin
>>> 
>>> 
>>> 
>>> On 04/03/2015 12:29, Staffan Larsen wrote:
>>>>> On 4 mar 2015, at 12:29, Kevin Walls <kevin.wa...@oracle.com> wrote:
>>>>> 
>>>>> Thanks Dmitry -
>>>>> 
>>>>> I will explain the counter's presence where we introduce it:
>>>>> 
>>>>>  // Counter to ensure read loops terminate:
>>>>>  private static final int MAX_DUPLICATE_DEFINITIONS = 100;
>>>>>  private static int duplicateDefCount = 0;
>>>> Should duplicateDefCount really be static?
>>>> 
>>>> For the use of duplicateDefCount on line 477 (readVMStructs()) I do not 
>>>> see where it is increased inside the loop? Can you clarify?
>>>> 
>>>> /Staffan
>>>> 
>>>>> Thanks
>>>>> Kevin
>>>>> 
>>>>> 
>>>>> On 03/03/2015 20:10, Dmitry Samersoff wrote:
>>>>>> Kevin,
>>>>>> 
>>>>>> The fix looks good for me, but please add a comment explaining the
>>>>>> problem we are solving here.
>>>>>> 
>>>>>> -Dmitry
>>>>>> 
>>>>>> On 2015-03-03 16:15, Kevin Walls wrote:
>>>>>>> Hi,
>>>>>>> 
>>>>>>> This is a review request for a way to make the SA tools protect
>>>>>>> themselves from infinite loops during initialisation.
>>>>>>> 
>>>>>>> Attaching jmap (for example) to a JVM can fail, infinitely writing an
>>>>>>> error - and filling a disk if being logged to a file.  This reproduces
>>>>>>> on a Solaris package based install, but not with other distribution
>>>>>>> bundles.  In those packages, there's a link JDK/jre/lib/sparc/libjvm ->
>>>>>>> client/libjvm.so.  If a server/libjvm.so is loaded and running, we see
>>>>>>> libverify.so pull in client/libjvm.so, as it finds the symlink in its
>>>>>>> $ORIGIN, in preference to finding the already loaded libjvm.so.
>>>>>>> 
>>>>>>> Symbol lookup in the SA is fooled by having multiple libjvm.so loaded.
>>>>>>> There are various things wrong with that.  Protection against zero
>>>>>>> strides through the type arrays and a maximum count for duplicated types
>>>>>>> will protect us from a few possible problems.
>>>>>>> 
>>>>>>> I'll also work a bug for the "install" repo where we create that
>>>>>>> symlink, but the tools need to protect themselves from this kind of
>>>>>>> problem.
>>>>>>> 
>>>>>>> Testing was manual.
>>>>>>> 
>>>>>>> bug
>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8073688
>>>>>>> 
>>>>>>> webrev
>>>>>>> http://cr.openjdk.java.net/~kevinw/8073688/webrev.00/
>>>>>>> 
>>>>>>> Thanks
>>>>>>> Kevin
> 

Reply via email to