Bug 1110147

Summary: IOError: [Errno 9] Bad file descriptor
Product: [Fedora] Fedora Reporter: William Brown <william>
Component: pythonAssignee: Bohuslav "Slavek" Kabrda <bkabrda>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 20CC: bcl, bkabrda, dmalcolm, g.kaviyarasu, ivazqueznet, jonathan, jonathansteffan, mstuchli, tomspur, tradej, vanmeeuwen+fedora, william
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard: abrt_hash:321bb09025685db23cf26aa5aa92e1f9ad94a25061f9b9124e5081be3f103e50
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-10-09 16:00:46 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
File: anaconda-tb
none
File: anaconda.log
none
File: environ
none
File: ks.cfg
none
File: lsblk_output
none
File: nmcli_dev_list
none
File: os_info
none
File: program.log
none
File: storage.log
none
File: syslog
none
File: ifcfg.log
none
File: packaging.log none

Description William Brown 2014-06-17 06:57:01 UTC
Description of problem:
Kick started VM. Issue is likely around partitioning. 

Version-Release number of selected component:
anaconda-20.25.15-1

The following was filed automatically by anaconda:
anaconda 20.25.15-1 exception report
Traceback (most recent call first):
  File "/usr/lib64/python2.7/subprocess.py", line 799, in communicate
    self.stdout.close()
  File "/usr/lib/python2.7/site-packages/blivet/util.py", line 42, in _run_program
    out = proc.communicate()[0]
  File "/usr/lib/python2.7/site-packages/blivet/util.py", line 56, in run_program
    return _run_program(*args, **kwargs)[0]
  File "/usr/lib/python2.7/site-packages/blivet/udev.py", line 86, in udev_settle
    util.run_program(["udevadm", "settle", "--timeout=300"])
  File "/usr/lib/python2.7/site-packages/blivet/udev.py", line 150, in udev_get_block_devices
    udev_settle()
  File "/usr/lib/python2.7/site-packages/blivet/udev.py", line 104, in udev_resolve_devspec
    for dev in udev_get_block_devices():
  File "/usr/lib64/python2.7/site-packages/pyanaconda/kickstart.py", line 315, in execute
    spec = udev.udev_resolve_devspec(self.bootDrive)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/kickstart.py", line 1745, in doKickstartStorage
    ksdata.bootloader.execute(storage, ksdata, instClass)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/gui/spokes/storage.py", line 429, in _doExecute
    doKickstartStorage(self.storage, self.data, self.instclass)
  File "/usr/lib64/python2.7/threading.py", line 764, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/threads.py", line 192, in run
    threading.Thread.run(self, *args, **kwargs)
IOError: [Errno 9] Bad file descriptor

Additional info:
cmdline:        /usr/bin/python  /sbin/anaconda
cmdline_file:   inst.repo=http://mion.ipa.blackhats.net.au/pub/fedora/linux/releases/20/Fedora/x86_64/os/ ks=file:///lorna-ks.cfg 
executable:     /sbin/anaconda
hashmarkername: anaconda
kernel:         3.11.10-301.fc20.x86_64
product:        Fedora
release:        Cannot get release name.
type:           anaconda
version:        20

Comment 1 William Brown 2014-06-17 06:57:06 UTC
Created attachment 909412 [details]
File: anaconda-tb

Comment 2 William Brown 2014-06-17 06:57:09 UTC
Created attachment 909413 [details]
File: anaconda.log

Comment 3 William Brown 2014-06-17 06:57:11 UTC
Created attachment 909414 [details]
File: environ

Comment 4 William Brown 2014-06-17 06:57:13 UTC
Created attachment 909415 [details]
File: ks.cfg

Comment 5 William Brown 2014-06-17 06:57:15 UTC
Created attachment 909416 [details]
File: lsblk_output

Comment 6 William Brown 2014-06-17 06:57:17 UTC
Created attachment 909417 [details]
File: nmcli_dev_list

Comment 7 William Brown 2014-06-17 06:57:19 UTC
Created attachment 909418 [details]
File: os_info

Comment 8 William Brown 2014-06-17 06:57:22 UTC
Created attachment 909419 [details]
File: program.log

Comment 9 William Brown 2014-06-17 06:57:24 UTC
Created attachment 909420 [details]
File: storage.log

Comment 10 William Brown 2014-06-17 06:57:27 UTC
Created attachment 909421 [details]
File: syslog

Comment 11 William Brown 2014-06-17 06:57:29 UTC
Created attachment 909422 [details]
File: ifcfg.log

Comment 12 William Brown 2014-06-17 06:57:31 UTC
Created attachment 909423 [details]
File: packaging.log

Comment 13 Brian Lane 2014-06-17 21:24:28 UTC
Somehow the stdout object vanished, possibly a python bug.

Is this reproducible?

Comment 14 William Brown 2014-06-18 03:18:34 UTC
Yes: The kickstart attached will always cause this issue to occur. i have a similar issue in rawhide also.

Comment 15 Bohuslav "Slavek" Kabrda 2014-06-19 09:34:18 UTC
I think this may be caused by bug 1103450 - Python attempts to close subprocess pipes twice when the child process starts failing. I'll try to backport patch for that bug to F20 and we'll see if that solves the issue. Otherwise I'll continue investigating.

Comment 16 William Brown 2014-06-19 22:22:43 UTC
That may fix the bad file descriptor issue (Which is always good to fix more things) but the root of the cause is partitioning. See:

zerombr
clearpart --all --drives=sda
clearpart --initlabel --drives=sda
# Disk partitioning information
part /boot --fstype=xfs --size=1024 --asprimary
part pv.2 --size=16384 --grow --asprimary
# LVM
volgroup vg00 pv.2
logvol /  --fstype=xfs --size=2048 --name=root_lv --vgname=vg00
logvol /usr  --fstype=xfs --size=4096 --name=usr_lv --vgname=vg00
logvol /var  --fstype=xfs --size=4096 --name=var_lv --vgname=vg00
logvol /home  --fstype=xfs --size=2048 --name=home_lv --vgname=vg00
logvol swap  --fstype=swap --size=2048 --name=swap_lv --vgname=vg00

However, looking at the storage log only /boot, home_lv and swap_lv are created. Is there an issue where anaconda can't kickstart with more than 2 lvs defined? IMO this is not an unreasonable partitioning.

Comment 17 David Lehman 2014-10-09 15:52:52 UTC
(In reply to William Brown from comment #16)
> However, looking at the storage log only /boot, home_lv and swap_lv are
> created. Is there an issue where anaconda can't kickstart with more than 2
> lvs defined? IMO this is not an unreasonable partitioning.

There is nothing to suggest that this is related to your relatively simple ks.cfg. It did not get to the point of creating anything. It does find the old/preexisting home_lv and swap_lv and schedules them for removal. The reason you don't see any evidence of us creating your new layout that is because the installation process was interrupted, as reported here.

Comment 18 David Shea 2014-10-09 16:00:46 UTC
Underlying cause is that subprocess.py is closing things it shouldn't be closing.

*** This bug has been marked as a duplicate of bug 1103450 ***