System.exit() forbidden by JT Harness in agentvm mode

Volker Simonis volker.simonis at
Tue Dec 10 07:37:12 PST 2013


when running the
com/sun/java/swing/plaf/windows/8016551/ regression
test with the newest version of jtreg (build from source) in agentvm
mode I get the following error:

        at java.awt.EventQueue.invokeAndWait(
        at java.awt.EventQueue.invokeAndWait(
        at javax.swing.SwingUtilities.invokeAndWait(
        at bug8016551.main(
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
        at java.lang.reflect.Method.invoke(
        at com.sun.javatest.regtest.MainAction$
Caused by: java.lang.SecurityException: System.exit() forbidden by JT Harness
        at com.sun.javatest.JavaTestSecurityManager.checkExit(
        at javax.swing.JFrame.setDefaultCloseOperation(
        at bug8016551$
        at java.awt.event.InvocationEvent.dispatch(
        at java.awt.EventQueue.dispatchEventImpl(
        at java.awt.EventQueue.access$400(
        at java.awt.EventQueue$
        at java.awt.EventQueue$
        at Method)
        at java.awt.EventQueue.dispatchEvent(
        at java.awt.EventDispatchThread.pumpOneEventForFilters(
        at java.awt.EventDispatchThread.pumpEventsForFilter(
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(
        at java.awt.EventDispatchThread.pumpEvents(
        at java.awt.EventDispatchThread.pumpEvents(

If the test is run in othervm mode it succeeds.

I looked at this problem a litter loser and found out the following:

- there are 99 test which use JFrame.setDefaultCloseOperation(EXIT_ON_CLOSE)
- they are in java/awt (15), javax/swing (79), sun/java2d (3),
(setDefaultCloseOperation present but never called) and
- all test in java/awt and sun/java2d are always executed in othervm
mode anyway (because of 'othervm.dirs=java/awt ..' in TEST.ROOT)

Now I'm not sure if this security-exception is right at this place -
i.e. if jtreg/jtharness work as expected here.

If yes and if there's no option/workaround to switch this behaviour
off, we should either add 'javax/swing' as well to the 'othervm.dirs'
list in TEST.ROOT and explicitly flag the remain test to require
othervm mode by adding the corresponding '@run main/othervm' tag to
the java source file.

If adding 'javax/swing' to 'othervm.dirs' is considered to general, we
would have to explicitly flag each single test with '@run

What do you think?


PS: there are 208 test which call System.exit() directly. I haven't
analysed them until now, but the same reasoning applies for them as

More information about the quality-discuss mailing list