Hola,
A ver, varias cosas. Primero, la situación que planteas aquí no es exactamente la misma que la que se planteaba en el primer hilo de la discusión de Turing. Allí Carlos Ivorra estaba usando una definición muy concreta de máquina de Turing, la que aparece en su libro, y según esa definición una máquina de Turing siempre hace algo, no existe la posibilidad "falta un input", porque los inputs en el sentido de esa definición de máquina de Turing no son más que una mera convención de empezar con la cinta escrita con una serie de 1's. Pero da igual que empieces con la cinta en blanco, con la cinta 101010101010, o cualquier combinación que se te ocurra: en cualquier caso, por la propia definición, la máquina hará algo y o bien parará o bien seguirá corriendo para siempre.
Aquí estás planteando una situación bien distinta, con un lenguaje de programación real para el que cabe la posibilidad de que falte un input (esto también puede ocurrir en según qué definiciones de máquina de Turing, puede ser que la máquina pare en el sentido de que deje de computar pero sin embargo no haya llegado al estado final y por tanto no nos dé ningún output: es una situación parecida al "error por falta de input" que propones). Pero esto no es ningún inconveniente para el problema de la parada, pues de hecho se pueden modificar las máquinas de Turing para que siempre paren (en el sentido de llegar al estado final) o entren en bucle (o incluso se pueden probar versiones del problema de la parada en cualquier variante: no existe una máquina que decida si una máquina dada con input dado para, entra en bucle, o da error, etc).
De todas maneras, creo que tu planteamiento es el siguiente (corrígeme si me equivoco). Consideras los programa (con 1 input digamos, para no complicarnos) P(n). Tienes otro programa U(m,n) que ejecuta el programa m con input n. Digamos que el código de U es N. ¿Qué pasa si intentamos ejecutar U(N,N)? U simula la ejecución de U con input N. Pero aquí falla algo: U necesita dos inputs y ahora sólo tiene uno, así que el programa falla por falta de inputs para U.
Bien, esto es cierto, pero no es lo que hace Turing. Te voy a mostrar que lo que hace Turing funciona de verdad, y lo voy a mostrar con un programa que se puede programar en la vida real (yo no lo voy a hacer, pero se puede hacer, y no me extrañaría que alguien lo hubiera hecho). del tipo que pides: un programa que se ejecuta a sí mismo pero sin embargo nunca acaba.
Considera U(m,n) un programa universal para programas con un input: si m es el código de un programa con un input P y n es el input, U(m,n) simula la ejecución de P(n).
Ahora considera el siguiente programa con un sólo input, U'(m). U'(m) primero hace una copia del input m y después ejecuta U(m,m). Bien, ahora sea N el código de U'. ¿Qué pasa si hacemos U'(N)? Veamos: U'(N) hace una copia de N y ejecuta U(N,N): es decir, simula la ejecución de U' con input N. Hemos vuelto al principio: esto es un bucle infinito. Si analizas bien este programa (que como he dicho, puede programarse de verdad) solventa la posible falta de input haciendo contínuamente copais de sí mismo e introduciéndolas como input para sí mismo en el siguiente paso: esa es la salida a la situación del párrafo anterior.
Si te fijas, lo que he hecho es exactamente lo mismo que hace Turing para llegar a la contradicción, sólo que en vez de aplicarlo a un programa que resuelve el problema de la parada (que no existe), lo he aplicado a un programa que sí existe: un programa universal.
Saludos