Ok with me.

Thanks,
/Staffan

> On 4 mar 2015, at 18:41, Kevin Walls <kevin.wa...@oracle.com> wrote:
> 
> 
> Hi,
> 
> While this is in memory: I'd like to request review for an 8u backport.
> 
> The changeset imports cleanly into jdk8u/hs-dev/hotspot
> 
> Thanks
> Kevin
> 
> 
> On 04/03/2015 15:17, Staffan Larsen wrote:
>> 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