bug: ctrl-c during revision installation may be ignored

Andrew Bennetts andrew at canonical.com
Mon Sep 12 15:50:34 BST 2005


On Mon, Sep 12, 2005 at 10:26:27PM +1000, Martin Pool wrote:
> On 12/09/05, Robert Collins <robertc at robertcollins.net> wrote:
> > Something in bzr has an overly broad except clause - I did a ctrl-c
> > during the revision pulling phase of a merge, which resulted in a
> > 'failed to install revisionX' message, but the revision pulling
> > continuing.
> > 
> > As a general principal, we should never have a catch-all except clause
> > except where we also have either a raise (in this case a finally:
> > probably makes more sense), or a very very tightly constrained context.
> 
> I don't *think* we have any catchall except clauses; if we do they
> should be fixed.  I have noticed that some of the C code for gzip and
> similar stuff seems to swallow exceptions.

I did a quick grep, and then manually looked over the results.  The
following will swallow KeyboardInterrupt (and MemoryError...):

bzrlib/plugin.py:121:            except:
bzrlib/selftest/test_merge_core.py:256:            except:
bzrlib/util/urlgrabber/grabber.py:827:            except: length = None
bzrlib/util/urlgrabber/grabber.py:1007:            except: pass
bzrlib/util/effbot/org/http_manager.py:51:                except:
bzrlib/util/effbot/org/http_manager.py:59:                except:
bzrlib/remotebranch.py:187:        except:
bzrlib/builtins.py:1047:        except:

The plugin.py one at least logs the error, but that's not the behaviour you
want.

The test one is less crucial, but it's still annoying to have Ctrl-C not
work reliably when running tests.

The others appear to genuinely swallow KeyboardInterrupts in one way or
another.

-Andrew.





More information about the bazaar mailing list