https://issues.dlang.org/show_bug.cgi?id=16564
--- Comment #7 from Temtaime <temta...@gmail.com> --- Oh, sorry, my mistake import std.stdio, std.range, std.random, std.typecons, std.algorithm, std.experimental.allocator.building_blocks, core.memory; void main() { ubyte[128 * 1024] b; auto alloc = KRRegion!()(b); //alloc.switchToFreeList; auto k = alloc.allocate(128); assert(alloc.deallocate(k)); assert(alloc.empty == Ternary.yes); } I don't know why but this simplest example asserts. More complex tests are passed. Also it passes if the switch in uncommented --