¿Por qué TimeSpan.ParseExact no funciona?

Esto es un poco extraño. El análisis de un campo de texto con un intervalo de tiempo válido falla si trato de ser preciso.

const string tmp = "17:23:24";
//works
var t1 = TimeSpan.Parse(tmp);
//fails
var t2 = TimeSpan.ParseExact(tmp, "hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

El segundo análisis falla con una excepción "La cadena de entrada no estaba en un formato correcto". desde DateTime.