On Fri, Feb 01, 2013 at 09:09:56AM +0100, Maarten Lankhorst wrote:
> Op 01-02-13 01:42, Peter Hutterer schreef:
> > On Thu, Jan 31, 2013 at 03:55:57PM +0100, Maarten Lankhorst wrote:
> >> It looks like xorg-gtest and libX11 have a different idea of where the 
> >> error handler pointer is supposed to point at.
> >> Check for the default handler returned from XSet*ErrorHandler by setting a 
> >> NULL error handler first.
> >>
> >> Signed-off-by: Maarten Lankhorst <[email protected]>
> >> ---
> >> Probably some funny interaction with symbol lookup, presumably
> >> _XDefault*Error points to some stub first or something,
> >>
> >> I don't really want to know, but it fixes up xorg-gtest 0.7.0
> >> enough to make it run all selftests again on precise.
> > You'll need to figure out why this doesn't work on precise. XOpenDisplay()
> > calls XSetErrorHandler(NULL) if _XErrorFunction is NULL, which will install
> > the default error handler. And _XErrorFunction should only be non-NULL if
> > something else has set it already. So something is out-of-order here and we
> > need to figure out what.
> >
> I think it's due to lazy symbol lookup, old_handler correctly points to 
> _XDefaultIOError, but when
> I print the pointer to _XDefaultIOError before the call it points to 
> something different, presumably to
> some stub that would look up _XDefaultIOError.
> 
> When I added a breakpoint in the debug branch, and printed out old_handler 
> and _XDefaultIOError,
> it would happily print that they were equal, so the only logical explanation 
> is that the application
> had a different pointer for _XDefaultIOError than the library did. That's not 
> to say either is incorrect,
> but it is likely that the application's pointer pointed to a stub that would 
> do the symbol lookup then
> call the real function.

fair enough. Applied, thanks.

Cheers,
   Peter
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to