diff options
author | Stephan Herrmann | 2010-09-07 10:43:46 +0000 |
---|---|---|
committer | Stephan Herrmann | 2010-09-07 10:43:46 +0000 |
commit | 2d1de526ae06d60d16dca844d4e62e8e94668689 (patch) | |
tree | c2090fb1afa2deb5bca6f1543510cdcf44fc75fa /plugins/org.eclipse.objectteams.otdt.debug | |
parent | 99b918aa3e87f1a71652625de67e87084b3b928a (diff) | |
download | org.eclipse.objectteams-2d1de526ae06d60d16dca844d4e62e8e94668689.tar.gz org.eclipse.objectteams-2d1de526ae06d60d16dca844d4e62e8e94668689.tar.xz org.eclipse.objectteams-2d1de526ae06d60d16dca844d4e62e8e94668689.zip |
Avoid real work (here initializiing/setting classpath containers) during static initializers.
I saw deadlocks with involvment of the following stack-fragment:
at org.eclipse.jdt.core.JavaCore.setClasspathVariable(JavaCore.java:4923)
at org.eclipse.objectteams.otdt.core.ext.OTVariableInitializer.initialize(OTVariableInitializer.java:62)
at org.eclipse.jdt.core.JavaCore.getClasspathVariable(JavaCore.java:2858)
at org.eclipse.jdt.internal.core.JavaModelManager.getResolvedVariablePath(JavaModelManager.java:2411)
at org.eclipse.jdt.core.JavaCore.getResolvedVariablePath(JavaCore.java:3400)
at org.eclipse.objectteams.otdt.core.ext.OTDTPlugin.getResolvedVariablePath(OTDTPlugin.java:166)
at org.eclipse.objectteams.otdt.core.ext.OTREContainer.<clinit>(OTREContainer.java:73)
at org.eclipse.objectteams.otdt.core.ext.OTDTPlugin.start(OTDTPlugin.java:120)
(initializing BCEL_PATH early is OK, we need the BundleContext and don't perform further computations)
Diffstat (limited to 'plugins/org.eclipse.objectteams.otdt.debug')
-rw-r--r-- | plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java b/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java index b1f97dbbe..edf1b29a0 100644 --- a/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java +++ b/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java @@ -50,11 +50,6 @@ public class OTVMRunnerAdaptor private static final String OT_DEBUG_CALLIN_STEPPING_VMARG = "-Dot.debug.callin.stepping"; private static final String OT_TEAMCONFIG_VMARG = "-Dot.teamconfig"; private static List<String> JPLIS_VMARGS; - static { - JPLIS_VMARGS = new ArrayList<String>(); - JPLIS_VMARGS.add("-Dot.otdt"); - JPLIS_VMARGS.add("-javaagent:" + "\""+OTREContainer.OTRE_AGENT_JAR_PATH.toOSString()+'"'); // support blanks in path - } private ILaunchConfiguration _launchConfig; private String _mode; @@ -139,7 +134,7 @@ public class OTVMRunnerAdaptor String sep = " "; StringBuffer result = new StringBuffer(vmArguments); - for (String arg : JPLIS_VMARGS) + for (String arg : getJplisVmargs()) result.append(sep).append(arg); String callinSteppingVMArg = getCallinSteppingVMArg(); @@ -155,6 +150,15 @@ public class OTVMRunnerAdaptor return result.toString(); } + private List<String> getJplisVmargs() { + if (JPLIS_VMARGS == null) { + JPLIS_VMARGS = new ArrayList<String>(); + JPLIS_VMARGS.add("-Dot.otdt"); + JPLIS_VMARGS.add("-javaagent:" + "\""+OTREContainer.getOtreAgentJarPath().toOSString()+'"'); // support blanks in path + } + return JPLIS_VMARGS; + } + private String getCallinSteppingVMArg() { String value = OTDebugPlugin.getDefault().getCallinSteppingConfig(); if (value == null) return null; @@ -163,7 +167,7 @@ public class OTVMRunnerAdaptor protected List<String> getOTVMArgs() { - return new ArrayList<String>(JPLIS_VMARGS); + return new ArrayList<String>(getJplisVmargs()); } /** |