Bug 3040

Summary: Bad interaction between xinerama and xfs
Product: xorg Reporter: Søren Sandmann Pedersen <soren.sandmann>
Component: Server/GeneralAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: high CC: alan.coopersmith, jay.cotton, jesse, jim, kem, moz, pma, rmj, roland.mainz
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 27592    

Description Søren Sandmann Pedersen 2005-04-15 13:09:49 UTC
This Red Hat bug:

   https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134930

is about clients freezing when using Xinerama and 16 bit fonts at the same time.
What is actually going on is that Xinerama is implemented by issuing an
ImageText16 on more than one screen. This causes both calls to try and fetch the
font from the font server, causing ClientSleep() to be called twice. However,
when the font finally arrives, the client awoken only once.
Comment 1 Alan Coopersmith 2005-05-04 07:54:11 UTC
See also https://bugzilla.mozilla.org/show_bug.cgi?id=136362
Comment 2 Daniel Stone 2007-02-27 01:26:19 UTC
Sorry about the phenomenal bug spam, guys.  Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Comment 3 Jim Paris 2007-10-14 17:03:18 UTC
Any suggestions on the right way to fix this?
I've been bitten by freezing xterms for years and would like to try to find a resolution.
Comment 4 Daniel Stone 2009-08-31 18:05:25 UTC
definitely not going to be fixed for 1.7/7.5.
Comment 5 Adam Jackson 2010-08-19 06:36:51 UTC
Should be fixed in xserver 1.9:

commit 3ab6cd31cbdf8095b2948034fce5fb645422d8da
Author: Adam Jackson <ajax@redhat.com>
Date:   Mon Aug 9 15:20:20 2010 -0400

    fonts: Fix refcounting for asynchronous font operations (#3040)
    
    When doing Xinerama, we'll dispatch font ops across all backend screens.
    If using a font server (such that some operations can sleep), we'll put
    the client to sleep once for each screen, but only wake up once, because
    we're trying to keep track of the sleep count in _each_ screen's
    closure.
    
    Instead, just ask the core whether the client is already asleep.
    
    Signed-off-by: Adam Jackson <ajax@redhat.com>
    Reviewed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.