Tim Peters wrote:
[Peter Hansen]
If you hit Ctrl-C while the join's wait() is occurring,
you'll raise a KeyboardInterrupt and bypass the
release() call.

Then you're doing something other than what you described.  Here on
WinXP SP2 w/ Python 2.4c2:
[snip]
I can hit Ctrl+C all day at this point, and nothing (visible) happens.
 That's because it's sitting in self.__block.wait(), which is in turn
sitting in waiter.acquire(), and it's simply not possible for Ctrl+C
to interrupt a mutex acquire.

As above, I don't know what you're doing.  Maybe you're doing a join()
with a timeout too?  In that case, I doubt anyone gave any thought to
what happens if you muck with KeyboardInterrupt too.

Yes, definitely doing this with a timeout value on the join(). Changing your example to do that (join(5), say) pretty much demonstrates the trouble... in this case a traceback for KeyboardInterrupt is printed, but the program does not terminate because of the thread stuck at the __stop()'s __acquire().

I'll take your last sentence as a form of blessing to go
file a bug report, unless you don't think that's a good idea.

Thanks, Tim!

-Peter
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to