[IPython-dev] Fwd: ctrl-c bug using -gthread on windows, with possible solution
Ville M. Vainio
vivainio at gmail.com
Fri Aug 7 04:55:18 EDT 2009
Thanks Pieter, cc:ing to ipython-dev.
Someone might want to cherry-pick the following change from my
trunk-dev and put it to trunk:
http://bazaar.launchpad.net/~villemvainio/ipython/trunk-dev/revision/1160
---------- Forwarded message ----------
From: Pieter Cristiaan de Groot <p.c.degroot at tudelft.nl>
Date: Fri, Aug 7, 2009 at 11:18 AM
Subject: Re: [IPython-dev] ctrl-c bug using -gthread on windows, with
possible solution
To: "Ville M. Vainio" <vivainio at gmail.com>
Hello Ville,
it looks like the ctrl-c bugfix for gthread didn't make it to 0.10.
The error is still easily reproducable by starting ipython with
-ghread. Type sleep(10), en then ctrl-c (in windows).
The suggest change is:
before:
update_tk(self.tk)
self.IP.runcode()
time.sleep(0.01)
return True
after:
try:
update_tk(self.tk)
self.IP.runcode()
time.sleep(0.01)
return True
except IOError:
return True
Best regards,
Pieter
Pieter Cristiaan de Groot wrote:
>
> Just to be sure I answer your question fully:
>
> case 1) the original 0.9.1 ipython code gives this error if I start it with -gthread and push ctrl-c
>
> ##########################
>
> CODE (in Shell.py, around linenr. 840):
>
> update_tk(self.tk)
> self.IP.runcode()
> time.sleep(0.01)
> return True
>
> ERROR:
>
> KeyboardInterrupt - Press <Enter> to continue.---------------------------------------------------------------------------
> IOError Traceback (most recent call last)
>
> c:\python25\lib\site-packages\IPython\Shell.pyc in on_timer(self)
> 840 update_tk(self.tk)
> 841 self.IP.runcode()
> --> 842 time.sleep(0.01)
> 843 return True
> 844
>
> IOError: [Errno 4] Interrupted function call
>
> #################
>
> case 2) catching the exception (with some prints):
>
> ###############
>
> CODE:
>
> try:
> update_tk(self.tk)
> self.IP.runcode()
> time.sleep(0.01)
> return True
> except Exception, e:
> print type(e)
> print(e)
> return True
>
> ERROR:
>
> KeyboardInterrupt - Press <Enter> to continue. <type 'exceptions.IOError'>
> [Errno 4] Interrupted function call
>
> #########################
>
> case 3) if I understood correctly this is what you wanted to see:
>
> #####################
>
> CODE:
>
> update_tk(self.tk)
> self.IP.runcode()
> try:
> time.sleep(0.01)
> return True
> except Exception ,e:
> print type(e)
> print e
> return True
>
> ERROR:
>
> KeyboardInterrupt - Press <Enter> to continue. <type 'exceptions.IOError'>
> [Errno 4] Interrupted function call
>
> ##########################
>
> case 3a) occasionally (1 in ~20 times), if you interrupt the code while it is not in the sleep, then everything works fine. It gives this message:
>
> ############################
>
> CODE: (same as case 3, and probably the same for 1 and 2)
>
> ERROR:
>
> KeyboardInterrupt - Press <Enter> to continue.
>
> ###########################
>
> I hope this answers your question. If you want me to check any more things, please ask.
>
> Pieter
>
> Ville M. Vainio wrote:
>
>>
>> On Thu, Feb 12, 2009 at 3:06 PM, Pieter Cristiaan de Groot
>> <p.c.degroot at tudelft.nl> wrote:
>>
>>
>>>
>>> this is my last attempt to get the attention to this post. Even if this
>>> is the wrong place to post to,
>>> could somebody explain where it should be posted?
>>>
>>
>> This is the right place, you probably just didn't get lucky in drawing
>> people's attention. Perhaps because people don't use gthread on
>> windows all that much.
>>
>> Can you try catching the exception just for the sleep command?
>>
>>
>
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://lists.ipython.scipy.org/mailman/listinfo/ipython-dev
>
--
Ville M. Vainio
http://tinyurl.com/vainio
More information about the IPython-dev
mailing list