On Fri, Nov 26, 2021 at 01:03:40PM +0100, Dominik Vogt wrote:
> Stuck with this one, ideas welcome:
>
> On Wed, Nov 24, 2021 at 03:22:54PM +0100, Dominik Vogt wrote:
> > ==8482== 38 (16 direct, 22 indirect) bytes in 1 blocks are definitely lost 
> > in loss record 184 of 536
> > ==8482==    at 0x48386AF: malloc (in 
> > /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==8482==    by 0x483ADE7: realloc (in 
> > /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> > ==8482==    by 0x4CE950B: XCreateFontSet (in 
> > /usr/lib/x86_64-linux-gnu/libX11.so.6.4.0)
> > ==8482==    by 0x18EB64: FlocaleGetFontSet (Flocale.c:1152)
> > ==8482==    by 0x18FD81: FlocaleGetFontOrFontSet (Flocale.c:1302)
> > ==8482==    by 0x18FD81: FlocaleLoadFont (Flocale.c:1479)
> > ==8482==    by 0x14A314: CMD_DefaultFont (builtins.c:3160)

It seems this is a bug in libx11-1.7.2.  The attached simple test
program also has the leak.

Ciao

Dominik ^_^  ^_^

--

Dominik Vogt
#include <assert.h>
#include <locale.h>
#include <stdlib.h>
#include <X11/Xlib.h>


#define FN "7x13"

int main(int argc, char **argv)
{
	Display *dpy;
	int i;
	char *locale;

	locale = setlocale(LC_CTYPE, "");
	assert(locale);
	dpy = XOpenDisplay(":0");
	assert(dpy);
	for (i = 0; i < 10; i++)
	{
		XFontSet fs;
		char **ml;
		int mc;

		fs = XCreateFontSet(dpy, FN, &ml, &mc, NULL);
		if (fs)
		{
			if (ml)
				XFreeStringList(ml);
			XFreeFontSet(dpy, fs);
		}
	}

	exit(0);
}

Reply via email to