Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 304129 - sys-apps/portage-2.2.00.15320 && sys-apps/portage-2.2.00.15335 lock-up with large numbers of packages
Summary: sys-apps/portage-2.2.00.15320 && sys-apps/portage-2.2.00.15335 lock-up with l...
Status: RESOLVED NEEDINFO
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All IRIX
: High critical (vote)
Assignee: Gentoo Prefix
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-02-09 13:35 UTC by Stuart Shelton
Modified: 2011-04-24 12:55 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
par (strace-equivalent) output (screenlog.0.bz2,814.21 KB, application/x-bzip2)
2010-02-09 14:21 UTC, Stuart Shelton
Details
r15312 (portage-r15312.patch,2.30 KB, patch)
2010-02-26 17:30 UTC, Fabian Groffen
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Stuart Shelton 2010-02-09 13:35:25 UTC
Whereas portage-2.2.00.15274 (and all previous) perform correctly, with portage-2.2.00.15320, single ebuilds still work as expected.  However, larger builds (I've experienced this with builds of 90 packages simultaneously and 301 packages simultaneously) will lock-up after the very first package's "checking miscfile checksums ;-) ... [ ok ]" (noting that the "ok" is printed, so presumably whatever happens next is breaking before outputting anything).

When running through an strace-equivalent, it doesn't appear that portage is working in the background or waiting for a forked process to complete - python simply stops making further systems calls.  'top' shows the python process as being idle, to it doesn't appear to be doing any heavy processing either.

With portage-2.2.00.15274 and below, there is no delay at all at this stage.
Comment 1 Stuart Shelton 2010-02-09 14:21:56 UTC
Created attachment 219001 [details]
par (strace-equivalent) output


Here's a weird thing... if I run emerge from portage-2.2.00.15320 alone or through 'par', the problem occurs without fail.  If I run the *exact* same command (through par) but pipe the output to tee or even redirect it to a file, then emerge runs correctly!?

Attached log shows 'emerge' running - and then simply stopping doing anything...
Comment 2 Fabian Groffen gentoo-dev 2010-02-09 14:23:29 UTC
smells like poll/select trouble on pipe/ptys again
Comment 3 Stuart Shelton 2010-02-12 13:52:31 UTC
Also happens with sys-apps/portage-2.2.00.15335.

Only seems to affect builds of large numbers of packages - with single packages (or just now, four at once) everything works correctly.
Comment 4 Fabian Groffen gentoo-dev 2010-02-13 13:11:52 UTC
% cvs log -r15275:15320
------------------------------------------------------------------------
r15299 | grobian | 2010-01-31 10:40:03 +0100 (Sun, 31 Jan 2010) | 17 lines

   Merged from trunk -r15272:15280

   | 15277   | Define userpriv_groups earlier in order to avoid an          |
   | zmedico | AttributeError from lazy import code. Thanks to antarus for  |
   |         | reporting.                                                   |
   
   | 15278   | Bug #277902 - When excluding config files, instead of using  |
   | zmedico | an empty file as a placeholder, use a file containing a      |
   |         | comment like this: # empty file because --include-config=n   |
   |         | when `quickpkg` was used                                     |
   
   | 15279   | Fix conditional logic for userpriv_groups intialization.     |
   | zmedico |                                                              |
   
   | 15280   | Fix code from r15278 for python3 unicode compatibility.      |
   | zmedico |                                                              |

------------------------------------------------------------------------
r15300 | grobian | 2010-01-31 10:41:21 +0100 (Sun, 31 Jan 2010) | 17 lines

   Merged from trunk -r15280:15285

   | 15281   | Deprecate the first parameter of the portdbapi constructor   |
   | zmedico | since it is always the same as mysettings['PORTDIR'].        |
   
   | 15282   | Use tuples instead of lists for immutability.                |
   | zmedico |                                                              |
   
   | 15283   | For immutable config attributes, use shallow copy for speed  |
   | zmedico | and memory conservation.                                     |
   
   | 15284   | For immutable config attributes, use shallow copy for speed  |
   | zmedico | and memory conservation.                                     |
   
   | 15285   | For immutable config attributes, use shallow copy for speed  |
   | zmedico | and memory conservation.                                     |

------------------------------------------------------------------------
r15301 | grobian | 2010-01-31 10:43:08 +0100 (Sun, 31 Jan 2010) | 24 lines

   Merged from trunk -r15285:15292

   | 15286   | fix: python dbm module doesn't accept unicode as key         |
   | volkmar |                                                              |
   
   | 15287   | Define __slots__ in all classes.                             |
   | zmedico |                                                              |
   
   | 15288   | In config._expandLicenseToken(), make sure traversed_groups  |
   | zmedico | is only initialized when appropriate.                        |
   
   | 15289   | Fix concatenation of list + tuple in                         |
   | zmedico | Manifest._createManifestEntries().                           |
   
   | 15290   | Don't generate DeprecationWarning for portdbapi arguments.   |
   | zmedico | Wait until new portdbapi constructor is in stable portage    |
   |         | first.                                                       |
   
   | 15291   | fix flat_list cache backend looks like it was outdated wrt.  |
   | volkmar | template cache backend                                       |
   
   | 15292   | Show a DeprecationWarning if the deprecated pordbapi         |
   | zmedico | constructor parameter is used incorrectly.                   |

------------------------------------------------------------------------
r15302 | grobian | 2010-01-31 10:44:08 +0100 (Sun, 31 Jan 2010) | 25 lines

   Merged from trunk -r15292:15298

   | 15293   | Fix: change os.mkdir to os.makedirs in case of there are     |
   | volkmar | more than one directory depth missing. According to          |
   |         | docs.python.org, permissions may be not respected with       |
   |         | os.makedirs... with some systems.                            |
   
   | 15294   | Avoid NameError when cwd is $FILESDIR. Thanks to Christian   |
   | zmedico | Ruppert <idl0r@g.o> for reporting.                           |
   
   | 15295   | Bug #302764 - Inside __iter__, only recurse 1 deep, in order |
   | zmedico | to avoid iteration over entries from another nested cache    |
   |         | instance. This can happen if the user nests an overlay       |
   |         | inside /usr/portage/local. Thanks to Vlastimil Babka         |
   |         | <caster@g.o> for this patch.                                 |
   
   | 15296   | Make __iter__ use list.pop() instead of pop(0), for greater  |
   | zmedico | efficiency.                                                  |
   
   | 15297   | In __iter__, handle OSError from lstat in case a cache entry |
   | zmedico | disappears.                                                  |
   
   | 15298   | Reverting r15293, it was actually not needed.                |
   | volkmar |                                                              |

------------------------------------------------------------------------
r15319 | grobian | 2010-02-04 20:03:41 +0100 (Thu, 04 Feb 2010) | 1 line

fix backtrace with -r0 revisions, by Paul Varner, bug #303145
------------------------------------------------------------------------
r15320 | grobian | 2010-02-04 20:09:17 +0100 (Thu, 04 Feb 2010) | 49 lines

   Merged from trunk -r15303:15318

   | 15304   | Bug #302937 - Handle declare -r without assignment.          |
   | zmedico |                                                              |
   
   | 15305   | Validate categories.                                         |
   | zmedico |                                                              |
   
   | 15306   | Deprecate pordbapi.mysettings since the portdbapi.settings   |
   | zmedico | alias is now supported by stable portage.                    |
   
   | 15307   | Bug #298141 - Make /etc/portage/sets relative to             |
   | zmedico | PORTAGE_CONFIGROOT. Thanks to Martin Gysel (bearsh)          |
   |         | <m.gysel@gmx.ch> for this patch.                             |
   
   | 15308   | Fix @module-rebuild to support $ROOT.                        |
   | zmedico |                                                              |
   
   | 15309   | Clean up config incrementals handling.                       |
   | zmedico |                                                              |
   
   | 15310   | Simplify the conditional that triggers calculation of A and  |
   | zmedico | AA variables.                                                |
   
   | 15311   | Deallocate config instance when necessary, to avoid memory   |
   | zmedico | leak when in prefetch mode.                                  |
   
   | 15312   | Optimize parallel-fetch for the case where all files are     |
   | zmedico | already fetched and have the correct size. In this case we   |
   |         | can avoid the expense of spawning ebuild(1).                 |
   
   | 15313   | Make sure the fetcher process correctly inherits             |
   | zmedico | PORTAGE_CONFIGROOT.                                          |
   
   | 15314   | Fix deprecated portdbapi.mysettings reference.               |
   | zmedico |                                                              |
   
   | 15315   | Use stat rather than lstat since portage.fetch() creates     |
   | zmedico | symlinks when PORTAGE_RO_DISTDIRS is used.                   |
   
   | 15316   | Use Package.use.enabled where appropriate.                   |
   | zmedico |                                                              |
   
   | 15317   | Bug #295197 - Output a newline after valid user input is     |
   | zmedico | received.                                                    |
   
   | 15318   | Make verify_all() do checksums in sorted order by hash name. |
   | zmedico |                                                              |

------------------------------------------------------------------------
Comment 5 Fabian Groffen gentoo-dev 2010-02-13 13:14:51 UTC
I think only r15312 sounds possibly suspicious.
Comment 6 Stuart Shelton 2010-02-15 08:58:15 UTC
r15312 would seem to match the conditions where this has been observed...
Comment 7 Fabian Groffen gentoo-dev 2010-02-26 17:30:38 UTC
Created attachment 221345 [details, diff]
r15312

can you reverse-apply this patch to verify if this is the one causing trouble for you?