Bug#622401: xserver-xorg-video-trident: Error message and exit with iceape and iceweasel. One solution.
On Sun, May 08, 2011 at 10:26:00AM +0200, Julien Cristau wrote:
> On Sun, May 8, 2011 at 01:25:01 +0000, Bjarni Ingi Gislason wrote:
>
> > The "X" server issues "PreInit" that maps and unmaps. Then it
> > issues "ScreenInit" which maps.
> >
> > "iceweasel" causes a second map though "ScreenInit", which
> > leads to error.
> >
> That should never happen. ScreenInit is called at the start of a
> session, and CloseScreen should be called before the next ScreenInit.
> That's not a client bug.
>
You are probably right. I have made some more tests in the
trident driver code. Unmapping is only done in "CloseScreen",
if "vtSema" is true. If I switch terminals after issuing a
single "X &" command to issue "iceweasel", then "vtSema" is false
in the next "CloseScreen". "iceweasel" switches automatically to
the X display, but "xpdf" does not do it.
If I transfer the "TRIDENTUnmapMem(pScrn)" subroutine outside the
"if (pScrn->vtSema)" block, then the missing unmapping occurs.
A comment in the code before "CloseScreen" is:
"It should really also unmap the video memory too."
The conditions to trigger the error (using "libpciaccess") are
1) change from the X display (pure server, e.g. "X -retro &") to
a text terminal
2) issue a X client (in the background) that automatically switches
to the X display.
Other video drivers should be tested in this way.
--
Bjarni I. Gislason
Reply to: