8157097: OptionsValidation/TestOptionsWithRanges.java crashes at CompactHashtableWriter::add during StringTable::copy_shared_string

Reviewed-by: dholmes, jiangli
This commit is contained in:
Robbin Ehn 2016-05-23 09:57:17 +02:00
parent 2096e37c4e
commit 4154a35318
2 changed files with 3 additions and 1 deletions
hotspot/src/share/vm/classfile

@ -38,6 +38,7 @@
CompactHashtableWriter::CompactHashtableWriter(int num_buckets,
CompactHashtableStats* stats) {
assert(DumpSharedSpaces, "dump-time only");
assert(num_buckets > 0, "no buckets");
_num_buckets = num_buckets;
_num_entries = 0;
_buckets = NEW_C_HEAP_ARRAY(GrowableArray<Entry>*, _num_buckets, mtSymbol);

@ -740,7 +740,8 @@ void StringTable::serialize(SerializeClosure* soc, GrowableArray<MemRegion> *str
} else {
int num_buckets = the_table()->number_of_entries() /
SharedSymbolTableBucketSize;
CompactStringTableWriter writer(num_buckets,
// calculation of num_buckets can result in zero buckets, we need at least one
CompactStringTableWriter writer(num_buckets > 1 ? num_buckets : 1,
&MetaspaceShared::stats()->string);
// Copy the interned strings into the "string space" within the java heap