Potential bug in xorg-xserver?

Dr.-Ing. Dieter Jurzitza dieter.jurzitza at t-online.de
Fri Feb 17 19:47:50 UTC 2017


Dear listmembers,
I have already tried to send this email to the list, however, probably due to 
the fact that I had the "bad" file attached (the one I can kill the xserver 
with) it did not get through, so, here once again:

OS: openSUSE Leap 42.2, xorg-x11-xserver7.6_1.18.3
Condition: start tgif with the file attached (if someone would like the file 
for test purposes, please let me know how to manage to get the file uploaded 
somewhere ...)
Result: server crash


When tgif is started on my machine with the attached file, the X-server 
crashes badly, ending at the login - screen.

The logfile Xorg.log.old states:


fred at djunix-office:~/x11-crash> cat errorlog2 
[ 10168.529] Failed to compile VS: 0:13(43): error: `pos' undeclared
0:13(14): error: operands to arithmetic operators must be numeric
0:13(13): error: operands to arithmetic operators must be numeric

[ 10168.529] Program source:
#version 130
attribute vec3 primitive;
varying float dash_offset;
uniform vec2 fill_offset;
uniform vec2 fill_size_inv;
varying vec2 fill_pos;
uniform float dash_length;
uniform vec4 v_matrix;
void main() {
       dash_offset = primitive.z / dash_length;
       gl_Position.xy = primitive.xy.xy * v_matrix.xz + v_matrix.yw;
       gl_Position.zw = vec2(0.0,1.0);
       fill_pos = (fill_offset + primitive.xy + pos) * fill_size_inv;
}
[ 10168.529] (EE) 
Fatal server error:
[ 10168.529] (EE) GLSL compile failure
[ 10168.529] (EE) 
[ 10168.529] (EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
[ 10168.529] (EE) Please also check the log file at "/var/log/Xorg.0.log" for 
additional information.
[ 10168.529] (EE) 
[ 10168.529] (II) AIGLX: Suspending AIGLX clients for VT switch
[ 10168.903] (EE) Server terminated with error (1). Closing log file.

This resembled me to the bug fixed by Michel Dänzer (see Bug 97300)
--- glamor/glamor_composite_glyphs.c
+++ glamor/glamor_composite_glyphs.c
@@ -199,7 +199,8 @@  static const glamor_facet 
glamor_facet_composite_glyphs_12
     .vs_vars = ("attribute vec2 primitive;\n"
                 "attribute vec2 source;\n"
                 "varying vec2 glyph_pos;\n"),
-    .vs_exec = (GLAMOR_POS(gl_Position, primitive)
+    .vs_exec = ("       vec2 pos = vec2(0,0);\n"
+                GLAMOR_POS(gl_Position, primitive.xy)
                 "       glyph_pos = source.xy * ATLAS_DIM_INV;\n"),
     .fs_vars = ("varying vec2 glyph_pos;\n"),
     .fs_exec = ("       vec4 mask = texture2D(atlas, glyph_pos);\n"),

however, this did not fix the issue. What is somewhat strange is the fact that 
the error states "primitive.xy.xy", please note the double referencing. I 
could track this down to the line 81 in the (suse -patched ...) file 
glamor/glamor_program.c, where the line with "fill_pos = ...." orignates from 
- but my knowledge on x11 and C does not bring me further.

Mr. Anholt: Michel Dänzer told me to probably CC you, so I did .... 

Thank you very much for looking into this,
best regards





Dieter Jurzitza

-- 
-----------------------------------------------------------
Dr.-Ing. Dieter Jurzitza                    76131 Karlsruhe



More information about the xorg-devel mailing list