Theory always looks good until you proof that it does not hold in reality:
This code, at least on WinXP Pro, will run until it reaches the point where the list should be replaced.
At that point BM locks completely but the CPU usage stay on 90%+
If you replace the 100mb with 10mb, it won't lock but hang for a few moments when reaching the border, starting with negative rate again and filling up till it reaches the lock point again and the game restarts. (I've added the functionality to output the rate at the regular GC Debug output). So you are right that the rate does not seem to have problems with negative values ... but it seems like the crashes are GC problem when freeing as the issue I have is quite similar to what was mentioned to be the bug problem (100% cpu usage but not doing anything anymore)
GCSetMode(1+4) Global a:String Local list:tlist = New tlist While True list.addlast(a) a :+ a If GCMemAlloced() > 100000000 list = CreateList() Wend
This code, at least on WinXP Pro, will run until it reaches the point where the list should be replaced.
At that point BM locks completely but the CPU usage stay on 90%+
If you replace the 100mb with 10mb, it won't lock but hang for a few moments when reaching the border, starting with negative rate again and filling up till it reaches the lock point again and the game restarts. (I've added the functionality to output the rate at the regular GC Debug output). So you are right that the rate does not seem to have problems with negative values ... but it seems like the crashes are GC problem when freeing as the issue I have is quite similar to what was mentioned to be the bug problem (100% cpu usage but not doing anything anymore)