GPT issue in Docker container on Linux Virtual Machine

Hello to everyone,
I have this problem. I’m running a Python program that uses gpt to process Sentinel 2 images to produce vegetation indexes. This program is running on two different hardwares:

1- PC with Ubuntu 22.04
2- Virtual Machine with Ubuntu 22.04 on a Windows PC

the program is running in a Docker container in both hardwares and theese are the info about the Ubuntu version used in the container:

Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

When I run the part of the program that uses gpt on the hardware number 1 I have no problems and I’m able to elaborate the data but when I run this part of the program on the Hardware number 2 gpt raises this error and stops:

java.lang.ExceptionInInitializerError due to java.lang.IllegalArgumentException
90% done.
org.esa.snap.core.gpf.OperatorException: java.lang.ExceptionInInitializerError due to java.lang.IllegalArgumentException
        at org.esa.snap.core.gpf.graph.GraphProcessor$GPFImagingListener.errorOccurred(GraphProcessor.java:389)
        at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(Unknown Source)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
        at javax.media.jai.OpImage.getTile(Unknown Source)
        at javax.media.jai.PlanarImage.getData(Unknown Source)
        at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
        at org.esa.snap.core.datamodel.Band.readRasterData(Band.java:309)
        at org.esa.snap.core.dataio.ProductSubsetBuilder.readBandRasterDataRegion(ProductSubsetBuilder.java:393)
        at org.esa.snap.core.dataio.ProductSubsetBuilder.readBandRasterDataImpl(ProductSubsetBuilder.java:330)
        at org.esa.snap.core.dataio.AbstractProductReader.readBandRasterData(AbstractProductReader.java:277)
        at org.esa.snap.core.gpf.common.SubsetOp.computeTile(SubsetOp.java:295)
        at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:82)
        at javax.media.jai.SourcelessOpImage.computeTile(Unknown Source)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
        at javax.media.jai.OpImage.getTile(Unknown Source)
        at javax.media.jai.PlanarImage.getData(Unknown Source)
        at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435)
        at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:116)
        at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeTile(OperatorImageTileStack.java:86)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
        at javax.media.jai.OpImage.getTile(Unknown Source)
        at com.sun.media.jai.util.RequestJob.compute(Unknown Source)
        at com.sun.media.jai.util.WorkerThread.run(Unknown Source)
Caused by: org.esa.snap.core.gpf.OperatorException: java.lang.ExceptionInInitializerError due to java.lang.IllegalArgumentException
        at org.esa.snap.engine_utilities.gpf.OperatorUtils.catchOperatorException(OperatorUtils.java:434)
        at org.esa.snap.raster.gpf.masks.CreateLandMaskOp.computeTileStack(CreateLandMaskOp.java:265)
        at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:122)
        at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeTile(OperatorImageTileStack.java:86)
        ... 23 more
Caused by: java.lang.ExceptionInInitializerError
        at org.esa.snap.jp2.reader.internal.JP2TileOpImage.computeRectDirect(JP2TileOpImage.java:128)
        at org.esa.snap.jp2.reader.internal.JP2TileOpImage.computeRect(JP2TileOpImage.java:110)
        at javax.media.jai.SourcelessOpImage.computeTile(Unknown Source)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
        at javax.media.jai.OpImage.getTile(Unknown Source)
        at com.sun.media.jai.opimage.TranslateIntOpImage.getTile(Unknown Source)
        at javax.media.jai.PlanarImage.getData(Unknown Source)
        at javax.media.jai.PlanarImage.getExtendedData(Unknown Source)
        at com.sun.media.jai.opimage.MosaicOpImage.computeTile(Unknown Source)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
        at javax.media.jai.OpImage.getTile(Unknown Source)
        at javax.media.jai.PlanarImage.getData(Unknown Source)
        at javax.media.jai.RenderedOp.getData(Unknown Source)
        at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435)
        at org.esa.snap.core.gpf.Operator.getSourceTile(Operator.java:459)
        at org.esa.s2tbx.radiometry.SaviOp.computeTileStack(SaviOp.java:83)
        at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeRect(OperatorImageTileStack.java:122)
        at org.esa.snap.core.gpf.internal.OperatorImageTileStack.computeTile(OperatorImageTileStack.java:86)
        at com.sun.media.jai.util.SunTileScheduler.scheduleTile(Unknown Source)
        at javax.media.jai.OpImage.getTile(Unknown Source)
        at javax.media.jai.PlanarImage.getData(Unknown Source)
        at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449)
        at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435)
        at org.esa.snap.core.gpf.Operator.getSourceTile(Operator.java:459)
        at org.esa.snap.raster.gpf.masks.CreateLandMaskOp.getTargetTiles(CreateLandMaskOp.java:289)
        at org.esa.snap.raster.gpf.masks.CreateLandMaskOp.computeTileStack(CreateLandMaskOp.java:184)
        ... 25 more
Caused by: java.lang.IllegalArgumentException
        at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1314)
        at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1202)
        at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:89)
        at org.esa.snap.lib.openjpeg.dataio.OpenJP2Decoder.<clinit>(OpenJP2Decoder.java:61)
        ... 54 more

Error: java.lang.ExceptionInInitializerError due to java.lang.IllegalArgumentException
2023-01-16 13:52:07.308247: GPT exit status: 256
ERROR: call_gpt exited with status code: 256
ERROR:SC-logger 3:2023-01-16 13:52:07.310566: Error: ERROR: call_gpt exited with status code: 256

there are no problems with the GPF because I saw that for the two hardwares the GPFs are equal.

So my question is why on one hardware i don’t have problems and on the other one i have the problem? And how could i solve this issue?

I have to specify that i tried to uninstall and reinstall SNAP on the number 2.

Hi,

is your VM only equipped with one core?
In this case the error can happen.
If you give it two cores the program should work.

However, this is an issue in SNAP, and I’ve created a ticket for it.
[SNAP-1583] If system processor has only one core an IllegalArgumentException is thrown in OpenJP2Decoder - JIRA (atlassian.net)

Thanks for the report

Hi,
Yes the problem was exactly that one. On my VM I had only one core activated. Now I activated 4 cores and GPT is working well.

Thank you so much for your help. :slight_smile:

1 Like