Page 1 of 2
XP Security patch KB896424 breaks Celestia
Posted: 08.11.2005, 18:24
by abramson
Dear people,
I have suddenly lost ring shadows. The shadow of the planet on the rings is absent in all render paths. The shadow of the rings on the planet is visible only in the OpenGL 2 render path. Needless to say, all shadows worked fine until I discovered this problem yesterday. In particular, they worked in the vertex/combiners path, which is the one I preferred.
In addition, the Earth becomes a red ball under the OpenGL 2 path (it is the only planet that suffers this, and it is the only one for which the texture is a png file. Related?)
I have searched the forum for indications of what might happen, without success. I updated the ForceWare to version 81.85 today, and nothing changed.
Besides the update of the ForceWare (which I did
after finding the problem), I have not changed anything in the graphics configuration (or at least anything that I am aware of...)
Any help or hint will be appreciated. Thanks.
Guillermo
Configuration:
P4 3GHz on Intel D865GBF, 2GB RAM, Windows XP Pro SP2
nVidia GeForce FX 5200 AGP (MSI)
ForceWare version 81.85
Video Bios version 4.34.20.22
Display Driver 6.14.10.8185
Celestia: FT1.1 and 1.3.2 (Both with the same problem)
Posted: 08.11.2005, 18:48
by selden
It sounds like your copy of Celestia.exe has been damaged somehow.
I'd suggest installing Celestia again from scratch just to make sure all of its files are updated properly.
Celestia displays an object as Red in the OpenGL 2.0 render path when the graphic card's shader compiler detects a problem with the shader code that Celestia has generated.
Celestia should have written a file named shaders.log containing the compiler error message.
Posted: 08.11.2005, 19:58
by abramson
selden wrote:It sounds like your copy of Celestia.exe has been damaged somehow.
I'd suggest installing Celestia again from scratch just to make sure all of its files are updated properly.
Thanks, Selden. I doubt it: the problem appeared suddenly in three Celestias: FT1.1 as distributed by Fridger, FT1.1 as compiled by myself, and 1.3.2 as compiled by myself from the latest CVS. I suspect more of a graphics (configuration?) problem. I will uninstal+reinstall anyway.
Celestia should have written a file named shaders.log containing the compiler error message.
Version FT1.1 didn't generate the shaders.log file, but 1.3.2 did. The contents follows. There is indeed an error message, but I have browsed through the file and don't understand how to make use of it. If someone has more experience, please let me know. Thanks.
Guillermo
Code: Select all
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform float shininess;
8: varying vec4 spec;
9: varying vec2 diffTexCoord;
10: varying vec2 normTexCoord;
11: varying vec3 lightDir0;
12: varying vec2 specTexCoord;
13: varying vec2 nightTexCoord;
14: varying float totalLight;
15: uniform float textureOffset;
16: attribute vec3 tangent;
17:
18: void main(void)
19: {
20: float nDotVP;
21: float nDotHV;
22: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
23: nDotHV = max(0.0, dot(gl_Normal, lights[0].halfVector));
24: spec.rgb += lights[0].specular * (pow(nDotHV, shininess) * nDotVP);
25: totalLight += nDotVP;
26: totalLight = 1.0 - totalLight;
27: totalLight = totalLight * totalLight * totalLight * totalLight;
28: vec3 bitangent = cross(gl_Normal, tangent);
29: lightDir0.x = dot(tangent, lights[0].direction);
30: lightDir0.y = dot(-bitangent, lights[0].direction);
31: lightDir0.z = dot(gl_Normal, lights[0].direction);
32: diffTexCoord = gl_MultiTexCoord0.st;
33: diffTexCoord.x += textureOffset;
34: normTexCoord = gl_MultiTexCoord1.st;
35: specTexCoord = gl_MultiTexCoord2.st;
36: nightTexCoord = gl_MultiTexCoord3.st;
37: gl_Position = ftransform();
38: }
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1.0);
3: uniform vec3 lightcolor0;
4: uniform vec3 lightspecColor0;
5: varying vec4 spec;
6: varying vec2 diffTexCoord;
7: uniform sampler2D diffTex;
8: varying vec2 normTexCoord;
9: varying vec3 lightDir0;
10: uniform sampler2D normTex;
11: varying vec2 specTexCoord;
12: uniform sampler2D specTex;
13: varying vec2 nightTexCoord;
14: uniform sampler2D nightTex;
15: varying float totalLight;
16:
17: void main(void)
18: {
19: vec4 color;
20: vec3 n = texture2D(normTex, normTexCoord.st).xyz * vec3(2.0, 2.0, 2.0) - vec3(1.0, 1.0, 1.0);
21: float l;
22: l = max(0.0, dot(lightDir0, n)) * clamp(lightDir0.z * 8.0, 0.0, 1.0);
23: diff.rgb += l * lightcolor0;
24: color = texture2D(diffTex, diffTexCoord.st);
25: gl_FragColor = color * diff + texture2D(specTex, specTexCoord.st) * spec;
26: gl_FragColor += texture2D(nightTex, nightTexCoord.st) * totalLight;
27: }
Error linking shader program:
Vertex info
-----------
Internal error: assembly compile error for vertex shader at offset 1691:
-- error message --
line 42, column 19: error: invalid operand variable
line 51, column 32: error: invalid operand variable
-- internal assembly text --
!!VP2.0
# cgc version 1.5.0000, build date Oct 10 2005 22:14:19
# command line args:
#vendor NVIDIA Corporation
#version 1.0.02
#profile vp30
#program main
#semantic gl_ModelViewProjectionMatrixTranspose
#semantic lights
#semantic shininess
#semantic textureOffset
#var float3 gl_Normal : $vin.NORMAL : NORMAL : -1 : 1
#var float4 gl_Vertex : $vin.POSITION : POSITION : -1 : 1
#var float4 gl_MultiTexCoord0 : $vin.TEXCOORD0 : TEXCOORD0 : -1 : 1
#var float4 gl_MultiTexCoord1 : $vin.TEXCOORD1 : TEXCOORD1 : -1 : 1
#var float4 gl_MultiTexCoord2 : $vin.TEXCOORD2 : TEXCOORD2 : -1 : 1
#var float4 gl_MultiTexCoord3 : $vin.TEXCOORD3 : TEXCOORD3 : -1 : 1
#var float4 gl_Position : $vout.POSITION : HPOS : -1 : 1
#var float4x4 gl_ModelViewProjectionMatrixTranspose : : c[0], 4 : -1 : 1
#var float3 lights[0].direction : : c[7] : -1 : 1
#var float3 lights[0].diffuse : : : -1 : 0
#var float3 lights[0].specular : : c[8] : -1 : 1
#var float3 lights[0].halfVector : : c[4] : -1 : 1
#var float shininess : : c[6] : -1 : 1
#var float3 lightDir0 : $vout.TEX0 : TEX0 : -1 : 1
#var float textureOffset : : c[9] : -1 : 1
#var float2 nightTexCoord : $vout.TEX1 : TEX1 : -1 : 1
#var float2 diffTexCoord : $vout.TEX2 : TEX2 : -1 : 1
#var float2 normTexCoord : $vout.TEX3 : TEX3 : -1 : 1
#var float totalLight : $vout.TEX4 : TEX4 : -1 : 1
#var float2 specTexCoord : $vout.TEX5 : TEX5 : -1 : 1
#var float4 spec : $vout.TEX6 : TEX6 : -1 : 1
#var float3 tangent : $vin.ATTR6 : ATTR6 : -1 : 1
#const c[5] = 0 1
BB1:
DP3 R2.xy, v[2], c[7];
MOV R0.xyz, v[6];
MUL R1.xyz, v[2].zxyw, R0.yzxw;
MAD R0.xyz, v[2].yzxw, R0.zxyw, -R1;
DP3 o[TEX0].y, -R0, c[7];
MAX R0.w, R2.x, c[5].x;
ADD R1.x, R0.w, o[TEX4];
DP3 R0.x, v[2], c[4];
MAX R0.xy, R0.x, c[5].x;
MOV R0.z, c[6].x;
LIT R0.z, R0.xyzz;
ADD R1.x, -R1, c[5].y;
MUL R0.x, R1, R1;
MUL R0.y, R0.z, R0.w;
MUL R0.x, R0, R1;
MAD o[TEX6].xyz, R0.y, c[8], o[TEX6];
MUL o[TEX4].x, R0, R1;
MOV o[TEX0].z, R2.y;
MOV o[TEX3].xy, v[9];
MOV o[TEX5].xy, v[10];
MOV o[TEX1].xy, v[11];
DP3 o[TEX0].x, v[6], c[7];
ADD o[TEX2].x, v[8], c[9];
MOV o[TEX2].y, v[8];
DP4 o[HPOS].w, v[0], c[3];
DP4 o[HPOS].z, v[0], c[2];
DP4 o[HPOS].y, v[0], c[1];
DP4 o[HPOS].x, v[0], c[0];
END
# 28 instructions, 3 R-regs
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform vec3 ambientColor;
8: varying vec4 diff;
9: varying vec2 diffTexCoord;
10: uniform float textureOffset;
11:
12: void main(void)
13: {
14: float nDotVP;
15: diff = vec4(ambientColor, 1.0);
16: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
17: diff.rgb += lights[0].diffuse * nDotVP;
18: diffTexCoord = gl_MultiTexCoord0.st;
19: diffTexCoord.x += textureOffset;
20: gl_Position = ftransform();
21: }
Fragment shader source:
1: varying vec4 diff;
2: varying vec2 diffTexCoord;
3: uniform sampler2D diffTex;
4:
5: void main(void)
6: {
7: vec4 color;
8: color = texture2D(diffTex, diffTexCoord.st);
9: gl_FragColor = color * diff;
10: }
Posted: 08.11.2005, 20:28
by selden
Sorry: I can't help with decoding the errors either. If I'm reading them correctly, they seem to be specifying lines that aren't in the shader code
My other ideas about what might be going wrong were even less happy:
a virus corrupting the graphic drivers when they're loaded, or
a failure in the graphics card itself.
Certainly do a full system scan with a current anti-virus product an with several different anti-spyware scanners. They may not help with the current problem, but can't hurt.
Have you considered going back to a system restore point taken before the problems started?
Posted: 08.11.2005, 21:05
by cartrite
Or reinstall your display drivers?
Posted: 08.11.2005, 21:18
by t00fri
Hi Guillermo,
just returning this morning from my extended trip to South America (also talking to colleagues of yours in Bariloche..).
So I read about this horror that takes place in your machine!
Clearly the artifacts don't seem to be related to Celestia, since they occur simultaneously in three quite different versions.
Did you recently upgrade you card driver? Did you cross-check whether /other/ OpenGL applications are still correctly rendered?? Did you make adjustments in the GUI of your display driver?
Sorry, this all looks quite strange to me.
Cheers,
Fridger
PS: I have commented out shaders.log in FT1.x since it drove me crazy
. If you want it back, just search for 'shaders.log' in the code, delete the /*... */ and recompile.
Posted: 08.11.2005, 21:24
by Malenfant
It does sound like a deeper problem. Maybe your graphics card is starting to go on the fritz. If updating the drivers didn't help that sounds like it might be the problem... have you looked at the card? Is the fan working on it? Does Celestia run more slowly than usual?
Posted: 09.11.2005, 00:40
by abramson
Thanks a lot, everybody...
I tried most of the suggestions: spies, viruses, drivers. Eventualy, I went to the system restore utility and observed that on Monday there had been an "update" from Windows. I recovered the system to the immediately previous configuration and voil? ! solved both the shadows and the OpenGL 2 problems!! Perhaps it was a virus after all: the XP virus
XP users be warned: if Celestia starts to display graphic anticks, just restore!
Fridger: who did you meet? Ingo?
Guys, I am so exhausted this week, I am teaching three courses. And with Mars at opposition...
Guillermo
Posted: 09.11.2005, 12:32
by selden
This is to confirm Guillermo's report that the most recent MS Security update for Windows XP, KB896424, breaks Celestia. This was first made available in the U.S. last night, Tuesday, November 8th, 2005.
My home system still draws the shadow of Saturn on its rings, but the Earth does change into a red ball when Render Path OpenGL 2.0 is enabled.
System:
1GB 3.4GHz P4-550; Win XP Pro, SP2, patch KB896424
128MB GF 6600XP, ForceWare v81.85
Celestia v1.4.0pre7
(I'll change the name of this topic so it matches the cause.)
Posted: 09.11.2005, 14:43
by Malenfant
Anyone know *why* it breaks Celestia? And can Celestia be proofed against it?
Posted: 09.11.2005, 15:07
by ANDREA
selden wrote:This is to confirm Guillermo's report that the most recent MS Security update for Windows XP, KB896424, breaks Celestia. This was first made available in the U.S. last night, Tuesday, November 8th, 2005. My home system still draws the shadow of Saturn on its rings, but the Earth does change into a red ball when Render Path OpenGL 2.0 is enabled.
This to make happy the ones who installed this MS Security update on OpenGL 1.5 machines: no problem at all.
I think this be related to OpenGL 2.0 machines only.
FYI
Andrea
Posted: 09.11.2005, 15:28
by selden
And this is to confirm Andrea's report.
I do not see the OpenGL problem on my system at work.
The Earth looks normal when using Render Path OpenGL 2.0
and Saturn's shadow is visible on the rings
while the ring shadows are visible on the planet.
System:
512MB 2.4GHz P4; Win XP Pro, SP2, patch KB896424
128MB FX 5200, ForceWare v66.81 (OpenGL v1.5.2)
Celestia v1.4.0pre7
Posted: 09.11.2005, 16:23
by cartrite
This morning when I booted up Windows the I went thru the following steps:
The update was installed.
I went to Nvidia Home page and seen there was a driver update 81.85
That update was installed
I ran celestia-pre6 and got a red ball for open gl-2.0
This also showed version 2.0.1 in open gl info
I uninstalled the update from Windows
Still got a red ball
I then rolled back the Nvidia driver to 78.01
The red ball was gone and everything looked normal
The open gl version went back to 2.0.0
I then reinstalled windows update and still everything looked normal.
The windows update seems to affect the newer nvidia driver.
cartrite
Posted: 09.11.2005, 16:34
by cartrite
Or the new driver is affecting Celestia
Posted: 09.11.2005, 16:50
by cartrite
I also just ran FT1.1-2 and my latest cvs version, which is a couple of months old now. Everything looks normal with driver 78.01 and windows update KB896424 installed.
cartrite
Posted: 09.11.2005, 17:28
by Fightspit
I find this at :
http://today.reuters.com/news/newsartic ... CURITY.xml
Code: Select all
SEATTLE (Reuters) - Microsoft Corp. (MSFT.O: Quote, Profile, Research) warned users on Tuesday of a new "critical"-rated flaw in recent versions of Windows that could allow attackers to take control of a system by embedding malicious software code into digital images.
Users of Windows XP, Windows Server and an updated version of Windows 2000 were vulnerable to an attack unless they installed a software patch.
The flaw affects imaging technology used in Windows that could potentially allow an attacker to take control of a system simply by having the user view a digital image that contains software code that exploits the flaw.
The top two providers of security software and services, Symantec Corp. (SYMC.O: Quote, Profile, Research) and McAfee Inc. (MFE.N: Quote, Profile, Research) recommended that users install the patch and avoid opening suspicious e-mail attachments or clicking on any unfamiliar links.
"If a potential victim goes to a Web site and sees these files, they can be infected," said Monti Ijzerman, manager of security content at McAfee.
"The most the obvious thing is to deploy (install) the Microsoft security patches," Izjerman said.
Microsoft issued the patches as part of its monthly security bulletin, which it adopted in 2003 to make it easier for users and computer system administrators to install patches and keep track of vulnerabilities in Microsoft's software.
Users can also download the patches to fix the software flaws at www.microsoft.com/security.
I think it is a problem with image if I have understood.
Posted: 09.11.2005, 17:34
by Fightspit
Pour les fran?§ais/for the frenchies
:
http://www.presence-pc.com/actualite/mi ... rite-12850
Code: Select all
Microsoft vient, comme chaque mois, de publier sa s?©rie de correctifs et annonce avoir d?©couvert une faille critique, incitant donc les utilisateurs ? t?©l?©charger la mise ? jour au plus vite. Il s?€™agirait d?€™un probl??me au niveau de la gestion des images par les derni??res versions de Windows (Windows XP et Windows Server) qui permettrait d?€™ins?©rer un code malicieux au sein d?€™une photo afin qu?€™il s?€™ex?©cute ? l?€™insu de l?€™utilisateur. Il suffirait juste que l?€™image s?€™affiche ? l?€™aide de n?€™importe quel moyen, par exemple lors d'une visite sur un site Internet, pour que le code permette au pirate d?€™ouvrir une porte afin de prendre contr??le de votre machine. Les utilisateurs de Windows XP ou Windows Server sont donc conseill?©s de mettre ? jour leur syst??me rapidement.
Posted: 09.11.2005, 19:29
by cartrite
I switched over to another windows xp I have. This system had nvidia driver 78.03 beta installed. After Windows was updated, I had no problems. I did install the newer driver 81.85 and the problem reappeared. Rolled it back, and the problem dissappeared. I 'm using a GeForce Fx 5500 256 mb ram and Renderer: GeForce FX 5500/PCI/3DNOW!
I went thru nvidias archive and the drivers go from 78.01 to 81.85, so there are no drivers in between.
cartrite
Posted: 10.11.2005, 10:12
by cartrite
I did some further investigation of this driver problem/windows update problem.
I reinstalled the 81.85 nvidia driver, uninstalled update kb896424, and the red earth was still there in open gl 2.0 rendering mode. However, All the textures were not effected. This seems to depend on how many textures were being loaded into the earth (spec map, nightside lights, normal map, clouds etc.) I have different settings for my VT's of earth via the ssc file. Not all of my VT's use all the maps.
Open gl info reported 4 simultanious textures and the max size to be 4k. for my card. But apparently this is not the case. When too many textures were loaded, the earth turned red in open gl 2.0 mode. All other modes were normal.
Again, on my system, this only happens with the newer nvidia driver and windows update had no effect. I'm going back to the old driver and leave this one for the experts.
Posted: 10.11.2005, 10:31
by selden
The problem also is seen with Nvidia's beta driver for Windows XP 32, v81.87 (its link is on Nvidia's driver selection page, just above the menu windows that provide access to the standard drivers).