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

reproducible assertion STATUS_FILE_CORRUPT_ERROR in NTOSKRNL iomgr when dealing with file-copying large files and the recycler

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Critical
    • None
    • None
    • None

    Description

      I used 0.4.15-dev-6789-g9360423 GCC8.4.0dbg RosBEWin2.2.2 here.
      That was directly after Timos MM commits, but Timos MM commits are not responsible for this issue. The issue is rather reproducible, and we do know it since 1month at least to happen on master. Doug Lyons confirmed the issue already.

      Reproduction steps

      • Spend 10GB for your VMs HDD, install with FAT32. The size is not so important. Just make sure there is more than enough space
      • I invested 500MB RAM to the VM (the size should be smaller than the big file you use for copying)
      • install ros, and install the Total Commander 9.12 from rapps
      • now copy with that a big file (mine is 799.222.820bytes ~ 800MB) from CDFS to you C:\ drive
      • make sure the file has been properly copied by using the Total Commanders "Compare file by contents" function in its file-tab
        the comparison will succeed
      • now delete the file on C:\
      • open the recycler via its desktop link, you should see the file inside
      • now copy the same file again from your CDROM to C:\
      • compare its content again to verify that it has properly been copied
        the comparison will succeed
      • now delete the file on C:\
      • open the recycler

      Exactly when you open the recycler you will get an assertion

      *** Assertion failed: ErrorStatus != STATUS_FILE_CORRUPT_ERROR
      ***   Source File: ../ntoskrnl/io/iomgr/error.c, line 716
      

      0.4.15-dev-6789-g9360423_fastfatAssert_translated.log
      0.4.15-dev-6789-g9360423_fastfatAssert.png
      The assertion can be continued, and the recycler will show up with 2 files inside.

      Initially we expected the rootcause to be that we do have 2 files with the same name.
      But that is not the root-cause. If you do try the same with a very small file only, then the issue will not happen.
      Those files must be big

      Sometimes you will have to retry that a few times before it happens, but I got it here after the 2nd copy already. As far as I have tested it, it will never happen after the first copy already. It needs at least a 2nd one.

      Please don't ask me to resolve the callstack, because I did that already, see CORE-19266 for details on why ros dos currently suck on that.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              reactosfanboy reactosfanboy
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: