diff -rauN hotspot-jdk-9.0.4+12/src/share/vm/utilities/bitMap.cpp hotspot-jdk-9.0.4+12-bitmap-segv-patch/src/share/vm/utilities/bitMap.cpp
--- hotspot-jdk-9.0.4+12/src/share/vm/utilities/bitMap.cpp	2018-01-22 16:19:02.000000000 +0100
+++ hotspot-jdk-9.0.4+12-bitmap-segv-patch/src/share/vm/utilities/bitMap.cpp	2021-05-16 16:22:06.049850445 +0200
@@ -78,8 +78,10 @@
   if (new_size_in_words > 0) {
     map = allocator.allocate(new_size_in_words);
 
-    Copy::disjoint_words((HeapWord*)old_map, (HeapWord*) map,
-                         MIN2(old_size_in_words, new_size_in_words));
+    if (old_map != NULL) {
+      Copy::disjoint_words((HeapWord*)old_map, (HeapWord*) map,
+                           MIN2(old_size_in_words, new_size_in_words));
+    }
 
     if (new_size_in_words > old_size_in_words) {
       clear_range_of_words(map, old_size_in_words, new_size_in_words);
@@ -543,7 +545,9 @@
   bm_word_t* dest_map = map();
   const bm_word_t* other_map = other.map();
   idx_t copy_words = word_index(size());
-  Copy::disjoint_words((HeapWord*)other_map, (HeapWord*)dest_map, copy_words);
+  if (other_map != NULL) {
+    Copy::disjoint_words((HeapWord*)other_map, (HeapWord*)dest_map, copy_words);
+  }
   idx_t rest = bit_in_word(size());
   if (rest > 0) {
     dest_map[copy_words] = merge_tail_of_map(other_map[copy_words],