On Wed, 1 Apr 2020 13:39:35 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> This is a regression of >> [JDK-8212034](https://bugs.openjdk.java.net/browse/JDK-8212034). >> When image is loaded in WebView usinga url, WebView attempts to load a image >> frames with partial image data. This was >> implemented under, JDK-8153148 -> WCImageDecoderImpl.addImageData() -> calls >> loadFrames() with partial image data. >> >> Call to jpeg_read_header() may fail when the partial image data has >> incomplete header information. >> >> In the given case the jpeg_read_header() call fails and code execution flow >> enters the 'if >> (setjmp(jerr->setjmp_buffer)) {}' block and results in call to >> disposeIIO(env, data);, which in turn calls >> imageio_dispose. This will free cinfo->err and set it to NULL, and the >> subsequent call to (*cinfo->err->format_message) >> crashes. Verified All test run, Sanity tests with Ensemble app and Tested >> different web pages. Added a test, The test >> passes with fix and causes a native crash without the fix. > > tests/system/src/test/java/test/robot/javafx/iio/LoadCorruptJPEGTest.java > line 69: > >> 68: } catch (FileNotFoundException e) { >> 69: e.printStackTrace(); >> 70: } > > The `FileNotFoundException` should cause the test to fail. Rather than doing > a try / catch, I recommend adding `throws > Exception` to the test method. Actually, I see that `Util.runAndWait` does not declare `throws Exception`, so you will need to keep the try/catch here. I recommend to fail the test with `Assert.fail` or `throw new AssertionFailedError(e)` ------------- PR: https://git.openjdk.java.net/jfx/pull/154