I found a bug in CTIME, which only hits when you run ctime -stats on a .ctm file on which a single build is recorded. That is, if you do this:
1
2
3
4
ctime -begin tst.ctm  # tst.ctm is created here
ctime -end tst.ctm
ctime -stats tst.ctm
----> segmentation fault

After the next build is recorded, it works fine. I tracked the offender to this line of code inside the Stat() function:
1
2
3
4
5
6
7
8
9
            UpdateStatGroup(Group, Entry);
            UpdateStatGroup(&AllStats, Entry);

            AllMs += (double)Entry->MillisecondsElapsed;

            {
                int GraphIndex = (int)(((double)(ThisDayIndex-FirstDayAt)/DaySpan)*(double)GRAPH_WIDTH);
                UpdateStatGroup(TotalGraph.Buckets + GraphIndex, Entry);   // <------ problem
            }

"TotalGraph.Buckets+GraphIndex" accesses illegal memory. This was as far as I got. Of course, this is not a critical bug, since after the first couple of uses it goes away, and I imagine most people will have missed it completely.