Tkinter e hilo. sin espacio de pila (bucle infinito?)

Estoy experimentando con Tkinter y el mecanismo de hilos. ¿Alguien puede explicar por qué esto plantea la excepción:

<class '_tkinter.TclError'> out of stack space (infinite loop?)

y como puedo resolver esto? Debajo está el código. Por cierto, sé que algunas personas sugieren usar el módulo de subprocesos en lugar de subprocesos, pero por ahora me gustaría usar el módulo de subprocesos, que es más simple solo para presentarme al mecanismo.

from Tkinter import *
import thread
import time

def main_thread(master):

    try:
        frame = Frame(master)
        frame.pack(side='bottom')
        scrollbar = Scrollbar(master)
        scrollbar.pack(side='right',fill='y')

        t = "Title"
        title = StringVar()
        title.set(t)
        ttl = Label(master, textvariable=title, font=("Helvetica", 18))
        ttl.pack(side='top')
        cont = Text(master, font=("Helvetica",14), yscrollcommand=scrollbar.set)
        cont.pack(side='bottom')
        button = Button(frame,text="Exit", command=root.destroy)
        button.pack(side='bottom')

        n = 0
        while 1:
            n += 1
            cont.insert('end', str(n)+"\n")
            time.sleep(1)

    except Exception as e:
        print type(e), e

if __name__ == '__main__':

    root = Tk()
    root.title("My counting application")
    thread.start_new_thread(main_thread, (root,)) # FIXME: out of stack space (infinite loop?)
    root.mainloop()

Gracias luca

EDITAR

Resolví sustituyendo

    n = 0
    while 1:
        n += 1
        cont.insert('end', str(n)+"\n")
        time.sleep(1)

con

    n = 0
    def do_every_second(n):
        cont.insert("end", str(n) + "\n")
        n += 1
        master.after(1000, do_every_second, n)
    do_every_second(n)

y llamando

main_thread(root)

en lugar de

thread.start_new_thread(main_thread, (root,))

Respuestas a la pregunta(2)

Su respuesta a la pregunta