You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[ x ] My issue is valid with mirror default sample and not specific to my user-mode driver implementation
[ x ] I can always reproduce the issue with the provided description below.
[ x ] I have updated Dokany to the latest version and have reboot my computer after.
[ x ] I tested one of the last snapshot from appveyor CI
Description
Hi :)
The changes done in the root directory of the mirror do not seem to be mirrored in some cases related to memory mapping.
The change in the size of the file is detected, but the content is wrong at the end of the file.
This problem appears in the mirror default sample. Here is a 100% reproduction of the problem.
Test1.txt used for the reproduction (you need a file sufficiently big for the error to occur) Test1.txt
# in one shell# Create tests/Assets and tests/AssetsVirtual and put Test1.txt in tests/Assets.# Then mount tests/Assets as tests/AssetsVirtual
$ ./x64/Release/mirror.exe /r "tests/Assets" /l "tests/AssetsVirtual" /e /d /s
# in another shell# tests/Assets/ is mounted as tests/AssetsVirtual for this reproduction# First test, Assets/Test1.txt and AssetsVirtual/Test1.txt read the same.
$ ./test_map.exe
SUCCESS
# Modification of Test1.txt in the root directory Assets/
$ echo"AA">> tests/Assets/Test1.txt
# The modification isn't correctly seen in AssetsVirtual
$ ./test_map.exe
ERROR
[!] tests/AssetsVirtual/Test1.txt and tests/Assets/Test1.txt do not have the same content
(acc:20074995 vs acc:20075060)
# Latest character of the file:
Assets/Test1.txt: '222222\nAA\n'
AssetsVirtual/Test1.txt: '222222\nA\n ' # one A is missing, replaced by a \n and there is an extra space at the end.
(Note that there is a correlation between this bug and the fact that it passes in the Cleanup then Read behaviour documented in the Dokan documentation and mentionned in #1016. I couldn't replicate it without having the Cleanup then Read behavior.)
The text was updated successfully, but these errors were encountered:
@grandemk Sorry for the long delay.
Could you elaborate more on (Note that there is a correlation between this bug and the fact that it passes in the Cleanup then Read behaviour documented in the Dokan documentation and mentionned in #1016. I couldn't replicate it without having the Cleanup then Read behavior.) ?
Did you changed the sample for it to work or fail ?
Mostly, some sizes of the file Test1.txt trigger the bug, so I just tweaked the content of Test1.txt until the bug occured (with, for example the file I linked).
From what I remember, I talked about correlation because I could get two path of execution in the Mirror Sample when I read the content of the file:
Create -> Read -> Cleanup (normal path of execution)
Create -> Cleanup -> Read (the path that can happen with mmaped file)
While tweaking the content of Test1.txt to trigger the bug, I would only see 2. Create -> Cleanup -> Read when I reproduced the bug.
This would be called only one time, and then subsequent Read wouldn't show any calls to the Mirror Sample Dokan API Implementation, as if the information was cached before the user space driver and wasn't correctly invalidated in some case (probably related to some kind of rounding in page size, as writing enough data would at some point invalidate this cache and the correct data would be read.)
Environment
Check List
Description
Hi :)
The changes done in the root directory of the mirror do not seem to be mirrored in some cases related to memory mapping.
The change in the size of the file is detected, but the content is wrong at the end of the file.
This problem appears in the mirror default sample. Here is a 100% reproduction of the problem.
Test1.txt used for the reproduction (you need a file sufficiently big for the error to occur)
Test1.txt
(Note that there is a correlation between this bug and the fact that it passes in the Cleanup then Read behaviour documented in the Dokan documentation and mentionned in #1016. I couldn't replicate it without having the Cleanup then Read behavior.)
The text was updated successfully, but these errors were encountered: