From fb03d04f1c3952b9ea983ac73fa8f7daa64e1307 Mon Sep 17 00:00:00 2001 From: Seyed Amir Hossein Aqajari Date: Thu, 5 Dec 2019 14:15:39 -0800 Subject: [PATCH 1/1] Fixing a bug in manual_write-non_conflict + setSet conflicts --- .../gov/nasa/jpf/listener/ConflictTracker.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/gov/nasa/jpf/listener/ConflictTracker.java b/src/main/gov/nasa/jpf/listener/ConflictTracker.java index 831442b..c8bb079 100644 --- a/src/main/gov/nasa/jpf/listener/ConflictTracker.java +++ b/src/main/gov/nasa/jpf/listener/ConflictTracker.java @@ -160,7 +160,7 @@ public class ConflictTracker extends ListenerAdapter { ArrayList setSet = parentNode.getOutgoingEdges().get(currentNode).getSetSetMap().get(currentTransition); HashMap valueMap = new HashMap(); // HashMap from varName to value HashMap writerMap = new HashMap(); // HashMap from varName to appNum - + HashMap isManualMap = new HashMap(); // HashMap from varName to isManual // Update the valueMap and writerMap + check for conflict between the elements of setSet for (int i = 0;i < setSet.size();i++) { @@ -168,6 +168,7 @@ public class ConflictTracker extends ListenerAdapter { String varName = nameValuePair.getVarName(); String value = nameValuePair.getValue(); Integer appNum = nameValuePair.getAppNum(); + Boolean isManual = nameValuePair.getIsManual(); if (valueMap.containsKey(varName)) { // Check if we have a same writer @@ -176,19 +177,15 @@ public class ConflictTracker extends ListenerAdapter { if (!valueMap.get(varName).equals(value)) { errorMessage = createErrorMessage(nameValuePair, valueMap, writerMap); return true; - } else { // We have two writers writing the same value - writerMap.put(varName, 3); // 3 represents both apps - } - } else { - // Check if we have more than one value with the same writer - if (!valueMap.get(varName).equals(value)) { - // We have one writer writing more than one value in a same event - valueMap.put(varName, "twoValue"); } } + valueMap.put(varName, value); + writerMap.put(varName, appNum); + isManualMap.put(varName, isManual); } else { valueMap.put(varName, value); writerMap.put(varName, appNum); + isManualMap.put(varName, isManual); } } @@ -198,7 +195,8 @@ public class ConflictTracker extends ListenerAdapter { String value = valueMap.get(i.getVarName()); Integer writer = writerMap.get(i.getVarName()); if ((value != null)&&(writer != null)) { - if (!value.equals(i.getValue())&&!writer.equals(i.getAppNum())) { + if (!value.equals(i.getValue())&&!writer.equals(i.getAppNum()) + &&!isManualMap.get(i.getVarName())) { // We have different values and different writers errorMessage = createErrorMessage(i, valueMap, writerMap); return true; -- 2.34.1