[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