From 37b420014fdd0f6e1ea5aecd05f04ed0a33fa5b7 Mon Sep 17 00:00:00 2001 From: markj Date: Wed, 7 Aug 2019 03:14:45 +0000 Subject: [PATCH] readelf: Close input files when done with them. The low fd limit used by poudriere exposed an odd failure mode in cap_fileargs (used by readelf as of r350516). In particular, when the limit was hit, both the main process and casper service would block on their shared socket, waiting forever for the other to send a message. Reported by: zeising MFC after: 3 days Sponsored by: The FreeBSD Foundation --- contrib/elftoolchain/readelf/readelf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/elftoolchain/readelf/readelf.c b/contrib/elftoolchain/readelf/readelf.c index b03798eabeb..de67c29516f 100644 --- a/contrib/elftoolchain/readelf/readelf.c +++ b/contrib/elftoolchain/readelf/readelf.c @@ -7732,10 +7732,12 @@ main(int argc, char **argv) for (i = 0; i < argc; i++) { re->filename = argv[i]; fd = fileargs_open(fa, re->filename); - if (fd < 0) + if (fd < 0) { warn("open %s failed", re->filename); - else + } else { dump_object(re, fd); + close(fd); + } } exit(EXIT_SUCCESS); -- 2.45.0