Failed to decompress compressed data.

Json B
2014-07-19
2014-07-27
  • Json B
    Json B
    2014-07-19

    Hi Eric,

    I have a install.esd based Windows 8 ISO, I using wimlib-imagex.exe to extract from it, wimlib-imagex.exe fails:
    E:\wimlib-1.7.1-BETA-windows-i686-bin>wimlib-imagex.exe extract I:\sources\install.esd 1 --dest-dir=j:\ [ERROR] Failed to decompress data! MiB (42%) done
    ERROR: Exiting with error code 2:
    Failed to decompress compressed data.

     
    Last edit: Json B 2014-07-20
  • synchronicity
    synchronicity
    2014-07-19

    Are you able to provide an example file that has the problem?

    If not, can you check whether you are able to extract any individual files from the image using 'wimlib-imagex extract'? Try several different files in different directories.

     
  • synchronicity
    synchronicity
    2014-07-20

    I downloaded the ISO file for testing, so you can remove or hide it now.

    There's a bad compressed data chunk about halfway through the install.esd file. About 2 megabytes into the chunk, the data starts decompressing into garbage. Have you verified that DISM is able to extract it successfully...?

     
  • synchronicity
    synchronicity
    2014-07-20

    Here's what I got with DISM...

    PS m:\> dism /apply-image /imagefile:j:\mnt\install.esd /index:1 /applydir:m:\
    
    Deployment Image Servicing and Management tool
    Version: 6.3.9600.17031
    
    Applying image
    [=====================      37.0%                          ]
    
    Error: 605
    
    The specified buffer contains ill-formed data.
    
    The DISM log file can be found at C:\Windows\Logs\DISM\dism.log
    

    So it looks like the file really does contain garbage. I can't do anything about it then.

     
  • Json B
    Json B
    2014-07-24

    I downloaded an ISO file from:
    http://suprbay.net/torrent/10426142/Windows_8.1_AIO_24in1_with_Update_x64_v2_en-US_Jun2014

    wimlib can't successfully extract it.
    F:\wimlib-1.7.1-BETA-windows-x86_64-bin>wimlib-imagex.exe extract E:\sources\install.esd 7 --dest-dir=G:\ [ERROR] The stream is corrupted!96 MiB (37%) done
    (Expected SHA1=153bc23b01fb4c4a9d46bce07e098e1c8fab8212,
    got SHA1=2747738da1a41df226fee21ab955b81448f420a3)
    ERROR: Exiting with error code 28:
    The SHA1 message digest of a WIM resource did not match the expected value.

    I had already successfully extracted it using dism.exe.
    C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools>dism /Apply-Image /ImageFile:E:\sources

    \install.esd /index:7 /ApplyDir:G:\

    Deployment Image Servicing and Management tool
    Version: 6.3.9600.17029

    Applying image
    [==========================100.0%==========================]
    The operation completed successfully.

     
  • synchronicity
    synchronicity
    2014-07-24

    I don't think DISM even checks SHA-1 message digests by default. Try passing the /Verify option to DISM and seeing if it still works. Also I generally wouldn't trust a file you download from a torrent.

     
  • Json B
    Json B
    2014-07-24

    Dism.exe worked perfectly with /Verify and /CheckIntegrity options.

    C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools>dism /Apply-Image /Verify /CheckIntegrity

    /ImageFile:E:\sources\install.esd /index:7 /ApplyDir:G:\

    Deployment Image Servicing and Management tool
    Version: 6.3.9600.17029

    Applying image
    [==========================100.0%==========================]
    The operation completed successfully.

     
  • synchronicity
    synchronicity
    2014-07-24

    I don't want to torrent that entire file. Can you post the output of 'wimlib-imagex info' and 'wimlib-imagex info --lookup-table' when passed the WIM file as an argument?

     
  • synchronicity
    synchronicity
    2014-07-24

    Also, this won't make a difference for this problem but you really should be using 'wimlib-imagex apply', not 'wimlib-imagex extract'.

     
  • Json B
    Json B
    2014-07-25

    I have done it. like this:
    wimlib-imagex.exe info e:\sources\install.esd > info.txt
    wimlib-imagex.exe info --lookup-table e:\sources\install.esd > lookup-table.txt

    Please see the attached file.

     
  • synchronicity
    synchronicity
    2014-07-25

    Thanks. I've made a special build of the library to help debug the problem. Try to extract an image from your install.esd using wimlib-imagex.exe inside the testing.zip file attached to this post. It should dump compressed chunks to the files "chunk51" and "chunk52". It's completely untested, but if it works then upload the two chunk files to somewhere where I can access them.

     
    Attachments
  • Json B
    Json B
    2014-07-25

    It worked perfectly, please see the attached file.

     
    Attachments
  • synchronicity
    synchronicity
    2014-07-26

    I've fixed the problem and uploaded updated v1.7.1-BETA files. There was a very slight difference (just one byte!) in how chunk52 was being decompressed, due to a quirk in how Microsoft implemented pre- and post-processing of x86 machine code with LZMS compression. Thanks for reporting the problem!

     
  • synchronicity
    synchronicity
    2014-07-26

    Also, funnily enough, the /verify option to DISM doesn't actually do anything. With ImageX it would check file checksums. Of course, wimlib does this by default so that problems like what you reported don't go undetected...

     
  • Json B
    Json B
    2014-07-27

    It worked perfectly now! Thanks for all your hard working.