Attempting to use Composite using an s3virge in cfb mode makes the server
segfault. It works fine in fb mode, which is the default.
This will affect:
- all sunffb and sunleo users
- s3virge users who say Option "UseFB" "no" in xorg.conf
- i740, nsc, s3, siliconmotion, and via users who explicitly built their drivers
to use cfb instead of fb
- people building Xsun from our tree (assuming Xsun even builds anymore, and
that it builds with the composite wrapper)
Since except for sunffb and sunleo cfb is not the default, I'm tempted to say
the right fix is to migrate those two to fb and remove cfb altogether. Note
though that the overlay framebuffer cores (xf8_16bpp etc) use cfb too, and I
don't know how hard it would be to switch them to fb.
At any rate this should either be fixed or documented for the release.
Created attachment 665 [details]
backtrace from the crash
from an optimized build, so the function arguments for the innermost frame are
a little funky. nonetheless the segfault does happen on the indicated line,
because 'ps' is completely bogus. PictureScreenPrivateIndex is -1 at this
point, and we call GetPictureScreen() about five lines earlier, so we're
indexing off the head of the array. boom.
cfb has no Render support whatsoever. Composite requires Render but doesn't
check for its presence first. the latter part we should fix, but Render on cfb
is not worthwhile.
knocking this down from critical since the general opinion is that cfb isn't
worth spending energy on anymore.
Created attachment 3572 [details] [review]
refuse to initialize Composite on a given screen if Render hasn't been set up
yet. haven't run-tested this at all yet, but it should work; since Composite
has to wrap Render and not the other way around, Render should always have
inited when this gets called.
Sorry about the phenomenal bug spam, guys. Adding xorg-team@ to the QA contact so bugs don't get lost in future.
ajax, is this worth committing?
This is fixed in head now, thanks Eric.