Tkinter e linha. sem espaço na pilha (loop infinito?)

Estou experimentando o Tkinter e o mecanismo de threads. Alguém pode explicar por que isso gera a exceção:

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

e como posso resolver isso? Abaixo está o código. BTW, eu sei que algumas pessoas sugerem usar o módulo de encadeamento em vez de encadeamento, mas por enquanto eu gostaria de usar o módulo de encadeamento que é mais simples apenas para me apresentar ao 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()

Obrigado Luca

EDITAR

Eu resolvi substituir

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

com

    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)

e chamando

main_thread(root)

ao invés de

thread.start_new_thread(main_thread, (root,))

questionAnswers(2)

yourAnswerToTheQuestion