ifquery fails with bad file descriptor

Bug #1226067 reported by Scott Moser
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ifupdown (Ubuntu)
Fix Released
Medium
Chris J Arges
Precise
Fix Released
Medium
Chris J Arges
Quantal
Fix Released
Medium
Chris J Arges
Raring
Fix Released
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)

Revision history for this message
Scott Moser (smoser) wrote :
description: updated
description: updated
Changed in ifupdown (Ubuntu):
importance: Undecided → Medium
Scott Moser (smoser)
tags: added: regression-release
Revision history for this message
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.

Revision history for this message
Scott Moser (smoser) wrote :
Revision history for this message
Scott Moser (smoser) wrote :
Changed in ifupdown (Ubuntu):
status: New → Confirmed
Revision history for this message
Scott Moser (smoser) wrote :

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

Revision history for this message
Scott Moser (smoser) wrote :

verified this is regression of bug 1160490.

description: updated
Chris J Arges (arges)
Changed in ifupdown (Ubuntu):
assignee: nobody → Chris J Arges (arges)
Revision history for this message
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/

Revision history for this message
Chris J Arges (arges) wrote :
Revision history for this message
Chris J Arges (arges) wrote :
Revision history for this message
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
Revision history for this message
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
Revision history for this message
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

Revision history for this message
Scott Moser (smoser) wrote :

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

Scott Moser (smoser)
description: updated
description: updated
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

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
Revision history for this message
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
Revision history for this message
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!

Revision history for this message
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
Revision history for this message
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
Revision history for this message
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
Revision history for this message
Brian Murray (brian-murray) wrote : Update 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.

Revision history for this message
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
Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.