[Python-bugs-list] [ python-Bugs-440464 ] Threading Program Crashes Python 2.1

noreply@sourceforge.net noreply@sourceforge.net
Wed, 11 Jul 2001 11:22:34 -0700


Bugs item #440464, was opened at 2001-07-11 11:13
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=440464&group_id=5470

Category: IDLE
Group: None
Status: Closed
Resolution: Wont Fix
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: Threading Program Crashes Python 2.1

Initial Comment:
import threading
from time import time, ctime, sleep

class MyClass(threading.Thread):
    def __init__(self, args):
        threading.Thread.__init__(self)
        self.args = args

    def run(self):
        while 1:
            print self.args

    def printText(self, foo):
        self.foo = foo
        print self.foo

Biff = MyClass(4)
Biff.start()    
Biff.printText("This is a string!")


The above code crashes IDLE when run under NT4. The 
error message I get is this:

4Traceback (most recent call last):
  File "C:\Python21\Tools\idle\idle.pyw", line 2, in ?
    import idle
  File "C:\Python21\Tools\idle\idle.py", line 12, in ?
    PyShell.main()
  File "C:\Python21\Tools\idle\PyShell.py", line 777, 
in main
    root.mainloop()
  File "c:\python21\lib\lib-tk\Tkinter.py", line 930, 
in mainloop
    self.tk.mainloop(n)
  File "c:\python21\lib\lib-tk\Tkinter.py", line 1289, 
in __call__
    self.widget._report_exception()
  File "c:\python21\lib\lib-tk\Tkinter.py", line 1061, 
in _report_exception
    root.report_callback_exception(exc, val, tb)
  File "c:\python21\lib\lib-tk\Tkinter.py", line 1541, 
in report_callback_exception
    sys.stderr.write("Exception in Tkinter callback\n")
  File "C:\Python21\Tools\idle\PyShell.py", line 676, 
in write
    self.shell.write(s, self.tags)
  File "C:\Python21\Tools\idle\PyShell.py", line 663, 
in write
    OutputWindow.write(self, s, tags, "iomark")
  File "C:\Python21\Tools\idle\OutputWindow.py", line 
37, in write
    self.text.insert(mark, str(s), tags)
  File "C:\Python21\Tools\idle\Percolator.py", line 
25, in insert
    self.top.insert(index, chars, tags)
  File "C:\Python21\Tools\idle\PyShell.py", line 143, 
in insert
    UndoDelegator.insert(self, index, chars, tags)
  File "C:\Python21\Tools\idle\UndoDelegator.py", line 
81, in insert
    self.addcmd(InsertCommand(index, chars, tags))
  File "C:\Python21\Tools\idle\UndoDelegator.py", line 
116, in addcmd
    cmd.do(self.delegate)
  File "C:\Python21\Tools\idle\UndoDelegator.py", line 
216, in do
    if text.compare(self.index1, ">", "end-1c"):
  File "c:\python21\lib\lib-tk\Tkinter.py", line 2626, 
in compare
    return self.tk.getboolean(self.tk.call(
TclError: expected boolean value but got ""
Hit return to exit...

Sometimes IDLE just dies all together w/o displaying 
anything.

----------------------------------------------------------------------

>Comment By: Tim Peters (tim_one)
Date: 2001-07-11 11:22

Message:
Logged In: YES 
user_id=31435

Just adding that you *can* use threads w/ Tkinter apps, 
provided that you ensure "the main thread" is the only one 
that ever calls into Tk or gets called back from it.  So do 
your GUI (incl. console output:  no "print"-to-window in 
threads!) stuff in the main thread exclusively.  I gave an 
example of this on c.l.py within the last month, using a 
Queue to communicate window-output requests from worker 
threads to the main thread.

----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-07-11 11:16

Message:
Logged In: YES 
user_id=6380

Alas, using threads and Tkinter together does not work, and
since IDLE is Tkinter-based, you can't do much with threads
in IDLE.

Your example should work fine in the command-line
interpreter.

I'm closing this bug report since there's really nothing we
can do about this.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=440464&group_id=5470