Let us look at this position.
[FEN "4k3/8/8/p1p1p1p1/P1P1P1P1/8/8/4K3 w - - 0 1"]
This is obviously a draw. Analyzing this with the Stockfish engine says that it is a balanced position. However, Stockfish does not recognize that it is a draw.
Slightly rearranging the pawns, we receive a similar position that is an obvious draw.
[FEN "4k3/3p4/p1pPp3/P1P1P1p1/6P1/8/8/4K3 w - - 0 1"]
Here, Stockfish says that white has an advantage of +0.7.
Where does this miscalculation come from? I understand that draws in these positions cannot be detected from tablebases, as there are still too many pieces on the board. It seems that these special positions are called Pawn Rams or Blockages.
The chess programming article about Blockage Detection provides code for detecting blockages, but I do not understand how it works.
What are the underlying factors that make draw detection so hard from a computational point of view?