Acabei de ficar sem pilha no trabalho, era um banco de dados e estava executando alguns threads, basicamente o desenvolvedor anterior jogou um grande array na pilha, e a pilha estava baixa de qualquer maneira. O software foi compilado usando o Microsoft Visual Studio 2015.
Mesmo que o encadeamento tenha ficado sem pilha, ele falhou silenciosamente e continuou, apenas a pilha transbordou quando chegou a hora de acessar o conteúdo dos dados na pilha.
O melhor conselho que posso dar é não declarar arrays na pilha - especialmente em aplicativos complexos e particularmente em threads, em vez disso, use heap. É para isso que existe;)
Além disso, lembre-se de que ele pode não falhar imediatamente ao declarar a pilha, mas apenas no acesso. Meu palpite é que o compilador declara a pilha no Windows "otimisticamente", ou seja, ele assumirá que a pilha foi declarada e tem tamanho suficiente até chegar a usá-la e então descobrir que a pilha não está lá.
Diferentes sistemas operacionais podem ter diferentes políticas de declaração de pilha. Por favor, deixe um comentário se você souber quais são essas políticas.