From aac595241242eda0e69b9aeb71cfe31f60e95d91 Mon Sep 17 00:00:00 2001 From: "seokgil.kang" Date: Wed, 17 Dec 2014 18:06:21 +0900 Subject: [PATCH] Summary : modify the criteria to make the group data - If the call stack list is null, group data key is made by caller pc address. Change-Id: I55b68a5d5cba6ae9cbe4a6dba9661f7a5e38f79f Signed-off-by: seokgil.kang --- .../ui/summary/leaks/LeakDataBundle.java | 69 +++++++++++++++------- 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDataBundle.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDataBundle.java index 762cc37..f9fac69 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDataBundle.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDataBundle.java @@ -117,7 +117,7 @@ public class LeakDataBundle { /* remove leak data */ LeakData data = leakDataHashMap.remove(Long.valueOf(allocatedAddress)); if (data == null) { - // TOOD : remove when support the running process + // TODO : remove when support the running process Logger.debug("LeakData is null !!"); return; } @@ -259,7 +259,6 @@ public class LeakDataBundle { String callStack = String.valueOf(""); for (Long address : addrs) callStack += String.valueOf(address); - return callStack.hashCode(); } @@ -268,9 +267,15 @@ public class LeakDataBundle { List callStackList = AnalyzerManager.getCallstackManager() .getCallstackAddrListFromSeq(log.getSeq()); if (callStackList == null) { - // TODO : error case - Logger.error("Call Stack List is null!!"); - return; + // if call stack list is null, group data key is made by caller pc address. + Logger.debug("Call Stack List is null!!"); + callStackList = new ArrayList(); + callStackList.add(((MemoryData) log).getCallerPcAddr()); + } else { + if (callStackList.size() == 1 && callStackList.get(0) == 0) { + callStackList = new ArrayList(); + callStackList.add(((MemoryData) log).getCallerPcAddr()); + } } int key = makeGroupDataKey(callStackList); @@ -290,9 +295,15 @@ public class LeakDataBundle { List callStackList = AnalyzerManager.getCallstackManager() .getCallstackAddrListFromSeq(leakData.getSequenceNumber()); if (callStackList == null) { - // TODO : error case - Logger.error("Call Stack List is null!!"); - return; + // if call stack list is null, group data key is made by caller pc address. + Logger.debug("Call Stack List is null!!"); + callStackList = new ArrayList(); + callStackList.add(leakData.getCallerPCAddress()); + } else { + if (callStackList.size() == 1 && callStackList.get(0) == 0) { + callStackList = new ArrayList(); + callStackList.add(leakData.getCallerPCAddress()); + } } int key = makeGroupDataKey(callStackList); @@ -315,9 +326,15 @@ public class LeakDataBundle { List callStackList = AnalyzerManager.getCallstackManager() .getCallstackAddrListFromSeq(leakData.getSequenceNumber()); if (callStackList == null) { - // TODO : error case - Logger.error("Call Stack List is null!!"); - return; + // if call stack list is null, group data key is made by caller pc address. + Logger.debug("Call Stack List is null!!"); + callStackList = new ArrayList(); + callStackList.add(leakData.getCallerPCAddress()); + } else { + if (callStackList.size() == 1 && callStackList.get(0) == 0) { + callStackList = new ArrayList(); + callStackList.add(leakData.getCallerPCAddress()); + } } int key = makeGroupDataKey(callStackList); @@ -343,9 +360,15 @@ public class LeakDataBundle { .getCallstackAddrListFromSeq( rs.getLong(MemoryAllocationDBTable.COLUMN.SEQUENCE_NUMBER.index + 1)); if (callStackList == null) { - // TODO : error case - Logger.error("Call Stack List is null!!"); - return; + // if call stack list is null, group data key is made by caller pc address. + Logger.debug("Call Stack List is null!!"); + callStackList = new ArrayList(); + callStackList.add(rs.getLong(MemoryAllocationDBTable.COLUMN.CALLER_PC_ADDRESS.index + 1)); + } else { + if (callStackList.size() == 1 && callStackList.get(0) == 0) { + callStackList = new ArrayList(); + callStackList.add(rs.getLong(MemoryAllocationDBTable.COLUMN.CALLER_PC_ADDRESS.index + 1)); + } } int key = makeGroupDataKey(callStackList); @@ -370,16 +393,22 @@ public class LeakDataBundle { List callStackList = AnalyzerManager.getCallstackManager() .getCallstackAddrListFromSeq(leakData.getSequenceNumber()); if (callStackList == null) { - // TODO : error case - Logger.error("Call Stack List is null!!"); - return; + // if call stack list is null, group data key is made by caller pc address. + Logger.debug("Call Stack List is null!!"); + callStackList = new ArrayList(); + callStackList.add(leakData.getCallerPCAddress()); + } else { + if (callStackList.size() == 1 && callStackList.get(0) == 0) { + callStackList = new ArrayList(); + callStackList.add(leakData.getCallerPCAddress()); + } } int key = makeGroupDataKey(callStackList); GroupLeakData groupData = groupLeakDataHashMap.get(Integer.valueOf(key)); if (groupData == null) { // TODO : error case - System.err.println("GroupData is null!!"); + Logger.error("GroupData is null!!"); return; } else { groupData.removeData(leakData.getSequenceNumber(), leakData.getAllocatedMemorySize()); @@ -388,11 +417,11 @@ public class LeakDataBundle { groupLeakDataHashMap.remove(Integer.valueOf(key)); } else if (groupData.getCallCount() == 0) { // TODO : error case - System.err.println("Group Leak Data - Allocated Memory Size is not 0 !!"); + Logger.error("Group Leak Data - Allocated Memory Size is not 0 !!"); return; } else if (groupData.getAllocatedMemorySize() == 0) { // TODO : error case - System.err.println("Group Leak Data - Call Count is not 0 !!"); + Logger.error("Group Leak Data - Call Count is not 0 !!"); return; } } -- 2.7.4