Solution to Black Screen in TF2

I just wanted to share my solution to the black screen problem in TF2. I'm using Xubuntu 12.10 64-bit with 310 series Nvidia drivers (GPU = GTX460M).

1) Open a terminal and type: sudo nano /usr/bin/steam

2) Add the following lines after "#! /bin/bash":

export LANG=C

export LC_NUMERIC=POSIX

3) Save (CTRL-O + Enter + CTRL-X)

4) Launch Steam

Just "export LANG=C" alone didn't help me, but for some it has done the trick. I got my idea from Limited Beta section, but since I'm not in the beta, I can't contribute there. I hope this workaround helps those who have this problem.

1) Open a terminal and type: sudo nano /usr/bin/steam

2) Add the following lines after "#! /bin/bash":

export LANG=C

export LC_NUMERIC=POSIX

3) Save (CTRL-O + Enter + CTRL-X)

4) Launch Steam

Just "export LANG=C" alone didn't help me, but for some it has done the trick. I got my idea from Limited Beta section, but since I'm not in the beta, I can't contribute there. I hope this workaround helps those who have this problem.

Date Posted: Nov 19, 2012 @ 1:41am

Posts: 89

EDIT: Also, if you launch TF2, does the in-game chat-overlay-thingy work?

I'm using a Radeon 5850

Game removed: AppID 440 "Team Fortress 2", ProcID 3156

processpipe_posix.cpp (371) : Assertion Failed: CCrossProcessPipe::BWrite wrote too few bytes: 32 (Broken pipe)

Assert( Assertion Failed: CCrossProcessPipe::BWrite wrote too few bytes: 32 (Broken pipe) ):/home/buildbot/buildslave_steam/steam_rel_client_ubuntu12_linux/build/src/clientdll/../common/processpipe_posix.cpp:371

That's what its spitting out.

//GLSLfp

#version 130

varying vec4 oT0;

centroid varying vec4 oT2;

varying vec4 oT4;

//SAMPLERMASK-83

//SAMPLERTYPES-ffff3ff0

//HIGHWATER-31

uniform vec4 pc[31];

uniform sampler2D sampler0;

uniform sampler2D sampler1;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 63

vec4 r0;

vec4 r1;

vec4 r2;

vec4 r3;

r2 = texture2D( sampler0, oT0.xy );

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler1, oT2.xy );

r0.w = -oT4.z + pc[10].z;

r1.w = 1.0 / r0.w;

r3.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r2.xyz ) + r2.xyz;

r0.w = -oT4.z + pc[11].y;

r1.xyz = r3.xyz * gl_Color.xyz;

r0.w = r1.w * r0.w;

r0.w = clamp( r0.w, 0.0, 1.0 );

r0.xyz = r0.xyz * pc[12].xyz;

r0.w = r0.w * oT4.w;

r0.xyz = r1.xyz * r0.xyz;

r0.w = r0.w * pc[11].w;

r0.w = clamp( r0.w, 0.0, 1.0 );

r1.w = pc[30].x;

r1.xyz = r0.xyz * -r1.www + pc[29].xyz;

r1.w = r0.w;

r1.w = clamp( r1.w, 0.0, 1.0 );

r1.xyz = r1.xyz * r1.www;

r0.xyz = r0.xyz * pc[30].xxx + r1.xyz;

gl_FragData[0] = r0;

}

Compile of "lightmappedgeneric_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

centroid varying vec4 oT3;

varying vec4 oT5;

varying vec4 oT6;

varying vec4 oT7;

//SAMPLERMASK-89

//SAMPLERTYPES-ffff3f3c

//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;

uniform sampler2D sampler3;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 64

vec4 pd0 = vec4( -2.0, 3.0, 0.25, 0.699999988079 );

vec4 pd1 = vec4( 0.43643578887, 0.87287157774, -0.218217894435, 0.0 );

vec4 r0;

vec4 r1;

vec4 r2;

vec4 r3;

r0.x = oT3.z;

r0.y = oT3.w;

r2 = texture2D( sampler3, r0.xy );

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler0, oT0.xy );

r2.w = r2.x + r2.y;

r2.w = clamp( r2.w, 0.0, 1.0 );

r1.w = -r2.x + r2.y;

r1.w = clamp( r1.w, 0.0, 1.0 );

