SIGQUIT kills the child SSH process

John Arbash Meinel john at arbash-meinel.com
Tue Nov 13 21:00:07 GMT 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've been seeing some odd operations when using bzr+ssh. I haven't been able to
figure out all of it, but something about doing way to much work for a simple
'bzr pull' into a bound branch.

Anyway, I tried using ^| (SIGQUIT) to debug what was going on. And it dropped
me into the debugger as expected. However, I also noticed:

/ [==                               ] Pull phase 0/2
^\Killed by signal 3.
** SIGQUIT received, entering debugger
** Type 'c' to continue or 'q' to stop the process

And at this point, the ssh connection has closed. If I use 'c' to continue, it
spins indefinitely expecting more data. Which is a bug in itself (if it isn't
getting any data, it should be failing with ConnectionClosed, not spinning
endlessly with 100% CPU.)

So 2 fixes:

a) SIGQUIT should be trapped for the child (I think we do this for SIGINT to
allow better cleanup.)

b) The smart server needs a bit better handling of when it gets a zero-length read.

  affects bzr
  importance medium
  status triaged

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHOhBXJdeBCYSNAAMRAjADAKCydmPQhJrwAuhHuHkOFu9Pyjwe0gCdG3rx
7HuasNdR8PEhyHpIlPJKts8=
=gcv7
-----END PGP SIGNATURE-----



More information about the bazaar mailing list