Here is a strange one that I fixed but I’m not sure why. Roughly using the SBuildLVM Howto, and the Chef sbuild cookbook, I have an sbuild server. It was working alright for me, but another user was seeing this:
schroot -c lucid
E: 05lvm: File descriptor 3 (socket:[460392]) leaked on lvcreate invocation.
E: lucid-40c0e109-2d5d-4103-bf92-a44288595dcc: Chroot setup failed: stage=setup-start
When he ran with verbose mode, this line was particularly interesting:
E: 05lvm:
When I su’d to his user, it worked fine for me without verbose but failed similarly with the verbose flag.
In the course of debugging, I started trying to redirect output and I found that these changes to /etc/schroot/setup.d/05lvm fixed the problem. Unfortunately I’m running behind on work so I can’t track down the root cause right now.
--- 05lvm.orig 2011-03-10 19:28:17.000000000 +0000 +++ 05lvm 2011-03-10 19:37:54.000000000 +0000 @@ -36,10 +36,10 @@ if [ "$AUTH_VERBOSITY" = "verbose" ]; then lvcreate $VERBOSE --snapshot --name "$CHROOT_LVM_SNAPSHOT_NAME" \ - "$CHROOT_DEVICE" $CHROOT_LVM_SNAPSHOT_OPTIONS + "$CHROOT_DEVICE" $CHROOT_LVM_SNAPSHOT_OPTIONS 2>&1 else lvcreate $VERBOSE --snapshot --name "$CHROOT_LVM_SNAPSHOT_NAME" \ - "$CHROOT_DEVICE" $CHROOT_LVM_SNAPSHOT_OPTIONS > /dev/null + "$CHROOT_DEVICE" $CHROOT_LVM_SNAPSHOT_OPTIONS 2>&1 > /dev/null fi elif [ $1 = "setup-stop" ]; then @@ -57,9 +57,9 @@ --pid=$PID || true if [ "$AUTH_VERBOSITY" = "verbose" ]; then - lvremove $VERBOSE -f "$CHROOT_LVM_SNAPSHOT_DEVICE" || true + lvremove $VERBOSE -f "$CHROOT_LVM_SNAPSHOT_DEVICE" 2>&1 || true else - lvremove $VERBOSE -f "$CHROOT_LVM_SNAPSHOT_DEVICE" > /dev/null || true + lvremove $VERBOSE -f "$CHROOT_LVM_SNAPSHOT_DEVICE" 2>&1 > /dev/null || true fi else # The block device no longer exists, or was never created,