r2.w = r2.w + -r1.w;

r1.w = -r1.w + gl_SecondaryColor.x;

r2.w = 1.0 / r2.w;

r2.w = r1.w * r2.w;

r2.w = clamp( r2.w, 0.0, 1.0 );

r2.x = oT5.z;

r1.w = r2.w * pd0.x + pd0.y;

r2.y = oT6.z;

r2.w = r2.w * r2.w;

r2.z = oT7.z;

r1.w = r1.w * r2.w;

r3.x = dot( r2.xyz, pd1.xyz );

r2.xyz = r1.www * ( r1.xyz - r0.xyz ) + r0.xyz;

r2.w = r3.x * pd0.z + pd0.w;

r0.xyz = r2.xyz * gl_Color.xyz;

r1.w = gl_Color.w * pc[12].w;

r0.xyz = r2.www * r0.xyz;

r0.w = r0.w * r1.w;

gl_FragData[0] = r0;

}

Compile of "lightmappedgeneric_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

varying vec4 oT5;

varying vec4 oT6;

varying vec4 oT7;

//SAMPLERMASK-81

//SAMPLERTYPES-ffff3ffc

//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 72

vec4 pd0 = vec4( 0.25, 0.699999988079, 0.0, 0.0 );

vec4 pd1 = vec4( 0.43643578887, 0.87287157774, -0.218217894435, 0.0 );

vec4 r0;

vec4 r1;

vec4 r2;

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler0, oT0.xy );

r2.x = oT5.z;

r2.y = oT6.z;

r2.z = oT7.z;

r2.x = dot( r2.xyz, pd1.xyz );

r2.w = r2.x * pd0.x + pd0.y;

r2.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r0.xyz ) + r0.xyz;

r0.xyz = r2.xyz * gl_Color.xyz;

r1.w = gl_Color.w * pc[12].w;

r0.xyz = r2.www * r0.xyz;

r0.w = r0.w * r1.w;

gl_FragData[0] = r0;

}

Compile of "lightmappedgeneric_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

varying vec4 oT5;

varying vec4 oT6;

varying vec4 oT7;

//SAMPLERMASK-81

//SAMPLERTYPES-ffff3ffc

//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 76

vec4 pd0 = vec4( 0.25, 0.699999988079, 0.0, 0.0 );

vec4 pd1 = vec4( 0.43643578887, 0.87287157774, -0.218217894435, 0.0 );

vec4 r0;

vec4 r1;

vec4 r2;

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler0, oT0.xy );

r2.x = oT5.z;

r2.y = oT6.z;

r2.z = oT7.z;

r2.x = dot( r2.xyz, pd1.xyz );

r2.w = r2.x * pd0.x + pd0.y;

r2.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r0.xyz ) + r0.xyz;

r0.xyz = r2.xyz * gl_Color.xyz;

r1.w = gl_Color.w * pc[12].w;

r0.xyz = r2.www * r0.xyz;

r0.w = r0.w * r1.w;

gl_FragData[0] = r0;

}

Compile of "lightmappedgeneric_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

centroid varying vec4 oT3;

varying vec4 oT4;

varying vec4 oT5;

varying vec4 oT6;

varying vec4 oT7;

//SAMPLERMASK-89

//SAMPLERTYPES-ffff3f3c

//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;

uniform sampler2D sampler3;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 80

vec4 pd0 = vec4( 2.200000047684, -2.0, 3.0, 1.0 );

vec4 r0;

vec4 r1;

vec4 r2;

r0.x = oT3.z;

r0.y = oT3.w;

r2 = texture2D( sampler3, r0.xy );

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler0, oT0.xy );

r2.w = r2.x + r2.y;

r2.w = clamp( r2.w, 0.0, 1.0 );

r1.w = -r2.x + r2.y;

r1.w = clamp( r1.w, 0.0, 1.0 );

r2.w = r2.w + -r1.w;

r0.x = log2( r0.x );

r1.w = -r1.w + gl_SecondaryColor.x;

r0.y = log2( r0.y );

r2.w = 1.0 / r2.w;

r0.z = log2( r0.z );

r2.w = r1.w * r2.w;

r2.w = clamp( r2.w, 0.0, 1.0 );

