Community
Participate
Working Groups
When two threads try to initialize SystemIREnvironment, it is possible to run into Bootstrap.initializeClasses() together, and may lead to java.util.ConcurrentModificationException. After this error happen, mof will be in an error state and can not be used. (Bootstrap.loaded = true, but some fields is not actually loaded ) Caused by: java.util.ConcurrentModificationException at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64) at org.eclipse.edt.mof.impl.InternalEObject.init(InternalEObject.java:132) at org.eclipse.edt.mof.impl.EClassImpl.initialize(EClassImpl.java:276) at org.eclipse.edt.mof.impl.Bootstrap.newEClass(Bootstrap.java:643) at org.eclipse.edt.mof.impl.Bootstrap.getParameterClass(Bootstrap.java:262) at org.eclipse.edt.mof.impl.Bootstrap.createFunctionClass(Bootstrap.java:499) at org.eclipse.edt.mof.impl.Bootstrap.getFunctionClass(Bootstrap.java:256) at org.eclipse.edt.mof.impl.Bootstrap.initializeClasses(Bootstrap.java:87) at org.eclipse.edt.mof.impl.Bootstrap.doIt(Bootstrap.java:76) at org.eclipse.edt.mof.impl.Bootstrap.initialize(Bootstrap.java:29) at org.eclipse.edt.compiler.SystemIREnvironment.<init>(SystemIREnvironment.java:18) The scenario lead to this error is when user starts EDT in an existing workspace and some open EGL files. The Builder job and ProblemReconciler job will both start in background. Sometimes, they hit the Mof initialization problem.
Created attachment 203344 [details] boot stacktrace for the cocurrent error
I have made the initializeClasses() method synchronized, so that only 1 process can get into it at a time.
Close it.