Bug 860022

Summary: AttributeError: preconf
Product: [Fedora] Fedora Reporter: Stef Walter <stefw>
Component: anacondaAssignee: Brian Lane <bcl>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 18CC: anaconda-maint-list, awilliam, ffesti, g.kaviyarasu, james.antill, jonathan, jreznik, maxamillion, orion, packaging-team, robatino, sbueno, tim.lauridsen, vanmeeuwen+fedora, zpavlas
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard: abrt_hash:aeb440033348d0944a28d722a24bde37735e6b4aad5259811c4e38a0df8ba9a5 AcceptedNTH RejectedBlocker
Fixed In Version: anaconda-18.37.7-1 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-01-02 21:48:44 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:
Bug Depends On:    
Bug Blocks: 752665    
Attachments:
Description Flags
File: ifcfg.log
none
File: version
none
File: product
none
File: type
none
File: environ
none
File: storage.log
none
File: program.log
none
File: release
none
File: anaconda.log
none
File: syslog
none
File: hashmarkername
none
File: ks.cfg
none
File: packaging.log
none
File: cmdline_file
none
File: anaconda-tb
none
File: description
none
Screenshot of crash
none
screenshot of crash
none
screenshot - pycurl.error: cannot invoke setopt() - perform() is currently running none

Description Stef Walter 2012-09-24 16:02:16 UTC
Version-Release number of selected component:
anaconda-18.6.8

Additional info:
libreport version: 2.0.12
cmdline:        /usr/bin/python  /sbin/anaconda
kernel:         3.6.0-0.rc2.git2.1.fc18.x86_64

Comment 1 Stef Walter 2012-09-24 16:02:19 UTC
Created attachment 616622 [details]
File: ifcfg.log

Comment 2 Stef Walter 2012-09-24 16:02:21 UTC
Created attachment 616623 [details]
File: version

Comment 3 Stef Walter 2012-09-24 16:02:23 UTC
Created attachment 616624 [details]
File: product

Comment 4 Stef Walter 2012-09-24 16:02:26 UTC
Created attachment 616625 [details]
File: type

Comment 5 Stef Walter 2012-09-24 16:02:28 UTC
Created attachment 616626 [details]
File: environ

Comment 6 Stef Walter 2012-09-24 16:02:34 UTC
Created attachment 616627 [details]
File: storage.log

Comment 7 Stef Walter 2012-09-24 16:02:37 UTC
Created attachment 616628 [details]
File: program.log

Comment 8 Stef Walter 2012-09-24 16:02:39 UTC
Created attachment 616629 [details]
File: release

Comment 9 Stef Walter 2012-09-24 16:02:42 UTC
Created attachment 616630 [details]
File: anaconda.log

Comment 10 Stef Walter 2012-09-24 16:02:46 UTC
Created attachment 616631 [details]
File: syslog

Comment 11 Stef Walter 2012-09-24 16:02:49 UTC
Created attachment 616632 [details]
File: hashmarkername

Comment 12 Stef Walter 2012-09-24 16:02:52 UTC
Created attachment 616634 [details]
File: ks.cfg

Comment 13 Stef Walter 2012-09-24 16:02:55 UTC
Created attachment 616635 [details]
File: packaging.log

Comment 14 Stef Walter 2012-09-24 16:02:58 UTC
Created attachment 616636 [details]
File: cmdline_file

Comment 15 Stef Walter 2012-09-24 16:03:03 UTC
Created attachment 616637 [details]
File: anaconda-tb

Comment 16 Stef Walter 2012-09-24 16:03:06 UTC
Created attachment 616638 [details]
File: description

Comment 17 Jesse Keating 2012-09-24 21:54:10 UTC
This is a traceback out of the yum module.  Are we doing something wrong here yum folks?

Comment 18 Zdeněk Pavlas 2012-09-25 07:25:22 UTC
yum/__init__:
@313:        uuid = self.preconf.uuid
@385:        del self.preconf

I'd bet that somewhere between these two lines _getConfig() is called recursively, so the "inner" function deletes self.preconf, and the "outer" one tracebacks.  There's likely some self.conf reference between lines 313 and 385.  doPluginSetup, maybe?

Comment 19 James Antill 2012-09-25 19:51:48 UTC
 What Zdeněk says is true, but because of that possibility we try to limit what we do a _lot_ between those two lines. Here is a mostly complete list:

1. Take values from preconf

2. Setup arch. data.

3. config.readStartupConfig()

4. config._getsysver() manual call for releasever=/

5. doLoggingSetup()

6. doPluginSetup()

7. config.readMainConfig()

