ifquery fails with bad file descriptor

Bug #1226067 reported by Scott Moser on 2013-09-16
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ifupdown (Ubuntu)
Medium
Chris J Arges
Precise
Medium
Chris J Arges
Quantal
Medium
Chris J Arges
Raring
Medium
Chris J Arges

Bug Description

== Begin SRU ==
[Impact]
This bug is a regression of the fix applied under bug 1160490.
The bug is that 'ifquery --list' will try to obtain a lock on a file in /run, which will fail with an error message of 'Bad file descriptor'.

The changes applied here are a backport of upstream fix fb3055c2c4f0 [1].

[Test Case]
Ideally both the test case from bug 1160490 [2] and the following test case should be done.

  $ sudo ifquery --list --allow auto
  lo
  eth0
  $ ifquery --list --allow auto
  lo
  eth0

Success is a list of the 'auto' interfaces that in /etc/network/interfaces. (in a cloud image, thats eth0 and lo). This should work both as root and non-root. Failure would show 'failed to lock lockfile' or non-zero exit value.

Additionally, verify that you can query something other than the default interfaces file as root and non-root.
  $ ( echo "auto eth1"; echo "iface eth1 inet dhcp"; ) > /tmp/my.interfaces
  $ sudo ifquery --list --allow auto --interfaces=/tmp/my.interfaces
  lo
  eth1
  $ ifquery --list --allow auto --interfaces=/tmp/my.interfaces
  lo
  eth1

the 'lo' output is expected as 'lo' is automatically auto. Failure here would be the same 'failed to lock lockfile' or non-zero exit.

It also surely wouldn't hurt to do:
  $ sudo ifdown eth0; sudo ifup eth0

Just to make sure that functions.

[Regression Potential]
 * (from bug 1160490) This fix backports a change from upstream ifupdown. Instead of locking a statefile it locks a lockfile.
 * the change here is very trivial. It chooses to not fail on failure to get lockfile if the operation is 'no_act' (see [1]).

[1] http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0
[2] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/996369/comments/35

=== End SRU ===

$ sudo ifquery --list --allow auto; echo $?;
ifquery: failed to lock lockfile /run/network/.ifstate.lock: Bad file descriptor
1

This seems possibly quite serious as /etc/network/if-up.d/upstart uses this program to determine the "auto" interfaces and then emits static-network-up.

This reproduces on a fresh saucy image with serial=20130916.

Also interesting, possibly related and possibly a bug in and of itself:
$ cp /etc/network/interfaces /tmp/interfaces
$ sudo ifquery --interfaces /tmp/interfaces --list --allow=auto
ifquery: failed to lock lockfile /run/network/.ifstate.lock: Bad file descriptor

Seems odd that it would do anything with /run/network/.ifstate.lock in this case since, by doing so, it means i'd have to have privilege to read that file in order to have it parse my provided --interfaces= file.

For reference, on raring instance as non-root:
$ ifquery --list --allow auto
lo
eth0

Related bugs:
 * bug 1160490: race condition updating statefile

ProblemType: Bug
DistroRelease: Ubuntu 13.10
Package: ifupdown 0.7.44ubuntu2
ProcVersionSignature: User Name 3.11.0-7.13-generic 3.11.0
Uname: Linux 3.11.0-7-generic x86_64
ApportVersion: 2.12.1-0ubuntu4
Architecture: amd64
Date: Mon Sep 16 14:02:41 2013
Ec2AMI: ami-000004dd
Ec2AMIManifest: FIXME
Ec2AvailabilityZone: nova
Ec2InstanceType: m1.tiny
Ec2Kernel: unavailable
Ec2Ramdisk: unavailable
MarkForUpload: True
ProcEnviron:
 TERM=screen
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: ifupdown
UpgradeStatus: No upgrade log present (probably fresh install)

Scott Moser (smoser) wrote :
description: updated
description: updated
Changed in ifupdown (Ubuntu):
importance: Undecided → Medium
Scott Moser (smoser) on 2013-09-16
tags: added: regression-release
Scott Moser (smoser) wrote :

some info, on system this died on:
$ cat /var/log/upstart/network-interface-eth0.log
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/fa:16:3e:3b:18:74
Sending on LPF/eth0/fa:16:3e:3b:18:74
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x5940a96d)
DHCPREQUEST of 10.55.60.126 on eth0 to 255.255.255.255 port 67 (xid=0x5940a96d)
DHCPOFFER of 10.55.60.126 from 10.55.60.1
DHCPACK of 10.55.60.126 from 10.55.60.1
bound to 10.55.60.126 -- renewal in 55 seconds.

ie, no mention of failure there.

Scott Moser (smoser) wrote :
Scott Moser (smoser) wrote :
Changed in ifupdown (Ubuntu):
status: New → Confirmed
Scott Moser (smoser) wrote :

Possibly related is bug 1160490 "race condition updating statefile".

Scott Moser (smoser) wrote :

verified this is regression of bug 1160490.

description: updated
Chris J Arges (arges) on 2013-09-16
Changed in ifupdown (Ubuntu):
assignee: nobody → Chris J Arges (arges)
Chris J Arges (arges) wrote :

