mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
fix AbstractTraceAdviceListener may throw ArrayIndexOutOfBoundsException problem. #1712
This commit is contained in:
+6
-1
@@ -63,7 +63,12 @@ public class AbstractTraceAdviceListener extends AdviceListenerAdapter {
|
||||
@Override
|
||||
public void afterThrowing(ClassLoader loader, Class<?> clazz, ArthasMethod method, Object target, Object[] args,
|
||||
Throwable throwable) throws Throwable {
|
||||
int lineNumber = throwable.getStackTrace()[0].getLineNumber();
|
||||
int lineNumber = -1;
|
||||
StackTraceElement[] stackTrace = throwable.getStackTrace();
|
||||
if (stackTrace.length != 0) {
|
||||
lineNumber = stackTrace[0].getLineNumber();
|
||||
}
|
||||
|
||||
threadLocalTraceEntity(loader).tree.end(throwable, lineNumber);
|
||||
final Advice advice = Advice.newForAfterThrowing(loader, clazz, method, target, args, throwable);
|
||||
finishing(loader, advice);
|
||||
|
||||
@@ -208,8 +208,7 @@ abstract public class ThreadUtil {
|
||||
}
|
||||
sb.append('\n');
|
||||
int i = 0;
|
||||
for (; i < threadInfo.getStackTrace().length; i++) {
|
||||
StackTraceElement ste = threadInfo.getStackTrace()[i];
|
||||
for (StackTraceElement ste : threadInfo.getStackTrace()) {
|
||||
sb.append("\tat ").append(ste.toString());
|
||||
sb.append('\n');
|
||||
if (i == 0 && threadInfo.getLockInfo() != null) {
|
||||
@@ -242,6 +241,7 @@ abstract public class ThreadUtil {
|
||||
sb.append('\n');
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
if (i < threadInfo.getStackTrace().length) {
|
||||
sb.append("\t...");
|
||||
|
||||
Reference in New Issue
Block a user