[oe] Problem building kernel - too many files open

Piero Pezzin piero.pezzin at gmail.com
Thu Mar 12 14:17:20 UTC 2009


Hello Jader,

it works!

Thank you very much.

Regards,

Piero

On Thu, Mar 12, 2009 at 2:14 PM, Jader <jader at 2mi.com.br> wrote:

> Hello.
> I had the same problem. It's inside classes/kernel.bbclass:298
> (reproduced below):
>
>
> python populate_packages_prepend () {
>        def extract_modinfo(file):
>                import tempfile, os, re
>                tempfile.tempdir = bb.data.getVar("WORKDIR", d, 1)
>                tmpfile = tempfile.mkstemp()[1]
>                cmd = "PATH=\"%s\" %sobjcopy -j .modinfo -O binary %s %s" %
> (bb.data.getVar("PATH", d, 1), bb.data.getVar("HOST_PREFIX", d, 1) or "",
> file, tmpfile)
>                os.system(cmd)
>                f = open(tmpfile)
>                l = f.read().split("\000")
>                f.close()
>                os.unlink(tmpfile)
>
>
> tempfile.mkstemp() is used to create a temporary file. This function
> return a tuple with an OS file descriptor and a filename. Filename is
> stored in "tmpfile" but descriptor is not stored anywhere, but it is
> still open because it's only an integer to python so it is not closed at
> the end of the function.
>
> For each iteration in which this function is called, a new OS file
> descriptor is opened, but not closed. The solution is to store the file
> descriptor and close it:
>
>
> python populate_packages_prepend () {
>        def extract_modinfo(file):
>                import tempfile, os, re
>                tempfile.tempdir = bb.data.getVar("WORKDIR", d, 1)
>                tf = tempfile.mkstemp()
>                tmpfile = tf[1]
>                cmd = "PATH=\"%s\" %sobjcopy -j .modinfo -O binary %s %s" %
> (bb.data.getVar("PATH", d, 1), bb.data.getVar("HOST_PREFIX", d, 1) or "",
> file, tmpfile)
>                os.system(cmd)
>                f = open(tmpfile)
>                l = f.read().split("\000")
>                f.close()
>                os.close(tf[0])
>                os.unlink(tmpfile)
>
>
> There's a patch attached. As Iḿ new to git, I don know it it was created
> in the right way. Used command following:
>
>
> git format-patch cab70860b89f0fd856c5de1c37c6a3d31fd3cc9d --stdout classes
> >kernel.bbclass.patch
>
>
> Jader H. Silva
> 2MI Tecnologia
>
> Em Qui, 2009-03-12 às 09:51 +0100, Petr Štetiar escreveu:
>
> > Marco Cavallini <koansoftware at gmail.com> [2009-03-12 09:02:08]:
> >
> > > Piero Pezzin ha scritto:
> >
> > [...]
> >
> > > >>> During kernel building, I got the following error:
> > > >>>
> > > >>> OTE: package linux-2.6.28: started
> > > >>> NOTE: package linux-2.6.28-r6: task do_package: started
> > > >>> ERROR: Error in executing:
> > > >>>
> /home/piero/work/qong-nobk/openembedded/openembedded/packages/linux/
> > > >>> linux_2.6.28.bb
> > > >>> ERROR: Exception:exceptions.IOError Message:[Errno 24] Too many
> open
> > > >> files:
> > >
> > > this is a known error.
> > > Nobody solved it yet.
> >
> > Maybe, that increasing the numbers of max. file handles and number of
> max.
> > inodes might help you:
> >
> > /proc/sys/fs/file-max
> > /proc/sys/fs/inode-max
> >
> > -- ynezz
> >
> > _______________________________________________
> > Openembedded-devel mailing list
> > Openembedded-devel at lists.openembedded.org
> > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
>



More information about the Openembedded-devel mailing list