RFR: 8015576: CMS: svc agent throws java.lang.RuntimeException: No type named "FreeList" in database

Kevin Walls kevin.walls at oracle.com
Tue Jul 9 08:57:18 UTC 2013


Thanks Vladimir -

Looks good to me.

The only question would have been if there's any benefit in getting both 
releases in sync and taking the full backport and creating 
AFLBinaryTreeDictionary in hs24.  There's time pressure on this at the 
minute as a tool (jmap) lies broken, so the simple fix you have seems 
appropriate (in hs24, vmStructs_cms.hpp still references 
BinaryTreeDictionary not AFLBinaryTreeDictionary).

There is some more history in email: 
http://mail.openjdk.java.net/pipermail/serviceability-dev/2013-January/008109.html

I added serviceability-dev on the cc too, we should encourage a further 
Review there.  Would be great to get this reviewed today and push ahead.

Thanks
Kevin



On 04/07/13 15:50, Vladimir Kempik wrote:
> Hi all,
>
> this change fixes an issue where we could not run jmap -heap on a
> java process running with -XX:+UseConcMarkSweepGC.
>
> Partially (1 line) it's a backport of 
> http://bugs.sun.com/view_bug.do?bug_id=8005278 from jdk8
>
> The problem originated from the following change in hotspot:
>  changeset    3294:9f059abe8cf2
>  parent       3284:3c91f2c9fd21
>  7131629: Generalize the CMS free list code
>
> --- 
> a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp 
> Fri Apr 20 17:13:36 2012 -0700
> +++ 
> b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp 
> Thu Mar 29 19:46:24 2012 -0700
> @@ -44,11 +44,11 @@
> nonstatic_field(FreeChunk, _next, FreeChunk*) \
> nonstatic_field(FreeChunk, _prev, FreeChunk*) \
> nonstatic_field(LinearAllocBlock, _word_size, size_t) \
> - nonstatic_field(FreeList, _size, size_t) \
> - nonstatic_field(FreeList, _count, ssize_t) \
> - nonstatic_field(BinaryTreeDictionary, _totalSize, size_t) \
> - nonstatic_field(CompactibleFreeListSpace, _dictionary, 
> FreeBlockDictionary*) \
> - nonstatic_field(CompactibleFreeListSpace, _indexedFreeList[0], 
> FreeList) \
> + nonstatic_field(FreeList<FreeChunk>, _size, size_t) \
> + nonstatic_field(FreeList<FreeChunk>, _count, ssize_t) \
> + nonstatic_field(BinaryTreeDictionary<FreeChunk>,_totalSize, size_t) \
> + nonstatic_field(CompactibleFreeListSpace, _dictionary, 
> FreeBlockDictionary<FreeChunk>*) \
> + nonstatic_field(CompactibleFreeListSpace, _indexedFreeList[0], 
> FreeList<FreeChunk>) \
> nonstatic_field(CompactibleFreeListSpace, _smallLinearAllocBlock, 
> LinearAllocBlock)
> @@ -70,13 +70,13 @@
> declare_toplevel_type(CompactibleFreeListSpace*) \
> declare_toplevel_type(CMSCollector*) \
> declare_toplevel_type(FreeChunk*) \
> - declare_toplevel_type(BinaryTreeDictionary*) \
> - declare_toplevel_type(FreeBlockDictionary*) \
> - declare_toplevel_type(FreeList*) \
> - declare_toplevel_type(FreeList) \
> + declare_toplevel_type(BinaryTreeDictionary<FreeChunk>*) \
> + declare_toplevel_type(FreeBlockDictionary<FreeChunk>*) \
> + declare_toplevel_type(FreeList<FreeChunk>*) \
> + declare_toplevel_type(FreeList<FreeChunk>) \
> declare_toplevel_type(LinearAllocBlock) \
> - declare_toplevel_type(FreeBlockDictionary) \
> - declare_type(BinaryTreeDictionary, FreeBlockDictionary)
> + declare_toplevel_type(FreeBlockDictionary<FreeChunk>) \
> + declare_type(BinaryTreeDictionary<FreeChunk>, 
> FreeBlockDictionary<FreeChunk>)
> #define VM_INT_CONSTANTS_CMS(declare_constant) \
> declare_constant(Generation::ConcurrentMarkSweep) \
>
>
> This fix updates the SA code to be like the hotspot code.
>
> Webrev: http://cr.openjdk.java.net/~mcherkas/vladimir/8015576/webrev.00/
>
> Testing:
> - JPRT
> - Running jmap -heap successfully on a java process using 
> -XX:+UseConcMarkSweepGC
>
> Thanks,
> Vladimir




More information about the hotspot-gc-dev mailing list