r0.xyz = r0.xyz * pd0.xxx;

r1.w = r2.w * pd0.y + pd0.z;

r2.x = exp2( r0.x );

r2.w = r2.w * r2.w;

r2.y = exp2( r0.y );

r1.w = r1.w * r2.w;

r2.z = exp2( r0.z );

r0.xyz = r1.www * ( r1.xyz - r2.xyz ) + r2.xyz;

r1.w = gl_Color.w * pc[12].w;

r0.xyz = r0.xyz * gl_Color.xyz;

r0.w = r0.w * r1.w;

gl_FragData[0] = r0;

r0.x = oT5.z;

r0.y = oT6.z;

r0.z = oT7.z;

gl_FragData[1] = r0;

r0.xyz = oT4.xyz;

gl_FragData[2] = r0;

r0.xyz = pd0.www;

gl_FragData[3] = r0;

}

Compile of "lightmappedgeneric_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

varying vec4 oT4;

varying vec4 oT5;

varying vec4 oT6;

varying vec4 oT7;

//SAMPLERMASK-81

//SAMPLERTYPES-ffff3ffc

//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 88

vec4 pd0 = vec4( 2.200000047684, 1.0, 0.0, 0.0 );

vec4 r0;

vec4 r1;

vec4 r2;

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler0, oT0.xy );

r0.x = log2( r0.x );

r0.y = log2( r0.y );

r0.z = log2( r0.z );

r0.xyz = r0.xyz * pd0.xxx;

r2.x = exp2( r0.x );

r2.y = exp2( r0.y );

r2.z = exp2( r0.z );

r0.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r2.xyz ) + r2.xyz;

r1.w = gl_Color.w * pc[12].w;

r0.xyz = r0.xyz * gl_Color.xyz;

r0.w = r0.w * r1.w;

gl_FragData[0] = r0;

r0.x = oT5.z;

r0.y = oT6.z;

r0.z = oT7.z;

gl_FragData[1] = r0;

r0.xyz = oT4.xyz;

gl_FragData[2] = r0;

r0.xyz = pd0.yyy;

gl_FragData[3] = r0;

}

Compile of "lightmappedgeneric_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

varying vec4 oT4;

varying vec4 oT5;

varying vec4 oT6;

varying vec4 oT7;

//SAMPLERMASK-81

//SAMPLERTYPES-ffff3ffc

//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;

uniform sampler2D sampler7;

void main()

{

// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 92

vec4 pd0 = vec4( 2.200000047684, 1.0, 0.0, 0.0 );

vec4 r0;

vec4 r1;

vec4 r2;

r1 = texture2D( sampler7, oT0.xy );

r0 = texture2D( sampler0, oT0.xy );

r0.x = log2( r0.x );

r0.y = log2( r0.y );

r0.z = log2( r0.z );

r0.xyz = r0.xyz * pd0.xxx;

r2.x = exp2( r0.x );

r2.y = exp2( r0.y );

r2.z = exp2( r0.z );

r0.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r2.xyz ) + r2.xyz;

r1.w = gl_Color.w * pc[12].w;

r0.xyz = r0.xyz * gl_Color.xyz;

r0.w = r0.w * r1.w;

gl_FragData[0] = r0;

r0.x = oT5.z;

r0.y = oT6.z;

r0.z = oT7.z;

gl_FragData[1] = r0;

r0.xyz = oT4.xyz;

gl_FragData[2] = r0;

r0.xyz = pd0.yyy;

gl_FragData[3] = r0;

}

Compile of "Downsample_vs20" Failed:

//GLSLvp

#version 130

//ATTRIBMAP-00-50-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx

attribute vec4 v0; // 80000000 900f0000

attribute vec4 v1; // 80000005 900f0001

//SAMPLERMASK-0

//SAMPLERTYPES-ffffffff

//HIGHWATER-52

//HIGHWATERBONE-0

uniform vec4 vc[52];

uniform vec4 vcscreen;

varying vec4 oT0;

varying vec4 oT1;

varying vec4 oT2;

varying vec4 oT3;

void main()

