#24857 closed defect (fixed)
Installing many ports causes "too many open files" error
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | macports-tickets@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | base | Version: | 1.8.99 |
Keywords: | Cc: | ||
Port: |
Description
On a fresh MacPorts 1.9.0 beta 1 installation, installed from the disk image, on Mac OS X 10.6.3 with Xcode 3.2.2, with no ports installed, I tried to install wine-devel +universal. This has lots of dependencies, 47 of which installed fine before xorg-libXcursor failed during installation saying
---> Installing xorg-libXcursor @1.1.10_0+universal Error: Target org.macports.install returned: couldn't read file "/System/Library/Frameworks/Tcl.framework/Versions/8.5/Resources/Scripts/clock.tcl": too many open files Log for xorg-libXcursor is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_x11_xorg-libXcursor/main.log Error: The following dependencies failed to build: xorg-libXcursor xorg-libXinerama xorg-xineramaproto xorg-libXrandr xorg-randrproto xorg-libXxf86vm xorg-xf86vidmodeproto Error: Status 1 encountered during processing.
Simply repeating the port install
command allowed the installation to proceed, which says to me that MacPorts is holding some files open even after it's done with a port.
Attachments (1)
Change History (9)
Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)
Attachment: | install-many-ports.txt added |
---|
comment:1 Changed 15 years ago by jmroot (Joshua Root)
Need to see which files are open when it fails.
comment:2 follow-up: 3 Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)
Ok, how do we get that information?
comment:3 Changed 14 years ago by jmroot (Joshua Root)
comment:4 Changed 14 years ago by jmroot (Joshua Root)
Like this for example:
sudo lsof -c tclsh
My testing shows that we seem to be accumulating sqlite temp files.
comment:5 Changed 14 years ago by jmroot (Joshua Root)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Hackish fix committed in r67838, which deletes the interpreter for each dependency's mport right after running the install target (instead of waiting until mportclose).
comment:6 Changed 14 years ago by jmroot (Joshua Root)
The correct fix, BTW, would be either to use sqlite's temp_store pragma to make it store temporary data in memory instead of files (I couldn't get this to work), or refactor things so that a single database object is shared by the main interpreter and the portfile subinterpreters.
comment:7 Changed 2 years ago by jmroot (Joshua Root)
comment:8 Changed 13 months ago by jmroot (Joshua Root)
In c48853e678871e580dca89232e52a6d965a31812/mpbb (master):
terminal log