Jeffrey Barish wrote: > I have a program that uses multithreading to monitor two loops. When > something happens in loop1, it sends a message to loop2 to have it execute > a command. loop2 might have to return a result. If it does, it puts the > result in a queue. loop1, meanwhile, would have blocked waiting for > something to appear in the queue. The program works for a while, but > eventually freezes. I know that freezing is a sign of deadlock. However, > I put in print statements to localize the problem and discovered something > weird. The freeze always occurs at a point in the code with the following > statements: > > print "about to try" > try: > print "in try" > <do something> > > I get "about to try", but not "in try". Is this observation consistent with > the deadlock theory? If not, what could be making the program freeze at > the try statement? I wrote a test program using the same techniques to > illustrate the problem, but the test program works perfectly. I could post > it, though, if it would help to understand what I am doing -- and what > might be wrong in the real program.
The key in writing a test code is to reduce the buggy code until you can't reduce anymore without losing the bug. It is sometimes difficult to write a buggy test code... try writing the test code again with that technique, and post it -- http://mail.python.org/mailman/listinfo/python-list