{

// trans#0 label:vs-file Downsample_vs20 vs-index 0 vs-combo 0

vec4 vTempPos;

oT0.xy = v1.xy + vc[48].xy;

oT1.xy = v1.xy + vc[49].xy;

oT2.xy = v1.xy + vc[50].xy;

oT3.xy = v1.xy + vc[51].xy;

vTempPos = v0.xyzx * vc[0].yyyx + vc[0].xxxy;

gl_ClipVertex = vTempPos;

vTempPos.z = vTempPos.z * vc[0].z - vTempPos.w; // z' = (2*z)-w

vTempPos.y = -vTempPos.y; // y' = -y

vTempPos.xy += vcscreen.xy * vTempPos.w;

gl_Position = vTempPos;

}

Compile of "downsample_nohdr_ps20b" Failed:

//GLSLfp

#version 130

varying vec4 oT0;

varying vec4 oT1;

varying vec4 oT2;

varying vec4 oT3;

//SAMPLERMASK-1

//SAMPLERTYPES-fffffffc

//HIGHWATER-1

uniform vec4 pc[1];

uniform sampler2D sampler0;

void main()

{

// trans#0 label:ps-file downsample_nohdr_ps20b ps-index 0 ps-combo 0

vec4 pd1 = vec4( 0.25, 0.0, 0.0, 0.0 );

vec4 r0;

vec4 r1;

vec4 r2;

vec4 r3;

vec4 r4;

r0 = texture2D( sampler0, oT0.xy );

r3 = texture2D( sampler0, oT1.xy );

r2 = texture2D( sampler0, oT2.xy );

r1 = texture2D( sampler0, oT3.xy );

r4.x = log2( r0.x );

r4.y = log2( r0.y );

r4.z = log2( r0.z );

r4.xyz = r4.xyz * pc[0].www;

r4.x = exp2( r4.x );

r4.y = exp2( r4.y );

r4.z = exp2( r4.z );

r0.x = dot( r0.xyz, pc[0].xyz );

r0.xyz = r4.xyz * r0.xxx;

r4.x = log2( r3.x );

r4.y = log2( r3.y );

r4.z = log2( r3.z );

r4.xyz = r4.xyz * pc[0].www;

r4.x = exp2( r4.x );

r4.y = exp2( r4.y );

r4.z = exp2( r4.z );

r3.x = dot( r3.xyz, pc[0].xyz );

r3.xyz = r4.xyz * r3.xxx;

r0 = r0 + r3;

r3.x = log2( r2.x );

r3.y = log2( r2.y );

r3.z = log2( r2.z );

r3.xyz = r3.xyz * pc[0].www;

r3.x = exp2( r3.x );

r3.y = exp2( r3.y );

r3.z = exp2( r3.z );

r2.x = dot( r2.xyz, pc[0].xyz );

r2.xyz = r3.xyz * r2.xxx;

r0 = r2 + r0;

r2.x = log2( r1.x );

r2.y = log2( r1.y );

r2.z = log2( r1.z );

r2.xyz = r2.xyz * pc[0].www;

r2.x = exp2( r2.x );

r2.y = exp2( r2.y );

r2.z = exp2( r2.z );

r1.x = dot( r1.xyz, pc[0].xyz );

r1.xyz = r2.xyz * r1.xxx;

r0 = r1 + r0;

r0 = r0 * pd1.xxxx;

gl_FragData[0] = r0;

}

Loaded program cache file "glbaseshaders.cfg", total keyvalues: 266, total successfully linked: 266

Could not load program cache file glshaders.cfg

Could not find user GL shader cache file

Precache: Took 12768 ms, Vertex 928, Pixel 1367

Game.so loaded for "Team Fortress"

That said, you can set this behavior as the threadstarter said. You can also just run the game like this:

LC_NUMERIC=POSIX steam steam://rungameid/520

My question now: Where do we report bugs? Are the forums for reporting bugs or is there a bugtracker where we can report them?

Yes. They call functions this way: doSomething(float x, float y, ...). Now you can probably see the problem, they read the decimal point from somewhere (probably to create correct output for messages like errors or documentation). If its point then the function call looks like doSomething(3.14, 2.7) which is correct. If its comma the call is doSomething(3,14, 2,7), as you can see now they call 4 parameters instead of 2 and that causes errors.

That's actually a pretty dumb bug. I've already seen something like this in a CAD lib...

You can't. That's the point of the limited beta. Only those 1000 people can report bugs. Don't worry, they have found this one already.