https://issues.dlang.org/show_bug.cgi?id=18026
FeepingCreature <default_357-l...@yahoo.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |default_357-l...@yahoo.de --- Comment #15 from FeepingCreature <default_357-l...@yahoo.de> --- Shorter repro: module test; struct FormatSpec() {} void formatValueImpl(W, T)(W w, T obj, FormatSpec!() f) if (is(T == string)) { } void formatValueImpl(W, T)(W w, T val, FormatSpec!() f) if (is(T == int)) { import std.range : iota; static foreach (_; iota(1000)) { formatValueImpl!(W, string)(w, "", f); } } void formatValueImpl(W, T)(W w, T obj, FormatSpec!() f) if (false) {} void formatValueImpl(W, T)(W w, T obj, FormatSpec!() f) if (false) {} void formatValueImpl(W, T)(W w, T obj, FormatSpec!() f) if (false) {} void formatValueImpl(W, T)(W w, T obj, FormatSpec!() f) if (false) {} alias fvi_Type_1 = formatValueImpl!(void function(char c), int); alias fvi_Type_2 = formatValueImpl!(void function(const(char)[] s), int); alias fvi_Type_3 = formatValueImpl!(void delegate(char c), int); alias fvi_Type_4 = formatValueImpl!(void delegate(const char[]), int); alias fvi_Type_5 = formatValueImpl!(void delegate(const(char)[] s), int); void main() {} Seems to happen more reliably in gdb. Since it's a stack overflow, recommended to limit your stack size with ulimit -s 128 to test. --