0
votes

We have a commad line utility written in delphi.

We use JclCompression library to compress the files

The problem we have that sometimes it work sometimes it does not. We are compressing same files

Here is exception log

10/06/2015 12:25:29 Not enough storage is available to complete this operation 10/06/2015 12:25:29 10/06/2015 12:25:27

10/06/2015 12:25:29 [006CB7F6] JclCompression.TJclSevenzipUpdateArchive.Compress (Line 8867, "JclCompression.pas" + 16) + $2E

10/06/2015 12:25:29 (0000EE08) [0040FE08] 10/06/2015 12:25:29 [006CB7F6] JclCompression.TJclSevenzipUpdateArchive.Compress (Line 8867, "JclCompression.pas" + 16) + $2E

10/06/2015 12:25:29 (00008BF2) [00409BF2] 10/06/2015 12:25:29 [017674FD] DlDMUn.TdlDM.ExecuteZip (Line 4766, "DlDMUn.pas" + 59) + $16

10/06/2015 12:25:29 [01770992] DlDMUn.TdlDM.ExecutePackageItem (Line 6229, "DlDMUn.pas" + 59) + $4

10/06/2015 12:25:29 [01749973] DlDMUn.TdlDM.ExecutePackage (Line 498, "DlDMUn.pas" + 16) + $4

10/06/2015 12:25:29 [0174969E] DlDMUn.TdlDM.Execute (Line 450, "DlDMUn.pas" + 29) + $7

10/06/2015 12:25:29 [017D8E31] cl.cl (Line 108, "cl.dpr" + 19) + $7

1
run SysInternal Process Monitor and log the file activity of your program (other kinds of activity are not relevant). What most probably happen is that when 7-zip.org updates a large archive, it needs double the free space on the disk to create a temporary archive and clone all the non-being-updated files from old archive to new one. So when there is no enough free space to put a copy of the archive there - it failsArioch 'The
As Arioach already said you need some exta space on your system drive where temporary files are stored. Another cuase for this might be the use of FAT32 partiotion on your disk drive (either system or target drive) whicjh limits you to have files with 3GB or less.SilverWarior
I have a lot of disk space, zip file size is just 7 meg. So disk space is not the problemuser3428876
u never heard of "zip bombs" ? well, maybe the zip format is not what 7-zip understands, maybe passwords, whatever. I think you have to 1) make with ProcMon your app's file I/o log in the moment of problem 2) make your program save the failed tasks, copy the zip file, copy all the extra data you needed to update - into a dedicated disk for that replay samples - so you would be able to reproduce it.Arioch 'The

1 Answers

0
votes

I also had same problem while unzipping, but in my case i was trying to unzip a file and unzipped file was opened and already exists on same location.You should review the code and log the results as suggested by "Arioch 'The" to reproduce.