Red Hat Bugzilla – Bug 90126
XFree86 mishandles very large numbers of screens
Last modified: 2007-04-18 12:53:26 EDT
Description of problem:
Configure a video wall. Try and run X11 on it and it aborts with
Fatal server error:
AddScreen/ScreenInit failed for driver 16
If it just skipped extra displays it couldnt cope with that wouldn't be too bad
but it aborts the server instead which sucks 8)
(Of course bumping X to 32 heads would be nice 8))
After discussing with XFree86 developers, increasing MAXSCREENS would break
binary compatibility of the server<->module interface, and so can not be
done until a major server version bump (ie: 5.0). Additionally, doing it
as a customized build where bin compat doesn't matter will result in some
amount of wasted resources do to fixed sized arrays that get allocated the
size of MAXSCREENS, or some other similarly poorly implemented code.
So for a short term hack, you can try increasing MAXSCREENS to 32 or whatever
The protocol maximum is 256 screens, which is probably what the hard coded
limit should be when the code is refactored to be dynamic for 5.0.
Note also however, that someone mentioned that there might be somewhere in
the server in which screens are manipulated via a 32bit integer bitmask or
somesuch. If so, this would imply that going beyond 32 screens (possibly 31
if sign issues are present) would also break things. I haven't attempted
to substantiate this last claim though.
Closing as UPSTREAM, and linking to upstream bug report to track this for
XFree86 5.0 et al.
Cleaning up UPSTREAM flagged bugs, moving this one to DEFERRED for long term
The MAXSCREENS problem has patches floating around which bypass this
problem but change ABI incompatibly, so are unsuitable for any existing
OS release. It's not possible to solve this issue without breaking ABI,
so this will become an upstream change in a future X.Org major release.
It might be in X11R7 later this year, but it hasn't been decided yet I
don't think. A quick search of X.org bugzilla didn't yield a bug that
is tracking this, but I know several developers have thought about it
at least and discussed different solutions.
The best place to track this is on email@example.com or to file an
Xorg report to track it.
Setting status to UPSTREAM.