Skip to main content

Can I turn off SSE?

12 replies [Last post]
whiterabbit
Offline
Joined: 2004-02-09

Hello. I want to turn off SSE entirly. Is there any option on "java.exe" to do this?

I'm using Coppermine core CPU accelarator with Intel 440LX chipset, on this combination, SSE code crashes software and sometimes OS.

I heard it can be turned off by building from source with option "-G6" instead of "-arch:SSE -G7", but I could not find such option in mustang source and not succeed on build yet.

I know this is very rare case, but I really need it...

Thank you.

Message was edited by: whiterabbit

Message was edited by: whiterabbit

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
alanb
Offline
Joined: 2005-08-08

The HotSpot VM tests the cpu feature set at startup. I believe you can override this and disable SSE by running with -XX:UseSSE=0. This is of course an undocumented/unsupported option.

whiterabbit
Offline
Joined: 2004-02-09

Thank you alanb, it worked! :-) (java.exe run without crash)

But I noticed this option didn't work for javac.exe. Probably javac.exe uses java.exe internally... Is there a way to tell all java.exe use -XX:useSSE=0? (like environment variable)

trembovetski
Offline
Joined: 2003-12-31

You can try setting env. variable _JAVA_OPTIONS=-XX:useSSE=0

Dmitri

alanb
Offline
Joined: 2005-08-08

The -J option is usually used to pass options through to the runtime. So in this case "javac -J-XX:UseSSE=0 ..." should do it.

That said, it would be interesting to know if this something an end-user is likely to run into - is this CPU chip-set combination used in main-brand PCs? You mention that DirectX cannot be updated beyond version 7. I assume this means a lot of things can't run. I would guess it impacts Java2D/Swing too (Dmitri will know).

One final thing - can you paste in the "SYSTEM" section of the fatal error log for when you don't run with the UseSSE option - the fatal error log is the hs_err_
.log file that is created when there is a crash. In the SYSTEM section (near the bottom) there is a line that shows the cpu feature set that the VM detects.

whiterabbit
Offline
Joined: 2004-02-09

Thank you, trembovetski, alanb. That greatly worked. :-)

> That said, it would be interesting to know if this
> something an end-user is likely to run into - is this
> CPU chip-set combination used in main-brand PCs?

No, my machine is very old. Almost 8 years old, and this CPU accelarator prevents us from booting Win2000 because it doesn't pass CPU check. (I'm using Win2000 by workaround though) Only Win9x is supported OS, so probably people upgraded their machine.

And this machine could be called main stream 8 years ago... in my country. You know, I'm living in Japan, so this problem won't impact people worldwide.

> One final thing - can you paste in the "SYSTEM" section
> of the fatal error log for when you don't run with the
> UseSSE option - the fatal error log is the
> hs_err_
.log file that is created when there is a
> crash.

Yes, here you are.

--------------- S Y S T E M ---------------

OS: Windows 2000 Build 2195 Service Pack 4

CPU:total 1 family 6, cmov, cx8, fxsr, mmx, sse

Memory: 4k page, physical 359920k(138476k free), swap 875336k(642536k free)

vm_info: Java HotSpot(TM) Client VM (1.6.0-beta-b59g) for windows-x86, built on Feb 6 2006 15:20:01 by "java_re" with unknown MS VC++:1310

# It saids SSE is supported, but not. CPU accelarator vender distributes so called "SSE disabler" software, but it works on Win9x only, and there is no guarantee this soft works. (Macromedia8 crashed)

Thanks again for your helps. Thank you!

trembovetski
Offline
Joined: 2003-12-31

If you're seeing java crashing, this is a bug we'll need to fix. Please file a bug with all the relevant information..

Thanks,
Dmitri
Java2D Team

whiterabbit
Offline
Joined: 2004-02-09

> alexlamsl
The reason link.exe failed was cygwin's one was used instead of VisualC++'s one. After I renamed cygwin's link.exe to another name, build proceeded a bit.

> trembovetski
Thank you, I'll file it... But I think this is not Java's fault. Any SSE code crashes my app, so I cannot use Macromedia Flash 8 (I'm still using 7) and I cannot use DirectX9 (I'm using still 7) and so on. So this is just time comes to java too, but I really like Java, so I wanted to work around. Thank you.

# CPU accelarator's vender said they would fix this problem, but they couldn't. :-(

alexlamsl
Offline
Joined: 2004-09-02

I would think building from source is the only option; assuming you are building with Microsoft Visual Studio, the "-G6" option can be set under "Project Properties", I think.

whiterabbit
Offline
Joined: 2004-02-09

Thank you for reply. OK, /G7 and /arch:SSE are specified by himself, not by mustang?

Probably he is using Visual Stdio .Net... I'm using VisualC++6, and I realized cl.exe doesn't recognize /G7 and /arch:SSE.

I tried to setup build environment as well as possible, but still not succeed to build. (link.exe fails) I couldn't get VS6SP3 on MS site so used VS6SP2 instead. Probably that's the cause...

Does anyone know where to download VS6SP3? Or maybe SP5 or SP6 are OK? (Even if SP4 is not OK)

alexlamsl
Offline
Joined: 2004-09-02

AFAIK, Mustang source on Windows has migrated to use VS.NET 2003 - which is the only VS installation I've got anyway.

whiterabbit
Offline
Joined: 2004-02-09

Umm, but following page saids VisualC++6 can be used to build. Maybe this document is old?

http://download.java.net/jdk6/beta/docs/build/build-windows-i586.html

And sorry, I found VS6SP3 in my old CD. But still link.exe fails. Because I'm using latest Platform SDK instead of 2001/11 version? (Or as you say, VisualC++6 cannot be used for now) ;-(

alexlamsl
Offline
Joined: 2004-09-02

Just read through the document - have you satisfied the "Unix Command Binaries" requirement?