Subject: Re: bug#74981: 29.4; X11 crash when minibuffer text scale is increased greatly

From: Joseph Turner <[email-masked]>
Date: Sat, 21 Dec 2024 11:03:48 -0800

Eli Zaretskii <[email-masked]> writes:

>> From: Joseph Turner <[email-masked]>
>> Cc: [email-masked], Visuwesh <[email-masked]>
>> Date: Fri, 20 Dec 2024 18:15:33 -0800
>> 
>> Eli Zaretskii <[email-masked]> writes:
>> 
>> >> Date: Thu, 19 Dec 2024 14:06:59 -0800
>> >> From:  Joseph Turner via "Bug reports for GNU Emacs,
>> >>  the Swiss army knife of text editors" <[email-masked]>
>> >> 
>> >> Tested on two window managers, exwm and dwm, with emacs -Q:
>> >> 
>> >> Open the minibuffer, e.g., with M-x eval-expression.  Run
>> >> text-scale-adjust with C-x C-=. The minibuffer text gets
>> >> bigger. Repeatedly press C-= until X11 crashes, bringing you back
>> >> to the
>> >> login prompt.
>> >
>> > Thanks.
>> >
>> > I can't reproduce this, but I'm not on X11. What happens here is
>> > that
>> > after many "C-x C-= C-=" presses, the minibuffer (whose contents
>> > becomes illegible long before that) starts blinking, and I need to
>> > C-g
>> > out of it (or C-x C-c to kill Emacs). This seems harmless enough,
>> > since the enlarged font is not useful past the point where the
>> > minibuffer no longer shows the minibuffer text.
>> >
>> > Can you run this under GDB, and when Emacs crashes, type
>> >
>> >   (gdb) thread apply all bt
>> >
>> > and post everything GDB produces as result?
>> 
>> Since the entire X11 session crashes, I'm not sure how to do this.
>> 
>> Please advise.  Thanks!
>
> I thought by "X11 session crashes" you meant the Emacs session.  If
> X11 itself crashes, then I'd first look in the syslog file for any
> more detailed information about the crash, and then look for
> description of similar X11 crashes on the Internet.  Also, perhaps
> upgrading or downgrading your X11 version would fix the problem.

The relevant part of ~/.local/share/xorg/Xorg.0.log.old appears to be:

[173297.242] Failed to compile FS: 0:1(10): error: GLSL 1.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES

[173297.242] Program source:
#version 130
#ifdef GL_ES
precision mediump float;
#endif
#define RepeatNone               	      0
#define RepeatNormal                     1
#define RepeatPad                        2
#define RepeatReflect                    3
#define RepeatFix		      	      10
uniform int 			source_repeat_mode;
uniform int 			mask_repeat_mode;
vec2 rel_tex_coord(vec2 texture, vec4 wh, int repeat) 
{
	vec2 rel_tex; 
	rel_tex = texture * wh.xy; 
	if (repeat == RepeatFix + RepeatNone)
		return rel_tex; 
	else if (repeat == RepeatFix + RepeatNormal) 
		rel_tex = floor(rel_tex) + (fract(rel_tex) / wh.xy); 
	else if (repeat == RepeatFix + RepeatPad) { 
		if (rel_tex.x >= 1.0) 
			rel_tex.x = 1.0 - wh.z * wh.x / 2.; 
		else if (rel_tex.x < 0.0) 
			rel_tex.x = 0.0; 
		if (rel_tex.y >= 1.0) 
			rel_tex.y = 1.0 - wh.w * wh.y / 2.; 
		else if (rel_tex.y < 0.0) 
			rel_tex.y = 0.0; 
		rel_tex = rel_tex / wh.xy; 
	} else if (repeat == RepeatFix + RepeatReflect) {
		if ((1.0 - mod(abs(floor(rel_tex.x)), 2.0)) < 0.001)
[173297.242] (EE) 
Fatal server error:
[173297.242] (EE) GLSL compile failure
[173297.242] (EE) 
[173297.242] (EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[173297.242] (EE) Please also check the log file at "/home/joseph/.local/share/xorg/Xorg.0.log" for additional information.
[173297.242] (EE) 
[173297.242] (II) AIGLX: Suspending AIGLX clients for VT switch
[173297.256] (EE) Server terminated with error (1). Closing log file.

I looked up keywords like "GLSL compile failure" but to no avail.

> Perhaps you can run X11 itself under GDB, but I don't know how.
> Sorry.
>
> One other idea is to change the font you use for the default face,
> maybe it's the font which causes the problem. Cairo could also be the
> culprit, so using a different version of Cairo or a non-Cairo build
> might solve the problem.
>
> Finally, can I ask why you need to repeatedly press C-= so many times?
> is that a real-life need or just a curiosity?

I initially did it in an attempt to see greater detail in the Chinese
characters I'd typed in, but it's not something I need to do.  This is a
very low-priority issue for me.

Joseph