Ubuntu 15.10 containst Archive::Zip v 1.49 that ontains a bug that creating/updating a zip archive file does not close it , and creating many files generates "too many open files" error similar to this -
IO error: Can't open <.......>: Too many open files at /usr/share/perl5/Archive/Zip/FileMember.pm line 40. Archive::Zip::FileMember::_openFile(Archive::Zip::ZipFileMember=HASH(0x23e62b0)) called at /usr/share/perl5/Archive/Zip/FileMember.pm line 30 Archive::Zip::FileMember::fh(Archive::Zip::ZipFileMember=HASH(0x23e62b0)) called at /usr/share/perl5/Archive/Zip/ZipFileMember.pm line 384 Archive::Zip::ZipFileMember::rewindData(Archive::Zip::ZipFileMember=HASH(0x23e62b0)) called at /usr/share/perl5/Archive/Zip/Member.pm line 1059 Archive::Zip::Member::_writeToFileHandle(Archive::Zip::ZipFileMember=HASH(0x23e62b0), IO::File=GLOB(0x24399d0), 1, 0) called at /usr/share/perl5/Archive/Zip/Archive.pm line 420 Archive::Zip::Archive::writeToFileHandle(Archive::Zip::Archive=HASH(0x242eda8), IO::File=GLOB(0x24399d0)) called at /usr/share/perl5/Archive/Zip/Archive.pm line 456 Archive::Zip::Archive::overwriteAs(Archive::Zip::Archive=HASH(0x242eda8), "<.......>") called at /usr/share/perl5/Archive/Zip/Archive.pm line 440
Archive::Zip::Archive::overwrite(Archive::Zip::Archive=HASH(0x242eda8)) called at ./arcoper.pl line 57
lsof -p <pid> shows all /tmp/*zip files deleted, but still open, up to max open files (1000 which is system default)
Increasing number of files in limits.conf makes the problem generate less frequently.
installing latest version 1.56 from cpan fixes the problem - Using many zip files correctly closes them, does not generate errors, and lsof -p <pid> shows only several files (less than 20)
Ubuntu 15.10 containst Archive::Zip v 1.49 that ontains a bug that creating/updating a zip archive file does not close it , and creating many files generates "too many open files" error similar to this -
IO error: Can't open <.......>: Too many open files at /usr/share/ perl5/Archive/ Zip/FileMember. pm line 40. Archive: :Zip::FileMembe r::_openFile( Archive: :Zip::ZipFileMe mber=HASH( 0x23e62b0) ) called at /usr/share/ perl5/Archive/ Zip/FileMember. pm line 30 Archive: :Zip::FileMembe r::fh(Archive: :Zip::ZipFileMe mber=HASH( 0x23e62b0) ) called at /usr/share/ perl5/Archive/ Zip/ZipFileMemb er.pm line 384 Archive: :Zip::ZipFileMe mber::rewindDat a(Archive: :Zip::ZipFileMe mber=HASH( 0x23e62b0) ) called at /usr/share/ perl5/Archive/ Zip/Member. pm line 1059 Archive: :Zip::Member: :_writeToFileHa ndle(Archive: :Zip::ZipFileMe mber=HASH( 0x23e62b0) , IO::File= GLOB(0x24399d0) , 1, 0) called at /usr/share/ perl5/Archive/ Zip/Archive. pm line 420 Archive: :Zip::Archive: :writeToFileHan dle(Archive: :Zip::Archive= HASH(0x242eda8) , IO::File= GLOB(0x24399d0) ) called at /usr/share/ perl5/Archive/ Zip/Archive. pm line 456 Archive: :Zip::Archive: :overwriteAs( Archive: :Zip::Archive= HASH(0x242eda8) , "<.......>") called at /usr/share/ perl5/Archive/ Zip/Archive. pm line 440 :Zip::Archive: :overwrite( Archive: :Zip::Archive= HASH(0x242eda8) ) called at ./arcoper.pl line 57
Archive:
lsof -p <pid> shows all /tmp/*zip files deleted, but still open, up to max open files (1000 which is system default)
Increasing number of files in limits.conf makes the problem generate less frequently.
installing latest version 1.56 from cpan fixes the problem - Using many zip files correctly closes them, does not generate errors, and lsof -p <pid> shows only several files (less than 20)