tmf: Fix concurrent data access violations
authorPatrick Tasse <patrick.tasse@gmail.com>
Mon, 12 Dec 2016 22:10:03 +0000 (17:10 -0500)
committerPatrick Tasse <patrick.tasse@gmail.com>
Mon, 19 Dec 2016 22:36:09 +0000 (17:36 -0500)
Fixes CID 157631, 157632, 157633, 157634, 157635, 157636.

Change-Id: I04ef3f396ce8fcf68b18e384cbde296434640daa
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/86996
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Hudson CI
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/relayd/LttngRelaydConnectionManager.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAnalysisManager.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/signal/TmfSignalManager.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTraceManager.java
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/views/TmfAlignmentSynchronizer.java

index eebab83aea959fb571f19d0e034187302a5b8216..3bde501febce406439cde69c12ed14f485f6bdff 100644 (file)
@@ -141,7 +141,7 @@ public final class LttngRelaydConnectionManager {
      * Dispose of all the manager's resources (i.e. its connections).
      */
     public void dispose() {
-        TmfSignalManager.deregister(fConnectionManager);
+        TmfSignalManager.deregister(this);
         for (LttngRelaydConsumer consumer : fConnections.values()) {
             consumer.dispose();
         }
index 4f8ea79de2b9e56f2b55d66174f7844cf80a2f73..207a3cc6a2d89ecb92eb0cc227ecb4103a54f4c6 100644 (file)
@@ -61,7 +61,9 @@ public class TmfAnalysisManager {
      */
     public static void dispose() {
         TmfAnalysisParameterProviders.dispose();
-        fParamProviderInstances.values().forEach(provider -> provider.dispose());
+        synchronized (fParameterProviders) {
+            fParamProviderInstances.values().forEach(provider -> provider.dispose());
+        }
     }
 
     /**
index 5eaea3e830d56d0eb43ad8c7ec1bff4af357f209..e45d3f0e204e3a26543fa2987b8e6bdf528d118b 100644 (file)
@@ -174,7 +174,7 @@ public class TmfSignalManager {
     /**
      * Disposes the signal manager
      */
-    public static void dispose() {
+    public static synchronized void dispose() {
         for (Entry<Object, Throwable> entry : fContexts.entrySet()) {
             System.err.println(getWarningMessage(entry.getKey()));
             StackTraceElement[] stackTrace = entry.getValue().getStackTrace();
index 7594c461b82466a2ee79315d820dc15e8602d434..e5c862f45028d3f83c98595ea187fd6927e54c03 100644 (file)
@@ -111,7 +111,7 @@ public final class TmfTraceManager {
      *
      * @since 2.3
      */
-    public void dispose() {
+    public synchronized void dispose() {
         TmfSignalManager.deregister(this);
         fTraces.clear();
         fCurrentTrace = null;
index 78dcaead746e16bfc72416f18620ad2620305576..ac7649f355e0a226a49809d5b197ae8e6e509181 100644 (file)
@@ -90,8 +90,10 @@ public class TmfAlignmentSynchronizer {
      */
     public void dispose() {
         TmfSignalManager.deregister(this);
-        fTimer.cancel();
-        fCurrentTask.cancel();
+        synchronized (fPendingOperations) {
+            fTimer.cancel();
+            fCurrentTask.cancel();
+        }
     }
 
     private IPreferenceChangeListener createPreferenceListener() {
This page took 0.027653 seconds and 5 git commands to generate.