Comment 0 for bug 1535121

Revision history for this message
Eugene Savelov (savelov) wrote : Archive::Zip does not close archive files

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)