Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 462431

Summary: New certificate conflict
Product: [Eclipse Project] Equinox Reporter: Ed Willink <ed>
Component: ComponentsAssignee: Thomas Watson <tjwatson>
Status: VERIFIED FIXED QA Contact:
Severity: critical    
Priority: P3 CC: daniel_megert, david_williams
Version: 4.5.0 Mars   
Target Milestone: Mars M6   
Hardware: PC   
OS: Windows NT   
Whiteboard:

Description Ed Willink CLA 2015-03-18 03:10:29 EDT
Further to Bug 450783 and 461634

I have just started getting the failure below, causing a failure when running headless Xtext tests using the platform I-builds.

Wheareas the .ui conflict was workaroundable avoiding core.runtime is much harder. org.eclipse.core.runtime.IAdaptable is a very utilitarian class.

Please ensure that ALL bundles for ALL partitioned packages are touched before M6.

java.lang.SecurityException: class "org.eclipse.core.runtime.IAdaptable"'s signer information does not match signer information of other classes in the same package
	at java.lang.ClassLoader.checkCerts(ClassLoader.java:952)
	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:666)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:794)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585)
	at java.lang.Class.getConstructor0(Class.java:2885)
	at java.lang.Class.getConstructor(Class.java:1723)
	at junit.framework.TestSuite.getTestConstructor(TestSuite.java:86)
	at junit.framework.TestSuite.addTestsFromTestCase(TestSuite.java:138)
	at junit.framework.TestSuite.<init>(TestSuite.java:132)
	at junit.framework.TestSuite.addTestSuite(TestSuite.java:219)
	at org.eclipse.ocl.examples.test.xtext.AllXtextTests.suite(AllXtextTests.java:120)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.junit.internal.runners.SuiteMethod.testFromSuiteMethod(SuiteMethod.java:35)
	at org.junit.internal.runners.SuiteMethod.<init>(SuiteMethod.java:24)
	at org.junit.internal.builders.SuiteMethodBuilder.runnerForClass(SuiteMethodBuilder.java:11)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Comment 1 Dani Megert CLA 2015-03-18 09:33:23 EDT
We need to find split packages with mixed certificates and touch them for M6.

Tom is trying to provide a list of those. As a start we can fix the once officially split in the manifest.

The following need to be touched for sure:
org.eclipse.equinox.common
org.eclipse.equinox.registry

Moving to Equinox for that.
Comment 2 Dani Megert CLA 2015-03-18 09:56:12 EDT
Simple test case:

Create a bundle with this JUnit test:

public class TestIt extends TestCase {
	public void testRT() {
		Platform.getBundle("foo");
	}
}

and then Run As > JUnit Test.
Comment 3 Thomas Watson CLA 2015-03-18 11:08:30 EDT
(In reply to Dani Megert from comment #1)
> We need to find split packages with mixed certificates and touch them for M6.
> 
> Tom is trying to provide a list of those. As a start we can fix the once
> officially split in the manifest.
> 
> The following need to be touched for sure:
> org.eclipse.equinox.common
> org.eclipse.equinox.registry
> 
> Moving to Equinox for that.

Done with:

http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/commit/?id=70ba1d73e8b0bc912d59463116217db2aa5ceac7

Also did org.eclipse.core.runtime.compatibility.registry which contributes to the org.eclipse.core.runtime package as a fragment of the equinox.registry bundle.

http://git.eclipse.org/c/platform/eclipse.platform.runtime.git/commit/?id=b65d34a436943acb4d387fa903f0e3019bd72bf2
Comment 4 Dani Megert CLA 2015-03-19 03:54:24 EDT
Verified in I20150318-2000.
Comment 5 Ed Willink CLA 2015-03-19 05:27:07 EDT
Yes. Thanks. My Hudson tests pass again.