JDK-8118535 : JavaFX crashes on older processors (pre-SSE2 instruction set) when using effects with software pipelines
  • Type: Bug
  • Component: javafx
  • Sub-Component: graphics
  • Affected Version: fx2.0.3,fx2.1
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2012-05-10
  • Updated: 2015-06-17
  • Resolved: 2012-06-20
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7
7u6Fixed
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
A client of our company got a jvm crash using our javafx application (infiltrea).

I reinstalled all the environment and update drivers of the graphics card but the problem is still always present.
I'm a bit in the hury with the client.

It seems to be a prism problem.

I attach the jvm crash log file.

Any idea or temporary solution is welcome. Thanks in advance!
Comments
Closed as unverified: SQE does not have hardware required to verify these issues
05-07-2012

This should now be fixed with the following changeset: changeset: 16294:ea4956e40e42 date: Wed Jun 20 16:43:47 2012 -0700 summary: Fix RT-21470: FX software pipeline crashses on pre-SSE2 processors. There is no unit test as this fixes a crash on older processors. Those processors will now back off to the more portable Java loops for effects.
20-06-2012

As a workaround for this bug, you can set the following system property: -Ddecora.simd=false
15-06-2012

VS2010 SP1 looks like it fixes the problem. Investigating the feasibility of requiring it on our build machines...
14-06-2012

Apparently this is a known bug in VS2010, we do specify /arch:SSE, but it generates the above-mentioned SSE2 instruction anyway: http://connect.microsoft.com/VisualStudio/feedback/details/565959
14-06-2012

The cvtdq2ps instruction is supported only on SSE2, A64, SSE3, and E64T. The processor shown in the logs is an x86 family 6 model 7 AMD processor which is either a Duron Model 7 or a Mobile Duron Model 7 and only supports SSE. It looks like we are relying on instructions that are too new for these processors.
14-06-2012

As in another bug report (RT-21742), the instruction it is dying on is a cvtdq2ps instruction which is a SIMD instruction. We may be triggering use of Intel-specific, or simply "newer revision of MMX" instructions in the optimizations of our SSE code. I'll have to look up the processors involved and their instruction sets and see if there is a mismatch there...
14-06-2012

Unfortunately, we need a reproducible test case to evaluate this.
13-06-2012

I see. Yes, you are already running the SW pipeline, so this is a bug in that code path. I can't think of an easy workaround, other than to suggest that you try running on a newer graphics card which will use the Prism HW pipeline. In any case, since this appears to be in the filter effects software code, I am assigning to Jim to evaluate.
10-05-2012

Thanks I'm running it into the shell and as soon as I have the trace I'll attach it. So currently and temporary there is no way to solve the problem for the customer of our software?
10-05-2012

The prism.verbose log is printed to the console, not dumped as part of a crash dump. Meaning that you need to run it from a command shell or IDE (such as NetBeans or Eclipse).
10-05-2012

I run it but there is not difference in the jvm log file... "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Dprism.verbose=true -Xms256m -Xmx1024m -jar "C:\Program Files (x86)\Infiltrea2\Infiltrea.jar Could you confirm the good syntax? (You could see the option in the log file too)
10-05-2012

I see. In that case you might already be falling back to the SW pipeline, and have discovered a bug there. Can you run it with just the following option: -Dprism.verbose=true and post the results?
10-05-2012

the option -Dprism.order=j2d doesn't solve the problem :(
10-05-2012

Set priority to P2 and target for the 2.2 release. This is a very old graphics card that is not supported by Prism. Any solution we come up with is likely to be adding this chipset to our blacklist. Can you do the following: 1) Run the app with "-Dprism.verbose=true" and attach the output 2) Disable prism HW manually by setting: -Dprism.order=j2d The latter will simulate the effect of adding this card to the blacklist, and is the suggested workaround.
10-05-2012