arachno7 / java-dds

Automatically exported from code.google.com/p/java-dds
GNU General Public License v2.0
0 stars 0 forks source link

Race condition beetween loading threads #2

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1.Create a thread that load a dds file 
2.Launch multiple threads loading different images

What is the expected output? What do you see instead?
Expected : fully loaded images
Instead:
<code>
Exception in thread "Thread-9" java.lang.ArrayIndexOutOfBoundsException: 4
    at net.nikr.dds.DDSLineReader.decodeDXT(DDSLineReader.java:182)
    at net.nikr.dds.DDSLineReader.decodeLine(DDSLineReader.java:86)
    at net.nikr.dds.DDSImageReader.read(DDSImageReader.java:280)
    at javax.imageio.ImageIO.read(ImageIO.java:1448)
    at javax.imageio.ImageIO.read(ImageIO.java:1308)
    at lol.reader.img.Image.get(Image.java:37)
    at lol.viewer.table.CellFactory$2$2.loadProcess(CellFactory.java:215)
    at lol.viewer.table.CellFactory$2$2.loadProcess(CellFactory.java:1)
    at lol.viewer.table.CellLoader$1.run(CellLoader.java:91)
    at java.lang.Thread.run(Thread.java:722)
Exception in thread "Thread-11" java.lang.ArrayIndexOutOfBoundsException: 4096
    at net.nikr.dds.DDSLineReader.decodeAtiAndDxt5AlphaBlock(DDSLineReader.java:330)
    at net.nikr.dds.DDSLineReader.decodeDXT(DDSLineReader.java:172)
    at net.nikr.dds.DDSLineReader.decodeLine(DDSLineReader.java:86)
    at net.nikr.dds.DDSImageReader.read(DDSImageReader.java:280)
    at javax.imageio.ImageIO.read(ImageIO.java:1448)
    at javax.imageio.ImageIO.read(ImageIO.java:1308)
    at lol.reader.img.Image.get(Image.java:37)
    at lol.viewer.table.CellFactory$2$2.loadProcess(CellFactory.java:215)
    at lol.viewer.table.CellFactory$2$2.loadProcess(CellFactory.java:1)
    at lol.viewer.table.CellLoader$1.run(CellLoader.java:91)
    at java.lang.Thread.run(Thread.java:722)
</code>

What version of the product are you using? On what operating system?
version used : HEAD on Win7 64

Please provide any additional information below.

The issue seems to be solved by changing variable declaration in DDSLineReader 
from:
<code language="java">
   private static byte[][][] linesColor;
   private static int lineNumber = 0;
</code>
to:
<code language="java">
   private byte[][][] linesColor;
   private int lineNumber = 0;
</code>

Original issue reported on code.google.com by treil...@gmail.com on 27 Jul 2013 at 7:00

GoogleCodeExporter commented 9 years ago
Thank you for your bug report with included fix.

Suggested solution applied in r18

Original comment by nikla...@gmail.com on 27 Jul 2013 at 8:14