Simple example (one of many!) with a passed pawn:
[d]4k3/pp6/3KP3/8/8/8/P7/8 w - -
it is draw
It is win if the passed pawn e6 stays on e2 where his evaluate value (passed pawns) is nearly ZERO.
The other features of pawn (isolate, double, backward) are useless too.
In pawn endgames, the term advantage seems to be abstraction.
It needs to do one deeper step.
e.g.

Check material of pawn endgames (in material.cpp) and return it (if is) by a new factor e.g.: PAWN_ENDGAME = 253.
In evaluate function check factors earlier, before pawn hash table.
In the next line check this factor.
If true, omit the rest of evaluate and return the endgame part of value of position.
Maybe, the saved time will let Stockfish go deeper and check possible result.