From a5ebd39f8583016398b6a5cd84e803c3f90035dc Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 6 Dec 2020 17:12:49 +0100 Subject: Bug: Incorrect lazy initialization of static field org.eclipse.help.internal.base.scope.ScopeRegistry.instance in org.eclipse.help.internal.base.scope.ScopeRegistry.getInstance() This method contains an unsynchronized lazy initialization of a non-volatile static field. Because the compiler or processor may reorder instructions, threads are not guaranteed to see a completely initialized object, if the method can be called by multiple threads. You can make the field volatile to correct the problem. For more information, see the Java Memory Model web site. Rank: Troubling (14), confidence: Normal Pattern: LI_LAZY_INIT_STATIC Type: LI, Category: MT_CORRECTNESS (Multithreaded correctness) Change-Id: I232f050bbbc83403c4b7346cb411ec47b74f19fd Signed-off-by: Carsten Hammer Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.ua/+/173454 Tested-by: Platform Bot Reviewed-by: Alexander Kurtakov --- .../org/eclipse/help/internal/base/scope/ScopeRegistry.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/org.eclipse.help.base/src/org/eclipse/help/internal/base/scope/ScopeRegistry.java b/org.eclipse.help.base/src/org/eclipse/help/internal/base/scope/ScopeRegistry.java index 255738d2f..cfbe9e9fb 100644 --- a/org.eclipse.help.base/src/org/eclipse/help/internal/base/scope/ScopeRegistry.java +++ b/org.eclipse.help.base/src/org/eclipse/help/internal/base/scope/ScopeRegistry.java @@ -39,17 +39,17 @@ public class ScopeRegistry { private static List scopes = null; - private static ScopeRegistry instance; - private boolean initialized = false; + private static class RegistryHolder { + static final ScopeRegistry instance = new ScopeRegistry(); + } + private ScopeRegistry() { } public static ScopeRegistry getInstance() { - if (instance == null) - instance = new ScopeRegistry(); - return instance; + return RegistryHolder.instance; } public AbstractHelpScope getScope(String id) { -- cgit v1.2.3