...and at that point self._conf is set, at which point we can't recurse into this code path.
 My guess is that #6 is the problem, at that point we do a couple of things that might be triggering something:

6.1: import each plugin module (runs any top level code) in the module.

6.2: runs the "config_hook" of each enabled plugin.

...and here the problem is likely #6.2 (you should be able to run this outside of anaconda though).

 If you don't have any weird plugins, it probably means you are overridding one of the stages above ... which will be harder to debug :(.

Comment 20 Orion Poplawski 2012-12-18 18:25:44 UTC
Created attachment 665671 [details]
Screenshot of crash

I've been seeing this off and on for a while on my vm installs.  Just got it with 18.37.3 from F18-TC3.  In text mode install the traceback does not appear to be logged anywhere (a separate bug?), but the screen shot does show another traceback along with the reported one.

Comment 21 Orion Poplawski 2012-12-18 22:53:43 UTC
Created attachment 665809 [details]
screenshot of crash

Tried a second time.  Got a different yet similar crash.  Something does seem racy.  I've got a lot of repos configured - I wonder if that helps trigger it.

Comment 22 Orion Poplawski 2012-12-18 23:06:55 UTC
Created attachment 665811 [details]
screenshot - pycurl.error: cannot invoke setopt() - perform() is currently running

Third try, yet a different traceback.

Comment 23 Zdeněk Pavlas 2012-12-19 09:45:42 UTC
The traceback from c#22 suggests two threads are using the same curl_obj instance in urlgrabber module.  This module is not thread-safe.

Seems that most methods in YumPayload class use yum_lock to synchronize access to Yum internal state, but at yumpayload.py:487, self._yum.repos is touched directly.  This triggers opening *.repo files with urlgrabber.grabber.urlopen().

Comment 24 Zdeněk Pavlas 2012-12-19 13:27:43 UTC
AIUI, Anaconda touches self._yum.repos from >1 thread.  It's a property that mostly just returns self._yum._repos (so it's thread-safe).  But on first run, the getter also parses repositories from yum.conf and (possibly remote) *.repo files (this uses urlgrabber and is not thread-safe).

The "1st run" check in Yum is racy.  http://lists.baseurl.org/pipermail/yum-devel/2012-December/009843.html kind of "fixes" this, but IMO Anaconda should make sure YumBase object is instantiated and initialized from 1 thread only.

Comment 25 Brian Lane 2012-12-19 17:12:20 UTC
I've added _yum_lock to everyplace I can see us using self._yum, give this updates.img a try (against smoke8)

http://bcl.fedorapeople.org/updates/860022.img

Comment 26 Orion Poplawski 2012-12-19 17:59:21 UTC
Works for me with TC3, thanks!

Comment 27 Adam Williamson 2012-12-19 18:04:15 UTC
Discussed at 2012-12-19 blocker review meeting: http://meetbot.fedoraproject.org/fedora-bugzappers/2012-12-19/f18final-blocker-review-6.2012-12-19-17.02.log.txt . We are delaying the decision on blocker status as we're not sure how likely this is to hit people - it seems to be related to having a large number of repos, Orion, exactly how many do you have? - but we're at least agreed that it is NTH.

Comment 28 Orion Poplawski 2012-12-19 18:55:43 UTC
base url + 8 additional repos

Comment 29 Adam Williamson 2012-12-21 22:07:54 UTC
Discussed at 2012-12-21 blocker review meeting: http://meetbot.fedoraproject.org/fedora-bugzappers/2012-12-21/f18final-blocker-review-7.2012-12-21-18.33.log.txt . Agreed this doesn't seem to happen often enough to consider a blocker, but it's already accepted as NTH, and will be in next anaconda build.

Comment 30 Fedora Update System 2012-12-21 23:32:01 UTC
dracut-024-17.git20121220.fc18, anaconda-18.37.7-1.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/FEDORA-2012-20838/dracut-024-17.git20121220.fc18,anaconda-18.37.7-1.fc18

Comment 31 Fedora Update System 2012-12-22 21:10:18 UTC
Package dracut-024-17.git20121220.fc18, anaconda-18.37.8-1.fc18:
* should fix your issue,
* was pushed to the Fedora 18 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing dracut-024-17.git20121220.fc18 anaconda-18.37.8-1.fc18'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-20838/dracut-024-17.git20121220.fc18,anaconda-18.37.8-1.fc18
then log in and leave karma (feedback).

Comment 32 Fedora Update System 2013-01-02 21:48:47 UTC
dracut-024-17.git20121220.fc18, anaconda-18.37.8-1.fc18 has been pushed to the Fedora 18 stable repository.  If problems still persist, please make note of it in this bug report.