Skip to content

Commit e9ba653

Browse files
author
‘niuerzhuang’
committed
fix: agent deadlock.
1 parent 622917d commit e9ba653

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

dongtai-core/src/main/java/io/dongtai/iast/core/bytecode/IastClassFileTransformer.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ public static IastClassFileTransformer getInstance(Instrumentation inst, PolicyM
6262
return INSTANCE;
6363
}
6464

65+
public static IastClassFileTransformer getInstance() {
66+
if (null != INSTANCE) {
67+
return INSTANCE;
68+
}
69+
return null;
70+
}
71+
6572
IastClassFileTransformer(Instrumentation inst, PolicyManager policyManager) {
6673
this.inst = inst;
6774
this.isDumpClass = EngineManager.getInstance().isEnableDumpClass();
@@ -192,11 +199,9 @@ public byte[] transform(final ClassLoader loader,
192199
transformMap.put(classBeingRedefined, srcByteCodeArray);
193200
}
194201
transformCount++;
195-
classDiagram.setLoader(null);
196202
return dumpClassIfNecessary(cr.getClassName(), cw.toByteArray(), srcByteCodeArray);
197203
}
198204
}
199-
classDiagram.setLoader(null);
200205
} catch (Throwable throwable) {
201206
DongTaiLog.warn(ErrorCode.get("TRANSFORM_CLASS_FAILED"), internalClassName, throwable);
202207
} finally {
@@ -356,5 +361,9 @@ public void reTransform() {
356361
public static HashMap<Object, byte[]> getTransformMap() {
357362
return transformMap;
358363
}
364+
365+
public IastClassDiagram getClassDiagram() {
366+
return classDiagram;
367+
}
359368
}
360369

dongtai-core/src/main/java/io/dongtai/iast/core/init/impl/TransformEngine.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ public void destroy() {
7373
DongTaiLog.error(ErrorCode.get("TRANSFORM_ENGINE_DESTROY_REDEFINE_CLASSES_FAILED"), e);
7474
}
7575
}
76+
if (IastClassFileTransformer.getInstance() != null) {
77+
IastClassFileTransformer.getInstance().getClassDiagram().setLoader(null);
78+
}
7679
inst = null;
7780
classFileTransformer = null;
7881
}

0 commit comments

Comments
 (0)