Mixed Code java.lang.SecurityException


F

FutureScalper

Exception in thread "AWT-EventQueue-0" java.lang.SecurityException:
class "com.twc.trader.SupportResistanceDialog$1"'s signer information
does not match signer information of other classes in the same package

This emerges at random intervals during runtime, and cannot be
predicted. Once these exceptions begin to be thrown there is no
recovery. The class in question is in my own jars, uniformly signed
using the Java 6 Update 25 JDK jarsigner.

I had previously frozen my users on Java 6 Update 17 because the
platform apparently had this bug. After a few days of testing on
Update 25, I thought everything was OK, and now the Java 6 Update 25
platform is throwing Security exceptions again !!! Once it starts
throwing them, it never stops and I have to shut down my app.

Problem is this runs fine, for hours, even days, and then the Java
runtime starts throwing these exceptions, and there's no way for my
app to recover.

I am running a complex Swing-based multi threaded app, and the errors
typically occur on inner GUI related classes, as in the sample below.

All of this code is fully debugged tested, for years, and should run
fine which is why I think it's an error in the Java platform itself.

I've used the Java 6 Update 25 JDK jarsigner on my jars.

All of the jars are cached locally using Java Web Start. They are
also running under the 32-bit Java Server VM on Windows.

C:\Windows\Sun\Java\Deployment contains the following two files,
deployment.config and deployment.properties which I thought was a
system-wide suppression of this mixed code check:

(deployment.config)
deployment.system.config=file:/C:/windows/Sun/Java/Deployment/
deployment.properties
deployment.system.config.mandatory=true

(deployment.properties)
deployment.security.mixcode=DISABLE

I have noticed that in the Java Console, after a long time, the system
will periodically read the Certs again. I think this re-reading of
the Certs is responsible for this error condition.

This is run under Web Start, I'd like to emphasize and the code is
perfect; something about the runtime is causing this problem at random
intervals into execution.

The only thing I can do is to force my users back to Java 6 Update 17,
unless someone would kindly point me in the direction of a solution.

The next step is to submit a bug report I guess, but it is difficult
to reproduce. Thanks in advance !


Exception in thread "AWT-EventQueue-0" java.lang.SecurityException:
class "com.twc.trader.SupportResistanceDialog$1"'s signer information
does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(Unknown Source)
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.twc.trader.SupportResistanceDialog.<init>(Unknown Source)
at com.twc.trader.Core.getSupportResistanceDialog(Unknown Source)
at com.twc.trader.TickAnalyzer.update(Unknown Source)
at com.twc.replay.PriceOverview.notifyObservers(Unknown Source)
at com.twc.replay.PriceOverview$1.chartMouseClicked(Unknown Source)
at org.jfree.chart.ChartPanel.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext
$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown
Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top