I've built this and tested it using a saucy vm, and it fixes the issue for me.
A test build is here:
http://people.canonical.com/~arges/lp1226067/

Chris J Arges (arges) wrote :
Chris J Arges (arges) wrote :
Chris J Arges (arges) wrote :
Changed in ifupdown (Ubuntu Precise):
assignee: nobody → Chris J Arges (arges)
Changed in ifupdown (Ubuntu Raring):
assignee: nobody → Chris J Arges (arges)
Changed in ifupdown (Ubuntu Quantal):
assignee: nobody → Chris J Arges (arges)
Changed in ifupdown (Ubuntu Raring):
importance: Undecided → Critical
Changed in ifupdown (Ubuntu):
status: Confirmed → In Progress
Changed in ifupdown (Ubuntu Precise):
importance: Undecided → Medium
Changed in ifupdown (Ubuntu Quantal):
importance: Undecided → Medium
Changed in ifupdown (Ubuntu Raring):
importance: Critical → Medium
Changed in ifupdown (Ubuntu Precise):
status: New → In Progress
Changed in ifupdown (Ubuntu Quantal):
status: New → In Progress
Changed in ifupdown (Ubuntu Raring):
status: New → In Progress
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ifupdown - 0.7.44ubuntu3

---------------
ifupdown (0.7.44ubuntu3) saucy; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0)
    for a regression introduced by a93db3ecb8f0. LP: #1226067
 -- Chris J Arges <email address hidden> Mon, 16 Sep 2013 11:10:08 -0500

Changed in ifupdown (Ubuntu):
status: In Progress → Fix Released
Scott Moser (smoser) wrote :

I verified this fixes saucy.
$ cat /etc/cloud/build.info
build_name: server
serial: 20130917
$ ifquery --list --all
lo
eth0

$ cat > /tmp/interfaces <<EOF
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet dhcp
iface eth0 inet dhcp

$ ifquery --list --interfaces=/tmp/interfaces
lo
eth1

Scott Moser (smoser) wrote :

I just uploaded Chris's patches to {precise,quantal,raring}-proposed.
Thanks Chris.

Scott Moser (smoser) on 2013-09-17
description: updated
description: updated

Hello Scott, or anyone else affected,

Accepted ifupdown into raring-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/ifupdown/0.7.5ubuntu2.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in ifupdown (Ubuntu Raring):
status: In Progress → Fix Committed
tags: added: verification-needed
Changed in ifupdown (Ubuntu Quantal):
status: In Progress → Fix Committed
Brian Murray (brian-murray) wrote :

Hello Scott, or anyone else affected,

Accepted ifupdown into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/ifupdown/0.7.2ubuntu4 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in ifupdown (Ubuntu Precise):
status: In Progress → Fix Committed
Brian Murray (brian-murray) wrote :

Hello Scott, or anyone else affected,

Accepted ifupdown into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/ifupdown/0.7~beta2ubuntu10 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Bryan Quigley (bryanquigley) wrote :

On precise it appears that this never worked:
$ ifquery --list --allow auto
ifquery: failed to open statefile /run/network/ifstate: Permission denied

Which now shows up as:
$ ifquery --list --allow auto
ifquery: failed to open lockfile /run/network/.ifstate.lock: Permission denied

But when run with sudo they both now work correctly, so marking it as verified.

tags: added: verification-done-precise
tags: added: verification-done-raring
Bryan Quigley (bryanquigley) wrote :

Verified on raring and quantal as well. All commands work fine on both root or not.

tags: added: verification-done-quantal
removed: verification-needed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ifupdown - 0.7.5ubuntu2.2

---------------
ifupdown (0.7.5ubuntu2.2) raring-proposed; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0)
    for a regression introduced by a93db3ecb8f0. LP: #1226067

ifupdown (0.7.5ubuntu2.1) raring; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/a93db3ecb8f0)
    for a race condition when updating the state file. LP: #1160490
 -- Chris J Arges <email address hidden> Mon, 16 Sep 2013 11:37:31 -0500

Changed in ifupdown (Ubuntu Raring):
status: Fix Committed → Fix Released

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ifupdown - 0.7.2ubuntu4

---------------
ifupdown (0.7.2ubuntu4) quantal-proposed; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0)
    for a regression introduced by a93db3ecb8f0. LP: #1226067

ifupdown (0.7.2ubuntu3) quantal; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/a93db3ecb8f0)
    for a race condition when updating the state file. LP: #1160490
 -- Chris J Arges <email address hidden> Mon, 16 Sep 2013 11:37:22 -0500

Changed in ifupdown (Ubuntu Quantal):
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ifupdown - 0.7~beta2ubuntu10

---------------
ifupdown (0.7~beta2ubuntu10) precise-proposed; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/fb3055c2c4f0)
    for a regression introduced by a93db3ecb8f0. LP: #1226067

ifupdown (0.7~beta2ubuntu9) precise; urgency=low

  * Backport a fix from upstream mercurial
    (http://anonscm.debian.org/hg/collab-maint/ifupdown/rev/a93db3ecb8f0)
    for a race condition when updating the state file. LP: #1160490
 -- Chris J Arges <email address hidden> Mon, 16 Sep 2013 11:37:14 -0500

Changed in ifupdown (Ubuntu Precise):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers