Good evening all! I've been using ctwm continuously for about 20 years, so
let me first say thank you to everyone who's contributed during that time!
I'm currently trying to upgrade from 3.8.1 to 4.0.1, and I'm having some
trouble. I run two monitors, but WITHOUT Xinerama, so I have distinct
displays :0.0 and :0.1; maybe this is no longer a common thing to do? ctwm
reads one monitor's config from .ctwmrc and the other from .ctwmrc.1; I
have them use m4 to include a common file, which brings us to the first
problem. In parse_m4.c, we need a temp file:
static char tmp_name[] = "/tmp/ctwmrcXXXXXX";
For me, however, this code gets invoked TWICE. The second time around, the
string has been modified by mkstemp already, so it now contains an invalid
pattern, and the 2nd call to mkstemp fails with an Invalid Argument error.
I got around that by allocating the string on the heap instead:
tmp_name = malloc(20);
strcpy(tmp_name, "/tmp/ctwmrcXXXXXX");
The second problem, however, was out of my depth. It's an assertion
failure in otp.c. I turned on OTP debugging, and this is what I get:
InsertOwl Above
InsertOwlAbove owl->pri=8 w=0xa000c6 parent_vs:(x,y)=(0,0)
other_owl->pri=8 w=0xa0008d parent_vs:(x,y)=(0,0)
Bottom-most window in VirtualScreen or window box
OtpCheckConsistencyVS: vs:(x,y)=(0,0)
XQueryTree: 16 children:
[0]=a000c6 [1]=a0009e [2]=a000a0 [3]=a000a8 [4]=a000a9 [5]=a000aa
[6]=a000ab [7]=a000ac [8]=a000ad [9]=a000ae [10]=a000af [11]=a000b0 [12]=a000b1
[13]=a000b2 [14]=a000b3 [15]=a000c4
checking owl: pri 8 w=a0003f 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=a00043 stack=-1 title=TWM Icon Manager occupation=2
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a00047 stack=-1 title=TWM Icon Manager occupation=4
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a0004b stack=-1 title=TWM Icon Manager occupation=8
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a0004f stack=-1 title=TWM Icon Manager occupation=10
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a00053 stack=-1 title=TWM Icon Manager occupation=20
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a00057 stack=-1 title=TWM Icon Manager occupation=40
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a0005b stack=-1 title=TWM Icon Manager occupation=80
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a0005f stack=-1 title=TWM Icon Manager occupation=100
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a00063 stack=-1 title=TWM Icon Manager occupation=200
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a0007c stack=-1 title=WorkSpaceManager occupation=3ff
vs:(x,y)=(0,0) parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a0008d stack=-1 title=Occupy Window occupation=0
vs:NULL parent_vs:(x,y)=(0,0) Window
checking owl: pri 8 w=a000c6 stack=-1 title=TWM Icon Manager occupation=0
vs:(x,y)=(0,0) parent_vs:(x,y)=(0,0) Window
search for owl in stack -> i=0
nwins: 12
ctwm4: /usr/local/src/ctwm-4.0.1/otp.c:339: OtpCheckConsistencyVS:
Assertion `(nwins <= 0) && (nwins >= -1)' failed.
I'm rather at a loss with this one, so I'm hoping you can help. On a lark,
I tried simply commenting out the assertion; this allowed ctwm to start,
but it then crashed as soon as I tried to change workspaces. However, I
was able to verify that 4.0.1 DOES fix the issues I'm having with chromium,
so I'm motivated to get this upgrade to work.
In case you need to refer to my configuration files, they are temporarily
online (with the leading dot removed) here:
http://past.consistent.org/temp/ctwm/
Thanks in advance for your thoughts on how to proceed.
Terran