I think I finally found a bug in the Linkage software that has been, well, bugging me, for months or even years. When deleting a link that has multiple fastened elements, sometimes the Linkage program would crash.

The bug only happened intermittently because the order of links and connectors in the internal lists depends on the order they are added. If a drawing element is added before a link and then both are deleted, the drawing element is deleted first. If the link was added first, it is deleted first. The bug was caused by a mistake in the code that only deleted the reference to the first drawing element fastened to a link. The code would keep the other reference even if the other drawing element is deleted and eventually, the code would try to use that other drawing element and crash.

Java and C# don’t let programmers make this sort of mistake. They simply keep objects in memory if they are references anywhere. In one of those languages, the program might work strangely because it thinks there is a link or connector that isn’t use anywhere (except in the mistake place) but it never frees that memory allowing for bad memory locations to get used.

There are beta version of the software here:

32 Bit Linkage for Modern Windows Operating Systems

32 Bit Linkage for Windows XP

64 Bit Linkage for Modern Windows Operating Systems (in case anyone want to try it)