Matthew Fuller wrote:

> easy enough to just grab and run trunk instead of the release; there's
> not a ton of churn between.

Done.  From now on everything I say will refer to trunk, although I'm not
changing the subject line for threading reasons.
 
> So, as that local bit of code stands, I'd say the assertion _is_ wrong
> for multi-Screen incarnations, so just removing it isn't exactly
> wrong.  Might be worth looking more into what crashes later, whether
> it's in OTP or elsewhere, to see if it's strictly related or
> coincidental.

When I remove that assertion, I can run until I try to change workspaces.
At that point I get another OTP related error:

    ReparentWindow: w=16000f1 type=0
    InsertOwlAbove owl->pri=8 w=0x16000f1 parent_vs:(x,y)=(0,0)
      other_owl->pri=8 w=0x16000ed parent_vs:(x,y)=(0,0)
    General case
    OtpCheckConsistencyVS: vs:(x,y)=(0,0)
    XQueryTree: 49 children:
    [0]=1600002 [1]=400002 [2]=c00002 [3]=800002 [4]=c00004 [5]=1200002 
[6]=160002e [7]=160002f [8]=1600030 [9]=1600031 [10]=1600032 [11]=1600033 
[12]=1600034 [13]=1600035 [14]=1600036 [15]=1600037 [16]=1600038 [17]=1600039 
[18]=160004b [19]=160004f [20]=1600053 [21]=1600057 [22]=160005b [23]=160005f 
[24]=1600063 [25]=1600067 [26]=160006b [27]=160006f [28]=1600087 [29]=1600098 
[30]=16000a4 [31]=1600153 [32]=1600160 [33]=160016e [34]=160017c [35]=160018a 
[36]=1600198 [37]=16001a6 [38]=16000b1 [39]=16000b2 [40]=16000b3 [41]=1200045 
[42]=140001d [43]=180001d [44]=100001d [45]=1a00002 [46]=1e0001d [47]=1c0001d 
[48]=200001d 
    checking owl: pri 8 w=160004b stack=-1 title=TWM Icon Manager occupation=1  
vs:(x,y)=(0,0) parent_vs:(x,y)=(0,0) Window

    ...

    checking owl: pri 8 w=16000f1 stack=30 title=TWM Icon Manager occupation=4  
vs:(x,y)=(0,0) parent_vs:(x,y)=(0,0) Window
    search for owl in stack -> i=49
    ctwm4: /usr/local/src/ctwm-trunk/otp.c:309: OtpCheckConsistencyVS: 
Assertion `i < nchildren && "Window was not found in stack"' failed.

I don't deeply understand this, but it seems consistent with your idea that
the issues come from OTP making assumptions that do not hold in the case of
multiple displays.  If I also remove both of these assertions at line 308:

    assert(i > stack && "Window not in good place in stack");
    assert(i < nchildren && "Window was not found in stack");

I can then get ctwm to run with no obviously broken behavior.

Reply via email to