On Wed, May 30, 2018 at 10:54 PM, Luca Boccassi <bl...@debian.org> wrote:
> Given there have been multiple reports, I'll upload a new version of
> glx-alternatives that moves the module redirection from modules/linux
> to modules/drivers (where there is no clash).
>
> Before I do that, given you had the issue and moving the module fixes
> it, could you please double check that moving the symlink from
> modules/linux to modules/drivers (NOT modules/extensions, and putting
> back what was there) doesn't cause more problems?
>
> Still not sure why my Sid installation was working just fine...

No, that doesn't work for me.

Check xorg-server-1.20.0/hw/xfree86/loader/loadmod.c. It's some very
confused code. There's a friendly-looking array:

/* Standard set of module subdirectories to search, in order of preference */
static const char *stdSubdirs[] = {
    "",
    "input/",
    "drivers/",
    "extensions/",
    NULL
};

But that comment is a lie. The FindModulesInSubDir() function recurses
in subdirectories! So the loader will start with the first entry of
that array, but it will search recursively and find either
extensions/libglx.so or linux/libglx.so depending on readdir()
order... This is why this bug occurred only on some systems and not on
others. It also means that your proposed fix won't work.

In xserver 1.19, the linux/ subdir was _prepended_ to the subdir list,
so there the nvidia libglx.so was reliably selected.

I don't know how to fix this without patching the xserver code. Maybe
it's possible to manipulate the search path with an xorg.conf
fragment?

Best regards,
Peter

Reply via email to