# HG changeset patch # User Christian Wirth # Date 1427213963 -3600 # Node ID eebf140fa6e4682a550de2fb6f2f4a094f53c506 # Parent 4b6965a278cf29698c2ae488bdd15bf492d1a906 syncronize the access to Source.allSources. Should fix random crashes we experienced before. diff -r 4b6965a278cf -r eebf140fa6e4 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java Tue Mar 24 14:36:57 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java Tue Mar 24 17:19:23 2015 +0100 @@ -81,7 +81,7 @@ /** * All Sources that have been created. */ - private static final List> allSources = new ArrayList<>(); + private static final List> allSources = Collections.synchronizedList(new ArrayList>()); // Files and pseudo files are indexed. private static final Map> filePathToSource = new Hashtable<>(); @@ -273,11 +273,13 @@ */ public static Collection findSourcesTaggedAs(SourceTag tag) { final List taggedSources = new ArrayList<>(); - for (WeakReference ref : allSources) { - Source source = ref.get(); - if (source != null) { - if (tag == null || source.isTaggedAs(tag)) { - taggedSources.add(ref.get()); + synchronized (allSources) { + for (WeakReference ref : allSources) { + Source source = ref.get(); + if (source != null) { + if (tag == null || source.isTaggedAs(tag)) { + taggedSources.add(ref.get()); + } } } }