[LLVMdev] Proposal: release MDNodes for source modules (LTO+debug info)

Rafael EspĂ­ndola rafael.espindola at gmail.com
Fri Nov 15 07:19:27 PST 2013


On 14 November 2013 18:01, Stephen Checkoway <s at pahtak.org> wrote:
>
> On Nov 14, 2013, at 8:19 AM, Rafael EspĂ­ndola <rafael.espindola at gmail.com> wrote:
>
>> But gold has at most 2 objects loaded at any time.
>
> Are you sure about that? I haven't looked into it but while building Chromium with LTO, I get:
>
> ../../third_party/gold/gold64: fatal error: out of file descriptors and couldn't close any
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
> ninja: build stopped: subcommand failed.
> [secdev:~/chromium/src/out/Release] (master) s$ ulimit -Sn
> 10000
>
> Looking in /proc, it has 10013 open file descriptors. With only 2 objects loaded at a time, I'd expect many fewer file descriptors to be open. Maybe it only has 2 objects in memory at once but keeps all the file descriptors open?

That is odd. I will debug it in a sec, but we have in the claim_file_hook:

  if (code_gen) {
    if (lto_codegen_add_module(code_gen, M)) {
      (*message)(LDPL_ERROR, "Error linking module: %s",
                 lto_get_error_message());
      return LDPS_ERR;
    }
  }

  lto_module_dispose(M);

In fact, with current gold we call get_view, so the plugin uses the
same fd as gold. It might actually be a bug with gold trying to cache
too many open files.

How are you trying to build it?

Cheers,
Rafael




More information about the llvm-dev mailing list