PATCH: PR gold/17896: Plugin_manager::release_input_file leaks file descriptors

Cary Coutant ccoutant@google.com
Wed Jan 28 18:28:00 GMT 2015


> +       PR gold/17896
> +       * plugin.cc: Include <unistd.h> and <cerrno>.
> +       (Plugin_manager::release_input_file): Close file descriptor when
> +       called from the claim_file hook.  Otherwise, release the object.
> +    if (::close(f.fd) < 0)

File descriptors for object files are managed by the Descriptors
class; we should never call ::close() directly.

Calling obj->unlock() on the file should be sufficient to release the
descriptor. It may not be closed immediately, but it will get closed
eventually if we get close to running out of file descriptors. If
Descriptors::close_some_descriptor() for some reason doesn't consider
that descriptor available for closing, then there's a bug elsewhere.

-cary



More information about the Binutils mailing list