In ObjArrayKlass::allocate_objArray_klass(), the Compile_lock is held when performing an allocation, which might need to blockingly wait for GC.
However, with concurrent class unloading, the GC needs to hold this lock during certain paths while unloading. That causes a deadlock.
However, with concurrent class unloading, the GC needs to hold this lock during certain paths while unloading. That causes a deadlock.