Uploaded image for project: 'Core ReactOS'
  1. Core ReactOS
  2. CORE-19200

Copying a Large 250+ MB File Multiple Times Using Drag and Drop Causes File Corruption

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Critical
    • None
    • None
    • 0.4.15-dev-xxx (either some MemoryManager or FastFat commit)

    Description

      While testing https://jira.reactos.org/browse/CORE-17624 I found another issue.

      Reproduction steps:

      1) Create a VM using VBox or VMware with 512 MB of RAM.
      2) Choose a virtual HDD with at least 30 GB (you may need this much).
      3) Install ReactOS into the VM using bootcd-0.4.16-dev-1091-g24c2e44-x86-gcc-lin-dbg with FAT32.
      4) Redirect the CD drive to an ISO file having a file of at least 250 MB (I used SQL2KSP3.iso).
      5) Open an Explorer Window and navigate to the the CD drive (For me D: ) showing the large file.
      6) Open another Explorer Window and under the C:\ drive create a new subdirectory named CT.
      7) The CT is for 'Copy Test' and now navigate to this new subdirectory.
      8) Reposition the two windows left-to-right as needed to be able to see the file information.
      9) Now you should have a screen with the two explorer windows for the source and destination.
      10) Drag and Drop the large file from the CD drive D:\ into the C:\CT directory.
      11) After the copy is complete rename the copied file by adding an "01" (index as required).
      12) In my case this means that I will have 'SQL2KSP301.iso' (first time only) as the file name.
      13) Now right-click on the new file and select properties.
      14) If all is well, you will see the normal properties window.
      15) If there is a previously copied file, then right-click on it and select properties.
      16) Again, if all is well, you will see the normal properties window.
      17) If all went well, repeat the procedure from Step #10 above.
      18) This procedure should show the problem within 10 or 20 repetitions.
      19) It is expected to find the assert occuring on properties of the previous file copied.
      20) During this process, you should hit the following DPRINT1 and assert in the debug output.

      (ntoskrnl/io/iomgr/error.c:714) IoRaiseInformationalHardError: c0000102, '\CT\VB6_Pro02.iso'
      Assertion failed: ErrorStatus != STATUS_FILE_CORRUPT_ERROR
      Source File: /srv/buildbot/worker_data/Build_GCCLin_x86/build/ntoskrnl/io/iomgr/error.c, line 716

      Debug Log: 16-1091D-copy-01.txt

      Results Screen:

      Attachments

        1. 15-1709-after-copy.png
          15-1709-after-copy.png
          136 kB
        2. 15-1709-after-reboot.png
          15-1709-after-reboot.png
          109 kB
        3. 16-1091D-copy-01.txt
          52 kB
        4. 16-1091D-TC-copy.txt
          181 kB
        5. Boot-fail-file-corrupt.png
          Boot-fail-file-corrupt.png
          59 kB
        6. Boot-fail-file-corrupt-02.png
          Boot-fail-file-corrupt-02.png
          84 kB
        7. Copy_Assert_05.png
          Copy_Assert_05.png
          133 kB
        8. Copy_Fail_01.png
          Copy_Fail_01.png
          147 kB
        9. Copy-No-Assert-06.png
          Copy-No-Assert-06.png
          183 kB
        10. copytest.bat
          0.8 kB
        11. copytst.bat
          1 kB
        12. core-19200-debug-01.patch
          2 kB
        13. Orig-CORE-19200-Description.txt
          1 kB
        14. ReactOS_Copy_Test_512MB.log
          38 kB
        15. ReactOS_Copy_Test.log
          62 kB
        16. recycler.c
          1 kB
        17. recycler.exe
          41 kB
        18. tc-copy-15-6679-01.txt
          286 kB
        19. tc-file-corrupt-fix-15-6679.txt
          0.9 kB

        Issue Links

          Activity

            People

              Unassigned Unassigned
              DougLyons DougLyons
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: