In informatica, uno stack overflow avviene quando è richiesto l'uso di una quantità troppo elevata di memoria nello stack.
In molti linguaggi di programmazione, lo stack delle chiamate contiene una quantità limitata di memoria, fissata di solito all'avvio del programma. La dimensione dello stack dipende da molteplici fattori, inclusi il linguaggio di programmazione, l'architettura della macchina, l'uso del multithreading e la disponibilità di memoria nel sistema. Quando è usata troppa memoria nello stack si dice che avviene un overflow, e si verifica un crash del programma[1]. Questa classe di bug solitamente è causata da uno dei due tipi di errori di programmazione[2]: la ricorsione infinita e l'uso di variabili di stack molto grandi.