tests/test-hup.t
author Matt Mackall <mpm@selenic.com>
Mon, 02 Apr 2012 16:46:58 -0500
branchstable
changeset 16344 fb765286f2f9
parent 16342 7e24d34837a9
child 16364 f64b25f147d7
permissions -rw-r--r--
tests: avoid zombie lockup with test-hup The 'while kill -0' recipe can cause a livelock if the process we're waiting to die is a normal child process. If it becomes a zombie that the shell doesn't reap (shell bug?), it will continue to be able to accept signals. So instead, we just wait(1).

Test hangup signal in the middle of transaction

  $ "$TESTDIR/hghave" serve fifo || exit 80
  $ hg init
  $ mkfifo p
  $ hg serve --stdio < p 1>out 2>&1 &
  $ P=$!

Do test while holding fifo open

  $ (
  > echo lock
  > echo addchangegroup
  > while [ ! -s .hg/store/journal ]; do true; done
  > kill -HUP $P
  > ) > p

  $ wait
  $ cat out
  0
  0
  adding changesets
  transaction abort!
  rollback completed
  killed!

  $ echo .hg/* .hg/store/*
  .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a .hg/store/journal.phaseroots