[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Re: Cause of XRender/LD_BIND_NOW interaction found
From: Kevin Puetz <puetzk () iastate ! edu>
Date: 2002-02-25 22:41:13
[Download RAW message or body]
> > Can't we add such a dirty hack to kdeinit then? It's ugly but clearing a
> > few bytes once when KDE starts is not something that anyone will notice.
> AFAI understood puetzk, this hack has to go between the two XRENDER calls
> made by QApplication.
Well... it might be possible to do it from kdeinit (just have to poison *lots*
more stack, since qt is gonna use quite a bit). I have no great ideas on how
to guess how much it will take. Doing it right before the offending call
makes it pretty easy to guess at the stack depth required (and I just went
for a bunch of overkill anyway). There's also a chance that something in qt
will go deeper and put zero's back under us with this approach, which is why
doing it right before it's needed is more effective.
If we want to be underhanded about this, another fix is for qt to not call the
XRenderQueryExtension() first. :-). It's uneeded (we will safely get NULL for
supported visuals on displays that don't support RENDER in all versions of
libXrender) and not calling it makes XRenderFindVisualFormat work enough
harder that it poisons its own stack :-).
Another arguably more sane solution is for qt to statically link the contents
of libXrender from X4.2 (iirc, about 17k of code). Then it would just another
lib where qt has -system-xrender or -qt-xrender linked, at ./configure time.
Distros not shipping X4.2 would have to build with -qt-xrender. This would
also give non-xfree86 qt's RENDER support, just in case they ever connected
to an xfree86 display :-).
I really have no idea what course we want to take here, from a warning for
XF86 <4.2, to something like the above, or even using my stack-poisoning hack
(which, as others have pointed out, is a noop unless followed by broken code,
so it should be perfectly safe). Presumable QT's commercial customers (Opera,
Hancom, etc) are also suffering this bug, so at some point (ASAP!) we need to
present them with options and see what they want to do about it.
not using LD_BIND_NOW avoids it pretty much incidentally, in fact in basically
the same way my stack-poisoning hack does, before anybody calls that a
cleaner solution :-).
--
Kevin Alan Puetz
(515)572-0927
puetzk@iastate.edu
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic