harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-3602) [classlib][awt][drlvm][netbeans] ImageDecoder.terminate() interrupts current thread
Date Mon, 09 Apr 2007 19:07:32 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-3602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Vasily Zakharov updated HARMONY-3602:
-------------------------------------

    Description: 
The following piece of code causes the current thread to be interrupted:

public class Test {
    public static void main(String args[]) throws Exception {
        java.awt.Image img = java.awt.Toolkit.getDefaultToolkit().createImage(Thread.currentThread().getContextClassLoader().getResource("test.gif"));
        new javax.swing.ImageIcon(img); // Loads the image.
        img.flush(); // ERROR: Calls Thread.currentThread().interrupt().
        System.out.println(Thread.currentThread().isInterrupted() ? "FAIL" : "SUCCESS");
    }
}

Please put the attached test.gif (it's a trivial image, nothing special, but it should exist)
to current directory before running the test.

The stack of calls causing the current thread to be interrupted is:
	org.apache.harmony.awt.gl.image.ImageDecoder.terminate() :128
	org.apache.harmony.awt.gl.image.DecodingImageSource.removeConsumer(ImageConsumer) :105
	org.apache.harmony.awt.gl.image.OffscreenImage.stopProduction() :426
	org.apache.harmony.awt.gl.image.OffscreenImage.flush() :133

Probably ImageDecoder.terminate() should not use Thread.currentThread() do determine a thread
to interrupt.

Output on RI:

SUCCESS

Output on Harmony/IBM VM:

SUCCESS

Output on Harmony/DRL VM:

FAIL

This looks like a clear AWT problem, however the problem only occurs on DRL VM, so probably
some issue (race condition, lack of synchronization or something like that) exists there also.

The problem was discovered while trying to run NetBeans on Harmony.


  was:
The following piece of code causes interrupt flag to be set on the current thread:

public class Test {
    public static void main(String args[]) throws Exception {
        java.awt.Image img = java.awt.Toolkit.getDefaultToolkit().createImage(Thread.currentThread().getContextClassLoader().getResource("test.gif"));
        new javax.swing.ImageIcon(img); // Loads the image.
        img.flush(); // ERROR: Calls Thread.currentThread().interrupt().
        System.out.println(Thread.currentThread().isInterrupted() ? "FAIL" : "SUCCESS");
    }
}

Please put the attached test.gif (it's a trivial image, nothing special, but it should exist)
to current directory before running the test.

The stack of calls causing interrupt flag to be set is:
	org.apache.harmony.awt.gl.image.ImageDecoder.terminate() :128
	org.apache.harmony.awt.gl.image.DecodingImageSource.removeConsumer(ImageConsumer) :105
	org.apache.harmony.awt.gl.image.OffscreenImage.stopProduction() :426
	org.apache.harmony.awt.gl.image.OffscreenImage.flush() :133

Probably ImageDecoder.terminate() should not use Thread.currentThread() do determine a thread
to interrupt.

Output on RI:

SUCCESS

Output on Harmony/IBM VM:

SUCCESS

Output on Harmony/DRL VM:

FAIL

This looks like a clear AWT problem, however the problem only occurs on DRL VM, so probably
some issue (race condition, lack of synchronization or something like that) exists there also.

The problem was discovered while trying to run NetBeans on Harmony.



> [classlib][awt][drlvm][netbeans] ImageDecoder.terminate() interrupts current thread
> -----------------------------------------------------------------------------------
>
>                 Key: HARMONY-3602
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3602
>             Project: Harmony
>          Issue Type: Bug
>          Components: App-Oriented Bug Reports, Classlib, DRLVM
>            Reporter: Vasily Zakharov
>         Attachments: test.gif
>
>
> The following piece of code causes the current thread to be interrupted:
> public class Test {
>     public static void main(String args[]) throws Exception {
>         java.awt.Image img = java.awt.Toolkit.getDefaultToolkit().createImage(Thread.currentThread().getContextClassLoader().getResource("test.gif"));
>         new javax.swing.ImageIcon(img); // Loads the image.
>         img.flush(); // ERROR: Calls Thread.currentThread().interrupt().
>         System.out.println(Thread.currentThread().isInterrupted() ? "FAIL" : "SUCCESS");
>     }
> }
> Please put the attached test.gif (it's a trivial image, nothing special, but it should
exist) to current directory before running the test.
> The stack of calls causing the current thread to be interrupted is:
> 	org.apache.harmony.awt.gl.image.ImageDecoder.terminate() :128
> 	org.apache.harmony.awt.gl.image.DecodingImageSource.removeConsumer(ImageConsumer) :105
> 	org.apache.harmony.awt.gl.image.OffscreenImage.stopProduction() :426
> 	org.apache.harmony.awt.gl.image.OffscreenImage.flush() :133
> Probably ImageDecoder.terminate() should not use Thread.currentThread() do determine
a thread to interrupt.
> Output on RI:
> SUCCESS
> Output on Harmony/IBM VM:
> SUCCESS
> Output on Harmony/DRL VM:
> FAIL
> This looks like a clear AWT problem, however the problem only occurs on DRL VM, so probably
some issue (race condition, lack of synchronization or something like that) exists there also.
> The problem was discovered while trying to run NetBeans on Harmony.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message