More info on this. I may have captured the offending call; it seems that compiz.real gets stuck in a call to XGetWindowAttributes. When I run nautilus and X freezes, ltrace -cp`pgrep compiz.real` shows something like this (remaining entries omitted):
A detailed ltrace log further reveals this (different invocation, times will not match):
$ ltrace -fTp`pgrep compiz.real` &> compiz.ltrace & nautilus -n
. . . (several calls to XGetWindowAttributes that return in well under 100msec)
XGetWindowAttributes(0x1c17e40, 0x160001d, 0x7fff4a1be190, 1, 0x1c18898) = 1 <35.761979>
. . . (more calls)
The second parameter to XGetWindowAttributes, Window whose attributes are to be obtained, matches Nautilus desktop window as returned by xpropget: xwininfo: Window id: 0x160001d "x-nautilus-desktop".
I think this is ripe to be forwarded to the compiz clique and let them duke it out with the Xorg guys. :)
More info on this. I may have captured the offending call; it seems that compiz.real gets stuck in a call to XGetWindowAttri butes. When I run nautilus and X freezes, ltrace -cp`pgrep compiz.real` shows something like this (remaining entries omitted):
$ ltrace -cp`pgrep compiz.real` ------- ------ butes
% time seconds usecs/call calls function
------ ----------- ----------- --------- -------
67.02 33.785698 3753966 9 XGetWindowAttri
28.03 14.128147 220752 64 poll
. . .
A detailed ltrace log further reveals this (different invocation, times will not match):
$ ltrace -fTp`pgrep compiz.real` &> compiz.ltrace & nautilus -n butes that return in well under 100msec) butes(0x1c17e40 , 0x160001d, 0x7fff4a1be190, 1, 0x1c18898) = 1 <35.761979>
. . . (several calls to XGetWindowAttri
XGetWindowAttri
. . . (more calls)
The second parameter to XGetWindowAttri butes, Window whose attributes are to be obtained, matches Nautilus desktop window as returned by xpropget: xwininfo: Window id: 0x160001d "x-nautilus- desktop" .
I think this is ripe to be forwarded to the compiz clique and let them duke it out with the Xorg guys. :)