8194990: 3 Null pointer dereference defect groups related to CodeCache::find_blob_unsafe()
authordlong
Wed, 31 Jan 2018 16:10:23 -0800
changeset 48858 e50e326a2bfc
parent 48857 23a07b0cf8a6
child 48859 5a4d08efbad9
8194990: 3 Null pointer dereference defect groups related to CodeCache::find_blob_unsafe() Reviewed-by: kvn
src/hotspot/share/code/compiledIC.cpp
src/hotspot/share/code/nmethod.cpp
--- a/src/hotspot/share/code/compiledIC.cpp	Wed Jan 31 16:09:52 2018 -0800
+++ b/src/hotspot/share/code/compiledIC.cpp	Wed Jan 31 16:10:23 2018 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -417,7 +417,7 @@
     bool static_bound = info.is_optimized() || (info.cached_metadata() == NULL);
 #ifdef ASSERT
     CodeBlob* cb = CodeCache::find_blob_unsafe(info.entry());
-    assert (cb->is_compiled(), "must be compiled!");
+    assert (cb != NULL && cb->is_compiled(), "must be compiled!");
 #endif /* ASSERT */
 
     // This is MT safe if we come from a clean-cache and go through a
--- a/src/hotspot/share/code/nmethod.cpp	Wed Jan 31 16:09:52 2018 -0800
+++ b/src/hotspot/share/code/nmethod.cpp	Wed Jan 31 16:10:23 2018 -0800
@@ -955,6 +955,7 @@
         CompiledIC *ic = CompiledIC_at(&iter);
         // Ok, to lookup references to zombies here
         CodeBlob *cb = CodeCache::find_blob_unsafe(ic->ic_destination());
+        assert(cb != NULL, "destination not in CodeBlob?");
         nmethod* nm = cb->as_nmethod_or_null();
         if( nm != NULL ) {
           // Verify that inline caches pointing to both zombie and not_entrant methods are clean
@@ -967,6 +968,7 @@
       case relocInfo::static_call_type: {
         CompiledStaticCall *csc = compiledStaticCall_at(iter.reloc());
         CodeBlob *cb = CodeCache::find_blob_unsafe(csc->destination());
+        assert(cb != NULL, "destination not in CodeBlob?");
         nmethod* nm = cb->as_nmethod_or_null();
         if( nm != NULL ) {
           // Verify that inline caches pointing to both zombie and not_entrant methods are clean
@@ -2732,7 +2734,7 @@
 
   virtual void verify_resolve_call(address dest) const {
     CodeBlob* db = CodeCache::find_blob_unsafe(dest);
-    assert(!db->is_adapter_blob(), "must use stub!");
+    assert(db != NULL && !db->is_adapter_blob(), "must use stub!");
   }
 
   virtual bool is_call_to_interpreted(address dest) const {