GithubHelp home page GithubHelp logo

Comments (26)

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024 1

Hi. About this issue. I've just spent a few hours trying to figure this out and only afterwards I find this very sandboxie issue.

So, what I found is that, Firefox is trying to delete the trash* dirs from within the cache2 dir and for some reason, it doesn't even attempt to execute the delete command(DeleteFileW? or it's actually SetDispositionInformationFile with Delete: True - seen when outside of sandboxie does it, even though it is using DeleteFileW of C:\Windows\System32\KernelBase.dll seen in stacktrace by Process Monitor, and RemoveDirectoryW for the directory after the files are removed) and because it's coded with a white true, it keeps looping forever, as long as those trash* dirs exist. Should you remove them manually, then the 25% CPU usage stops.

https://bugzilla.mozilla.org/show_bug.cgi?id=968101#c20

I'm currently unsure why it works outside of sandboxie, it is able to find and delete them. But inside, apparently the deletion isn't even attempted(filtered by SetDispositionInformationFile in Process Monitor for example)! So, it could still be a firefox issue... I'm unsure.

The loop happens like this:

[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 12272: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash13638

to see that I've had to set some environment variables:

C:\Program Files\Mozilla Firefox>set MOZ_LOG_FILE=log.txt
C:\Program Files\Mozilla Firefox>set MOZ_LOG=cache2:5
C:\Program Files\Mozilla Firefox>firefox -P

The while true code, in Firefox, is here: https://searchfox.org/mozilla-central/rev/6dc530332ceb86c9d196c1afe8ba5c90c26be898/netwerk/cache2/CacheFileIOManager.cpp#3364

I'm guessing that file->Remove(isDir); doesn't actually remove or even attempt to remove the file, iff it's even reached there. No idea. I can't compile firefox(or sandboxie), sorry.

This paste expires in 21 days but it shows how the looping happens(captured by Process Monitor): https://paste.mozilla.org/MK8ZFw3Z/raw

from sandboxie.

DavidXanatos avatar DavidXanatos commented on July 30, 2024 1

Interesting find I Will take a look on it,t hanks for the research.

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024 1

the sad part is, that I'm no longer able to reproduce the issue now. I tried placing trash* dirs there. I've even seen Firefox create new ones, and even from within sandboxie it was still able to find and delete them all now! I haven't upgraded Firefox(78.0b3 (64-bit)) or sandboxie(5.40.1 64bit) so I don't understand why it won't infinite loop anymore now! It's almost as if, it only gets stuck in certain conditions and once I've manually removed those trash* dirs once, it takes some special circumstances for the issue to happen again. So, I don't know how to re-trigger this, as it seems to be working now. And the deletion apparently happens via Operation CreateFile in Process Monitor, where the stacktrace can be seen to contain RemoveDirectoryW for dirs and DeleteFileW for the files within. There's no SetDispositionInformationFile (as Operation) anymore, but I could swear I've seen it happen before, during the same process of trash* files/dirs deletions process (just don't remember if it was outside or inside of sandboxie when I've seen it happen, but the latter case could only have been after my manual deletion of the trash* dirs after which I was unable to trigger this issue anymore ever since because it always kept working as intended aka trash dirs were getting (created and)deleted successfully). Is it possible it's using two different types of deletion? and it lately chose the one that works? I'm not even sure anymore.

So, if you ever get this issue, try to avoid removing the dirs manually, or else you risk being unable to re-create this issue. It's almost as if it seems fixed, but I could swear it cannot be... I even have firefox studies disabled(I think), so even firefox couldn't have fixed it behind my back.

I have no idea why it couldn't remove the trash* dirs before and it was thus infinite looping, but I KNOW that it was!(EDIT: not just because as soon as I removed the dirs manually the CPU usage stopped) And now, it seems to always work: it creates the dirs and removes them successfully now. Why? How? I must know...

from sandboxie.

DavidXanatos avatar DavidXanatos commented on July 30, 2024 1

Well first of VS 2019 allows you ton install a 2017 and a 2015 compiler toolset,
so you can use a 2019 installation just fine. I'm currently using 2017 myself.
the only old thing you need for sandboxie is the Window 7.1 DDK

Currently I'm using Qt5.11.2 for SandMan.exe but any newer should work as well.

Cheers
David X.

from sandboxie.

DavidXanatos avatar DavidXanatos commented on July 30, 2024 1

OutputDebugString youls print to visual studios output window,
or oyu can use a tool like dbgview.exe from sys internals or task explorer to view the debug output

when you have compiled it you need to replace teh files you changed in your original sandboxie instalation, as long as you dont change teh driver that does not need the kmdutill.exe or a reboot just stop sbiesvc and replace what you need

from sandboxie.

rugabunda avatar rugabunda commented on July 30, 2024

Same issue as mentioned in details here from multiple people: https://community.sophos.com/products/sandboxie/f/forum/116766/firefox-constant-25-cpu-usage-in-sandboxie

from sandboxie.

rugabunda avatar rugabunda commented on July 30, 2024

Just in case, for future reference, here is a backup: https://web.archive.org/web/20200517035708/https://community.sophos.com/products/sandboxie/f/forum/116766/firefox-constant-25-cpu-usage-in-sandboxie

from sandboxie.

DavidXanatos avatar DavidXanatos commented on July 30, 2024

thx will check that out currently I'm kind of buried in bug reports so that may take a while to get to to fix.

from sandboxie.

rugabunda avatar rugabunda commented on July 30, 2024

Seems the cpu usage issue is fixed; after years and years of pleeding to sophos developers to no avail, DavidXanatos nailed it in a week, or was that a day? im not sure. I triggered the bug within 2 minutes PRIOR to installing the latest version. Now it seems fixed, its been 12 hours or so without any issues.

It is typically impossible to go 20 minutes without this issue re-occurring, and its a bug affecting thousands of people; I will keep you posted over the coming days. fingers crossed.

My god you are doing GREAT WORK! Thank you

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

ah, the issue is back for me but I hadn't noticed it(due to silent enough fan), but to be clear I haven't yet updated sandboxie, I will after this and edit this comment to report. EDIT: confirmed still happening with SandboxieInstall64-v5.41.2.exe (sha256 f3bbb093d0efb4b4de3d12898c4be2a4018a32724605f308aa7f7080faa84ca8) but I think I found something...(in next comment)

But this time I won't be removing those trash* dirs because it's hard to reproduce this again! (but I know that it will stop CPU usage if I do remove them manually)
Any ideas?

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

Maybe here's why firefox gets confused: I see two different contents for that dir, when I look at it from within Total Commander vs when I look at it from within the sandbox. You may say this IS NORMAL ! and maybe it is... but I'm betting this is why firefox gets confused somehow!!

Actually there's three views now...
when I run explorer.exe or cmd.exe from the host(not via sandboxie) while the current dir is C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2 , it automatically gets the [#] ... [#] title showing me that it's actually ran explorer or cmd inside that sandbox! Both of these cmd and explorer apparently see the same content (ie. same files and dirs!), BUT, when I look via cmd and total commander from outside the host, they each see different contents even compared to the sandbox contents, not just themselves, so this is why I say there's three different views! I show below exactly.

So,
1) view one:
this is what dir sees within cmd.exe (and same as explorer.exe) while it is sandboxed (eg. has [#] title)

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2

06/20/2020  11:38 AM    <DIR>          .
06/20/2020  11:38 AM    <DIR>          ..
06/19/2020  12:18 PM                 0 ce_Kg==
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUs
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUsYSw=
06/20/2020  11:45 AM    <DIR>          doomed
06/20/2020  11:45 AM    <DIR>          entries
06/20/2020  11:25 AM    <DIR>          trash10313
06/18/2020  23:55 PM    <DIR>          trash14175
06/20/2020  11:15 AM    <DIR>          trash1485
06/20/2020  11:37 AM    <DIR>          trash481
               3 File(s)              0 bytes
               8 Dir(s)   8,657,235,968 bytes free

2) view two:
this is what cmd.exe which is ran on the host (initially in c:\ as current dir, let's say) and then chdir-ed to the cache2 dir manually within:

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2

06/19/2020  12:18 PM    <DIR>          .
06/19/2020  12:18 PM    <DIR>          ..
06/19/2020  12:18 PM                 0 ce_Kg==
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUs
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUsYSw=
06/19/2020  12:18 PM    <DIR>          doomed
06/19/2020  12:18 PM    <DIR>          entries
06/18/2020  23:55 PM    <DIR>          trash14175
               3 File(s)              0 bytes
               5 Dir(s)   8,657,203,200 bytes free

(see less trash dirs here)

3) view three
this is what total commander sees when it's running outside of any sandbox (just like cmd is running, on view two above):

Clipboard01
(you see those ce_Kg== files are not here, and more trash dirs compared to view two)

And I've refreshed and re-ran those commands multiple times to ensure the contents remained as such, in all three views! even while firefox is now currently running with 25% cpu usage(aka one(of the four) core at full load).

So you see how all those views are different? I bet this is what trips up firefox while it's trying to do that background deletion of the trash dirs. I don't know how or why, but I did notice via Process Monitor that it does access that cache2 path in at least two ways, eg:
way one:
C:\Sandbox\John\DefaultBox\user\current\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash1485
way two:
C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash1485

which tells me that the last one is probably within sandbox? though I've no idea how it's able to access the outside of sandbox path... (as a process ie. firefox.exe, that's supposedly running inside sandboxie)

I used filter:
Process Name->is->firefox.exe
Path->contains->cache2

EDIT: Technically you could argue that this is a firefox bug because it doesn't check whether file/dir deletion succeeded or not(and handle it) and it just assumes that it did, and since it's in an infinite while loop, it finds it again on the next run (more or less), hence why the infinite loop! But the issue on the sandboxie side is that, it shows firefox files/dirs that don't exist, or so it seems to me:)) OR, somehow firefox is attempting to delete them in such a way that it happens outside of the sandbox (thus the deletion fails, but then again, firefox doesn't know it failed because it doesn't check - yeah it's all in that code)

click to expand for all the files/dirs within, for each view

1) view one: (the sandboxed cmd.exe)

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2

06/20/2020  12:05 PM    <DIR>          .
06/20/2020  12:05 PM    <DIR>          ..
06/19/2020  12:18 PM                 0 ce_Kg==
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUs
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUsYSw=
06/20/2020  12:08 PM    <DIR>          doomed
06/20/2020  12:08 PM    <DIR>          entries
06/20/2020  12:05 PM            11,701 index
06/20/2020  11:25 AM    <DIR>          trash10313
06/18/2020  23:55 PM    <DIR>          trash14175
06/20/2020  11:15 AM    <DIR>          trash1485
06/20/2020  12:12 PM    <DIR>          trash481
               4 File(s)         11,701 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\doomed

06/20/2020  12:08 PM    <DIR>          .
06/20/2020  12:08 PM    <DIR>          ..
06/20/2020  12:06 PM            19,336 12378
06/20/2020  12:06 PM            18,647 12490
06/20/2020  12:08 PM            18,931 1944
06/20/2020  12:07 PM            19,104 2726
06/20/2020  12:07 PM            18,420 2838
06/20/2020  12:07 PM            29,805 4185
06/20/2020  12:07 PM            16,078 4297
06/20/2020  12:08 PM            15,823 4750
06/20/2020  12:08 PM            29,539 7779
06/20/2020  12:08 PM            18,227 8453
              10 File(s)        203,910 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\entries

06/20/2020  12:08 PM    <DIR>          .
06/20/2020  12:08 PM    <DIR>          ..
06/20/2020  11:19 AM             9,848 0151C878C45E6668A6EB103F9FEF655CCA6A19DF
06/20/2020  11:58 AM            16,557 02122B1D2945BA8DC925C1BEFB7C3876AD7CBEBC
06/20/2020  11:33 AM            74,432 02C7FACC1B6FD67AB9011B839461C3346E4F4BC3
06/20/2020  12:05 PM            12,377 02F3C7F54873AEF0FB997D8AE71C731A33E08411
06/20/2020  11:38 AM             9,011 04436CD2DE9241ADE798546E0C71B8FF42C23968
06/20/2020  11:38 AM            27,386 0598B7C46B2D1A42A17678DA81EC5F66BB8D21F1
06/20/2020  11:33 AM            46,849 06DE8EEFB973448018F5CB564A1188763193E28E
06/20/2020  11:33 AM           447,355 07B2DFF0F0D0E514BEB6363C46EA78D750B4E310
06/20/2020  11:49 AM            32,222 084216DEF5BAA71FFA4F297339D159F6C9CE778F
06/20/2020  11:47 AM           102,614 084F548498517B0DD574A51270023ECD24DC8238
06/20/2020  11:33 AM            15,459 09AAC8136E76CF5D9C214296530EC014FD5BB2C9
06/20/2020  12:05 PM            10,848 09DB86F326CD0A16AE4900A8A1BF8C9390E1B300
06/20/2020  11:33 AM            14,181 0B284F824E657955EDB0986F0A321A77BB07DC78
06/20/2020  11:33 AM            82,126 0C3D220AD0E742C739549CE6E1F3912BBE425529
06/20/2020  11:33 AM            59,337 0C962C828AF4493D8B25F4C756B6EBAD2C059734
06/20/2020  12:02 PM             9,337 0CA9C634294078CC4FEFF929AACE8F244818A6DE
06/20/2020  11:38 AM           151,283 0D4D596D16EAA1562DCFBD674EA260D6D4932017
06/20/2020  11:33 AM            10,035 0DBCBABFFA910358A263BAC0BE6990D4415955D2
06/20/2020  12:02 PM            18,588 0F148CF070074BE498F0F11C846F662860828C24
06/20/2020  12:02 PM             8,859 102C1A5E04C6CC2600E5C562461951246373DC70
06/20/2020  11:19 AM            10,430 12B8926364C91A6C163D11E251A18194552403F7
06/20/2020  11:21 AM            14,202 1332D9DD96BC8BF1B60F94F9E739CC19501083EE
06/20/2020  11:19 AM            46,533 137363A8B93B9F67DD9716E63594151A8A01B158
06/20/2020  11:41 AM            14,780 1394724B6B04F3A06CFB82F66F484FCB1714DB3B
06/20/2020  11:22 AM             8,974 13C09E8F03969B22CB80CBC94461EB2EA0C849B6
06/20/2020  11:19 AM            11,561 173C0D8445183E304971745E9DC79E2E4AEB4761
06/20/2020  11:40 AM            11,795 179C349F64EA738B1A34B695790F61570CE7B229
06/20/2020  11:19 AM            16,405 17A1BAE7EF343D72A7282CFFC1219C8310445EB2
06/20/2020  11:38 AM            22,243 17F6DA084DBDD28F49D77F10F58AAA151D357B88
06/20/2020  11:33 AM            21,926 18C275C602C2DF4EEDDA7EF3FD67FFE78F97232B
06/20/2020  11:15 AM             7,706 19880A12086D229D962E86A7085AD2307A9A905B
06/20/2020  12:02 PM             9,341 19DBF060DCA850B70D35DC0A2266A5D1853952DC
06/20/2020  11:39 AM            48,325 1A34F389F5D9964C7456A3EC5171E56582B5824E
06/20/2020  11:22 AM             8,685 1A3D36CAF2329DD1ED946A342EDA87E201EF9784
06/20/2020  11:40 AM            11,762 1A7F346673F999A561104516E7280EC86D27794D
06/20/2020  11:22 AM            10,349 1BF63008E31B13CF94A0FB3B2FBD2181611E953E
06/20/2020  11:38 AM            17,398 1C4D2216C6C36A5C5B6D75A08D583478743473EC
06/20/2020  11:33 AM            12,955 1EE69E630D4A1B499FAE9F22EA0814D71A6F20A6
06/20/2020  12:08 PM            18,929 202BBF112168C45EF86AC2D593174FDCD672A05F
06/20/2020  12:02 PM             8,323 207CF3AD7B553063E8371403FD4E222DC2C46345
06/20/2020  12:02 PM             9,724 207F5B7CF8F8E033E7412326B6F920B04D7FF4EF
06/20/2020  11:33 AM           149,897 21BC2808E15C88CACA9A7E400C61C16660C0D863
06/20/2020  11:33 AM            22,293 227C2D63FB2BC35810DF8217724CA9F4FA7F804E
06/20/2020  12:05 PM            10,922 22B2E193D47D8FC887F1887486E32112C65AA2B4
06/20/2020  11:33 AM            10,266 2313CF1070154F87780E1CF2CD5CB8881DDF0EC8
06/20/2020  11:38 AM           143,260 25281C4073062EFCF8E36E43ADCF39026B3963D6
06/20/2020  11:38 AM            10,134 254256B27E0C48CF9B80B695F0B3B8CA84610495
06/20/2020  12:02 PM            10,233 2548450E47380255F7CB59748EE625501DB98BA3
06/20/2020  11:38 AM            50,002 26636DABB699A0ED97645F84CA8D2D065A14DA1D
06/20/2020  11:38 AM            11,118 269726CF5018E4BCBFFD717F97DE5837820E06CC
06/20/2020  11:40 AM            11,745 26A2B1CF5428626E8CA91C63538794569E88614B
06/20/2020  11:51 AM            12,347 26B2E20C35C6327281BBD602FBA992F86DEEBEEB
06/20/2020  11:23 AM             9,871 2733BC1CAF8E97290EA2CB18A304280BDB2DD347
06/20/2020  11:19 AM             8,444 2753F474D45051EADB1864CB895D2C0270D552F0
06/20/2020  11:22 AM            16,079 28D869B79C04B6069F5ED3749847917B2E3AB6C9
06/20/2020  12:05 PM            14,265 28F10B42640907DF6E6BF26A303BB45027B3D5F1
06/20/2020  11:19 AM            10,914 29D4A3A8DF9B4DB3772682A88D49B188E4816B6F
06/20/2020  11:39 AM            10,123 2A72349B8DC2EB3F2862FFEB3E911F1A5633CA82
06/20/2020  01:45 AM            24,852 2B8FB3A7C1E8990CE64886D66718692D2B2ED2BC
06/20/2020  11:40 AM            38,053 2CCB06F4CC2FCD788D921F07094A19F93D8CE6D2
06/20/2020  11:33 AM            59,420 2D2C65B5BBA937703E10E206BEA4CFCD07DDE253
06/20/2020  11:34 AM           603,235 2D30C93D5B33259022A5FFD85166534BEC26AA24
06/20/2020  11:19 AM             8,836 2EC19066880E7E7F5341DB080275B68F5A1914CB
06/20/2020  12:07 PM            17,596 2FF207E504913996F727364C86A32B4FA2807DA1
06/20/2020  11:45 AM             9,170 3015EB558978E72E185CC720D8F1CA09E6075F28
06/20/2020  11:33 AM            31,759 3081FA06F57EFA1B5D05892265384B7119DFC13A
06/20/2020  11:19 AM             9,494 32A696B0A90F887A91FF7FDA22649626CF8F1CC2
06/20/2020  11:40 AM            11,974 33261D7103810E5D09DBDBA46295AEE80F91814B
06/20/2020  12:08 PM            16,471 35C144E9F57C81E15BDA7FBD2F9490E7594EADDB
06/20/2020  11:19 AM            43,666 35F03BA881A10D6955BE8CF4D7869D82AB5BA2DF
06/20/2020  01:45 AM            47,227 3604E70147CA44439D43DFBA36F270FC8B1FC4B2
06/20/2020  11:23 AM             9,789 365FC0B1B2DA91D5A4E57EACD189E4D320FC869C
06/20/2020  01:45 AM            18,953 36D9D149CB2F13CA0A4B5EFDABDEADC7F608883F
06/20/2020  11:22 AM            99,179 3948A88A97ACB344DEF8F311C95C098360543A14
06/20/2020  01:38 AM            27,463 39FBEDDAA3C13A8194EAB4C25F06302BFA5EA981
06/20/2020  11:33 AM            51,121 3AAFA9ECEEC257F33D62601674E59AC72E413D76
06/20/2020  11:19 AM            13,922 3B2BA4ACD400A7DB4CA24B1A635ECB587BA3DC94
06/20/2020  12:02 PM             8,380 3B63CD42913A0CB4C2C0AD179F4CD1F6B584F458
06/20/2020  11:19 AM           148,847 3C69EA6FC82767631DC56433F741918A25B7B40F
06/20/2020  11:33 AM            37,454 3CE4A5387F7B9AED7834E088A57083F3CEBDDE2E
06/20/2020  12:08 PM            17,808 3D36D17BA8DB7E53AD7952334ADE4A1A0A98E002
06/20/2020  11:40 AM            15,484 3D62C65A5D7B9962D29EBB3C3EAECB2DBED445DE
06/20/2020  11:19 AM             8,584 3E6E648819644C9D8856ABE9E577E7783DF7EF53
06/20/2020  01:48 AM           454,364 3E7E21708A78E50A6E314212C8A0691B04F90BCD
06/20/2020  12:05 PM            10,718 3EA725CBE1BDED093DC5A39C4A868278D41F8B3B
06/20/2020  11:39 AM            83,702 3EC0AE6DBA236312E19985364A351205AC933554
06/20/2020  11:33 AM             8,866 3F002DBBC40DFA57DC1B700A8B1FA5B8A9327C72
06/20/2020  11:19 AM            16,476 3F2A97D8D7BD66BC392E0D1D72F9C4F46B47780C
06/20/2020  12:02 PM            10,457 3FA46EED1361D8A0BB61A0F523CB43B0E0AB02D8
06/20/2020  11:19 AM             9,218 3FC63668A6630E6797D7037C09C9BB3054E274B5
06/20/2020  11:19 AM            22,751 446B4DD653B29DCA892E20BEC5F4CC57CA1AEE1C
06/20/2020  11:22 AM            17,055 457B2E694E0D744744C01C0BFE738E91DBBDE837
06/20/2020  11:23 AM             7,712 4665B2637C8F203175A0DD0A24578501651838B7
06/20/2020  11:33 AM            53,086 46DACEC6E3F549FFAABC298D9706EBF1364ACD4C
06/20/2020  11:40 AM            36,605 46E3CC98F223DF114FF6A4AF5801861D335942C0
06/20/2020  11:19 AM            61,589 4962F7080AA6B3188F6B6990D00CC01DF6C64423
06/20/2020  11:33 AM             9,626 4ABC3A53A7271C2936C933DD2CE4F8B81EE5DE7C
06/20/2020  12:02 PM             8,730 4C59AB9AFFFB1A1BDC82A80241EBDE138F993CC1
06/20/2020  11:40 AM           100,655 4CBC7E12CB1EFE4537C5F5C2D4B235031C58E27C
06/20/2020  11:34 AM            15,374 4E711940FD892FEB256C8F72E6FAC8BE19D65F54
06/20/2020  12:05 PM            10,745 4E761C32B3E40FC3D17CED70CC6854D5A4FBEEAF
06/20/2020  11:41 AM            27,129 4ECC0808C71E4CA4D494C1E99D8267C33AF1421D
06/20/2020  12:02 PM            14,633 4ED3D01B1978584849215155EEE71A4AC6CA8D6E
06/20/2020  11:33 AM            11,916 4F24C5869DC723546B877E2B9E177BA2766976C3
06/20/2020  11:19 AM             8,769 4F28213517063C6717A25F2436EF48EC630C8F23
06/20/2020  11:33 AM            36,795 508A6DB23021F6C964082EB3794E3EDFF78CCB1A
06/20/2020  11:33 AM            22,015 51448D192BBFC2322973231AB41D1B8A2BF77F7D
06/20/2020  11:45 AM            17,958 51C92218C5AF52C2997738DBDDA4AA6EE2BDC366
06/20/2020  01:47 AM            24,591 5369D344F8C8E4D0666DE4AEEEA0A40C169106FD
06/20/2020  11:19 AM             9,034 53D931458EA3CE637B5E05C9F621D5368265CFD0
06/20/2020  12:01 PM            16,755 543900032DDDCD0B93D9942EB627D711D8453A30
06/20/2020  12:05 PM            13,425 55070D9C5D773B923EDBD4EFFA0E1D8DD573138F
06/20/2020  11:40 AM            11,800 557110652719D0C24C6A6C3335EBEEBD3B925936
06/20/2020  11:19 AM             8,775 564B24ACF97AFC31F6A95C0E7B7D0028BD90F13C
06/20/2020  11:34 AM            16,647 57B6A672C3E63BE8501FCCB77F4B7807E8CD9773
06/20/2020  01:42 AM            14,225 58F77BC2022709BE8EDFD9AFCE99C820DC87A871
06/20/2020  11:33 AM            11,898 5947B0696F2B637E7385768C750A35185DBA4278
06/20/2020  11:33 AM           292,934 596689DFECFA57B071AFECFB342129327FE298AB
06/20/2020  12:01 PM            17,485 5A7FB2FDE4F0BAFEA5EECC74CA66A1629173B6E5
06/20/2020  11:33 AM            39,661 5B2546314B33DC276B464EEEE0D0504F3027401A
06/20/2020  11:40 AM            12,082 5B389BEFFBE3BD1C2252ABC67CDB5A5E28FD6A76
06/20/2020  01:44 AM            13,369 5BAF9A7CA21404CF439E31E005FDFEF8C7A93026
06/20/2020  01:45 AM            13,836 5C0BE0C7E8265657A44644D41AAA7021E9455924
06/20/2020  11:40 AM            11,915 5C2F0FFD1A1FB6498A9327885051278DF9681A62
06/20/2020  12:02 PM            14,431 5DA72FDB5E0EE330CAEB3F00E8377492D49D0636
06/20/2020  12:06 PM            17,778 5EC5ECA8095C1BB5523525BF7CDF210A89057314
06/20/2020  11:22 AM             8,970 60375FB5F5F27DFCF32D042821154AF49F7CD62C
06/20/2020  11:22 AM             9,096 605EC27442F91116C265630751B5DC7D783096B9
06/20/2020  12:01 PM            29,791 610F8439B8552D3D0748C9C2AA9224318ED8ABF1
06/20/2020  11:21 AM             9,968 63F48F4F7F1BC3195F5AB831F9794F3DBA2D30E1
06/20/2020  11:19 AM            12,894 646A99101A8013F40F4ED3798ED2C393CAB4186D
06/20/2020  11:33 AM            11,124 6475FBCE0ACA8BA3814A6AA0291DBA48FBFCF053
06/20/2020  11:19 AM            29,607 657F11C7CB23F89C755632BBFD56848106D4B4BD
06/20/2020  12:07 PM            17,262 674229BCD85AA7F04B8C4EC3A484CC6C564E6E7D
06/20/2020  11:15 AM             9,009 67B49A5AE45F639E7C40B71E8D6AD50372FEBCF3
06/20/2020  11:38 AM            10,809 6808BFC7DDEEF7FAA58C2CF498630F4D34B1C8E2
06/20/2020  11:21 AM             7,873 6A442627E45922DFEB8F060D1C82DB45902DB503
06/20/2020  11:33 AM             9,414 6B6FECEEB3D596977DB8D661EA3F44679D7B7931
06/20/2020  11:38 AM            27,303 6DD6283067B39516D0F11F215ACF0120D7C2775F
06/20/2020  11:33 AM            26,164 6DF9DF700C5805CAFDA0635FC0BD217A4B6B61AF
06/20/2020  11:22 AM            23,220 6EF0ACACEE81FF9FA1D6518D8C47E61753EB38E6
06/20/2020  01:42 AM            80,453 6F086F6414E0409E79C49B6B35A10882F08E5219
06/20/2020  11:38 AM            14,203 6FDBE21F98817776F3429095A35776DEB1AF886A
06/20/2020  11:33 AM             7,706 728C33DF0B12780DC97D3DCA3AF3F4206C00AA28
06/20/2020  11:59 AM            17,083 7386A7EA194D95925E06A96D8FE312CED53858A9
06/20/2020  11:22 AM             8,968 74C3AB39D578E9A245CC7B189E010E2D0D999A63
06/20/2020  11:19 AM            31,419 74D661EB668E15F1C24F2248566376C50E41FA98
06/20/2020  12:07 PM            18,427 74EF99D0AE775E8B2D88A72C5FC174DA9BF9787D
06/20/2020  01:40 AM            16,869 751D114985C313CC2E6D14FCE58F3F09C9B625C3
06/20/2020  11:40 AM           883,204 761E42FC3AD60763E23C0489CBD31A0A282FCA32
06/20/2020  12:02 PM             9,647 76506BBD39ADC6B558941BD214F70EE73FD88EB2
06/20/2020  11:33 AM            10,994 76B003A3BD6B21FD26FF54E0348C2C0BFA0545CE
06/20/2020  11:19 AM             9,695 775337BF87F10427D5B74ACAFEEAE3DBCF75FCCE
06/20/2020  11:40 AM            11,762 7AE1DD40872AEEE553FB5621356FDAE635554858
06/20/2020  12:02 PM             8,810 7BEC460AFCCD7927161F19AD2D5CB95B6F3AC613
06/20/2020  11:40 AM            21,194 7BF927B5B5831F749568522E8F7C40980EE8D467
06/20/2020  01:45 AM           105,218 7BFBE34FEC4DA5D054A1A97CBF345E7F164752CD
06/20/2020  11:38 AM            19,891 7DF609D9F931301A6D4E001A80F7918B4029AE9C
06/20/2020  11:40 AM            13,049 7F2A99346514F6C8AF83A3400515E5A0692BE632
06/20/2020  11:34 AM             9,902 80A201002E4CCFA6ABC4BF96737E090FC8222CFA
06/20/2020  12:02 PM             9,830 82B307EBF4AE02B2114E4C3ED4CB5F4E254AC5C4
06/20/2020  01:38 AM           232,494 836D870EEB9D86C6D4FD82C432FDBD3B20626D5D
06/20/2020  11:19 AM           301,362 848EFC39EE4A97848AB81D4768994DE13F47C739
06/20/2020  12:02 PM            16,041 8607FBDFE19DAC120F33BDC7BA41A5ACEB055B71
06/20/2020  11:40 AM            11,835 86CD609D6FD73E922FFB72E18A423B5F6CBEB6B0
06/20/2020  12:08 PM            15,742 889EAFF3DE66627F1710C77F05C0F9520CE35437
06/20/2020  11:34 AM             9,975 88EC44BC9DB7CA0D16576322BCF0AB0B2775E357
06/20/2020  12:08 PM            18,243 88F114C8559BA52B9D4A7F1F351321D6ACF08655
06/20/2020  11:40 AM            14,805 89A7981764C9389609CB2B16D08A8E18C532AB5D
06/20/2020  11:21 AM            16,725 8A481DE9E35B8518E3D8DDD99A0D537E89714E38
06/20/2020  11:19 AM             8,702 8B268D0DB825807479E0A018480C8AC08173CF53
06/20/2020  11:40 AM            10,329 8C315D8AA343907E9E6317777DFD74464F6A2B34
06/20/2020  11:33 AM            26,781 8C5E26179579A1C4EB4219383AFF91BDAB16430E
06/20/2020  11:17 AM            13,544 8E0CAF55EC545CCBA6025D3DD2E5901BAAB6D4F3
06/20/2020  11:52 AM            16,774 8E3B4CAAC23D46B35D08EB590C510408B5AEDBC8
06/20/2020  11:22 AM             9,003 90124BC5F522790884CD31983428C9F1F6F2C10D
06/20/2020  11:41 AM            15,593 902001E61EED1A09B7EC3E078BD3CA511254DCDE
06/20/2020  11:38 AM             9,877 90256890AD9BF8FEF94F54E475604A8DA500DBFB
06/20/2020  11:38 AM            10,532 90F846D85326769E6754A496DC0C61651670430A
06/20/2020  11:49 AM            16,066 920BCBEBB7EC86D417E5163767FA6D0F18956BD9
06/20/2020  12:02 PM             8,477 93D85E3243C667CF3CC669F957740F35A059AF56
06/20/2020  11:19 AM            16,349 940E3C53112782FFDE7CFE508A04B7917DBED8DA
06/20/2020  11:33 AM           163,394 942FC9B240FE5B74F3D59C8A0F9219039D09F995
06/20/2020  11:33 AM            57,803 943F047B5721DD6DB6CF49BE436119715273E044
06/20/2020  11:38 AM             8,967 96F72C8524E87F42DAE714F7D556D2DE76F04791
06/20/2020  12:05 PM            10,551 976DBF0119B4E740269C563D84DBF080AA76097D
06/20/2020  11:38 AM             9,473 979A3CF611BB9E6B79229A03A18B887B9B786D67
06/20/2020  12:01 PM            11,836 993DEFB95A4878D86EF78C3A6E6BF8A8D00789D6
06/20/2020  11:38 AM            12,974 9ABC8FDB6BCF03F35AB10C18892F53A5E5C5889A
06/20/2020  12:01 PM            33,036 9AD4A68A758506E4663210A6150F322808B8DC0B
06/20/2020  11:40 AM           264,734 9AFA57FF1FD55F579FC7F67F95DF13DC3238FF47
06/20/2020  11:38 AM            36,433 9D14465A36065A2B9AFD618298CFFFFF6C65A980
06/20/2020  11:41 AM            15,374 9DB705BFACC2BF6581E243CB579380F55ABD11F1
06/20/2020  11:23 AM           152,459 9DEE32ABCC771D295134DF12A801D469647C9ACD
06/20/2020  01:46 AM            54,773 9FAD6DF12C3A2A4BDD99C9B9E55BC01529860532
06/20/2020  12:08 PM            29,560 A0F5A7DA8F3A434DF02BE072847E476A0AB5CD97
06/20/2020  11:33 AM            12,118 A11D08A05F36F0C2993D2A5886B04BE515810EE1
06/20/2020  11:34 AM             8,967 A16FB1D11971907FD932101D71CCA4195C357BE4
06/20/2020  11:33 AM             9,395 A1BF7217967E16714C09FEF219CDEC6C120E9B8C
06/20/2020  01:44 AM            43,931 A3CB7ADE0C7C0279CE8933AABCCB0D668C6D8053
06/20/2020  01:40 AM            11,007 A517EAFF007154CE59E9FDB0A7885A18D767118F
06/20/2020  11:34 AM             9,443 A5C7AD9BCC30DC60F7B09A9667368E3084A24623
06/20/2020  12:02 PM            10,404 A6033E5127A37DFF1AA9EF705868B6A25F6307BB
06/20/2020  11:22 AM             8,979 A7A23783A16B7E0C52F55A03B7DC888024B62CFC
06/20/2020  11:38 AM             9,463 A7DB4C1FDF12B5742321C845223B11E363879F65
06/20/2020  11:19 AM             9,953 A8865891876B2E801A3698B0FBFE8DD00343CFAD
06/20/2020  11:19 AM             8,391 AA5EFA5F75E7FB16278FCFACC74A9FA52DE83255
06/20/2020  11:40 AM            79,896 AA97C66E8CE40D3A69AB0B792726DB00CB13D650
06/20/2020  01:45 AM            32,497 AA9B7AB162DBBFCCEDCAF99C06B19CDCA337E337
06/20/2020  11:34 AM             9,368 AAF5E6A48ED8F819C6C7BAF0EB84C7E498A492C2
06/20/2020  11:19 AM             8,964 AB5958A79273C1505C8CB192075F51F0216144C3
06/20/2020  11:38 AM            62,666 ACBA3E957DA0AA046DAD9BABBECADFA257F5AAE5
06/20/2020  11:33 AM            10,407 AD7B7945B98A7FFA32DDE9444A0065FC526F54F5
06/20/2020  11:39 AM            10,231 AE6AC937AD1FB2699EF1929DF8202EBB041D137B
06/20/2020  11:41 AM            11,830 AE96E578DC5A0204B7F7557A3F8BAE2731F8E95D
06/20/2020  11:38 AM            44,780 B0CFE10987873CDBB8660F323B7F067EADDBEFD4
06/20/2020  12:05 PM            12,395 B14D4665734D481542D866E14F02C0B1DEE060CC
06/20/2020  11:19 AM            16,823 B1CB09C442386E5BFDBCACEAE84630F0250C906C
06/20/2020  11:41 AM            16,478 B415402A928EAD685DC64D8B34C51AA3A2644F54
06/20/2020  12:02 PM             9,009 B44351131AEDBE6B4963408E81EB1E3561585A37
06/20/2020  12:05 PM            10,658 B4E893C75763FBFFCD90128B0B74B24754C224FA
06/20/2020  11:23 AM            40,906 B53ABF1415D6F4202A13628A0B6B9C2AF4C07816
06/20/2020  11:33 AM            11,158 B5F323F27DE61F315E514DD21BAF9EBD0C83F84B
06/20/2020  12:02 PM             8,388 B805F8DCE8392FF7BB1DF1AB39FBB34EFF970B59
06/20/2020  12:02 PM            46,833 B89E7332B97FD13B0AC8950A137580A05299358F
06/20/2020  12:02 PM             9,858 B971687AADF174D6123AFB4CBD7797952CD923C6
06/20/2020  12:05 PM            12,860 B98888C7D60B35CE16F4638C91F0A05E60C8F48D
06/20/2020  12:05 PM            15,993 BB7560482E1F5EFF86CD9E91F4C27B851F97C7A6
06/20/2020  11:23 AM            22,408 BC237ADEFD941B5241BA9E773A1AA58F49991DA9
06/20/2020  11:19 AM             9,897 BC476327573A0B3A47F0118831D31FDE7A1D0B75
06/20/2020  11:34 AM            10,925 BC71E1F99FDC6811E2A3845F5CFA36B0551AE18B
06/20/2020  11:38 AM            22,176 BEBBBC6DC6A1845298D59194F2A96B31779C6B4B
06/20/2020  11:19 AM             9,751 BFC325BB68EA4CB701407D60EB8E98F8DA20E3FE
06/20/2020  11:33 AM            93,632 BFF4024645A6235CFEA4E0862B000484114C8625
06/20/2020  01:45 AM            10,827 C01A8A28F78FB220B3F520CA5B548B8D117B2410
06/20/2020  01:45 AM            10,259 C09067F01AEB79AB55EF07649A263FC52A3EFCC3
06/20/2020  11:33 AM            17,274 C0B461F7F941F2D76EC94D1776FCEDD92930EB3E
06/20/2020  11:33 AM            13,305 C0FBA6097564FD25CDC396623583BCFAD2113E2F
06/20/2020  11:33 AM            12,143 C15F47756A39DF0A175572F6EDF2312788DE8C69
06/20/2020  12:02 PM             8,624 C20DCB81D04BB6C54C8E18F9EEDFDF59245CC9A5
06/20/2020  11:33 AM            20,979 C21D654C724424B0BAF9FF1DDABE75AE8B8631D4
06/20/2020  11:40 AM           265,746 C4A93E98B34921A5E93E476C817F279A122E6470
06/20/2020  11:58 AM            36,155 C62B5BCFFD505A9391CF1681423C71340F837204
06/20/2020  12:05 PM            13,400 C85E3EA6F06623BDAB34C19C935FE359278A82A9
06/20/2020  01:45 AM            13,812 C8877B364DDA3E40B20B5EDDEA4041C050E502D6
06/20/2020  11:33 AM           369,570 C8A1DA2A2695E5247014BFD90DDF09F0190F4448
06/20/2020  11:23 AM           109,448 C8B7E722FB32A15E85DCE7EC6A0C2F7B4C171591
06/20/2020  11:38 AM             9,569 C8D33FF1E7CBC6F6C6A8CFECF1F4AB3E6AE28FDE
06/20/2020  11:40 AM            42,325 C9225F049FBCFC39A712F65C649390F615AF6999
06/20/2020  11:22 AM             8,967 C974A65FBE4D6A2F9558CDAF24E9145CFABEF6DD
06/20/2020  12:07 PM            15,602 C9D92F5A2B93500A5A5BFFCEA8274922A166C3C7
06/20/2020  12:05 PM            10,719 CA971A578112DC653680AD268C6E448A30B09F0C
06/20/2020  11:33 AM            11,221 CAACC6AE1655B03F2F1084B68FD277B0F624D81A
06/20/2020  12:05 PM            10,681 CE3663CC40871BFA0B3554909501053A5F5DC4BB
06/20/2020  11:19 AM             8,715 CF11AF5C9EDC472A5037A49631E65BD4C6850E3D
06/20/2020  11:40 AM            11,799 D0AB2A0DAA7EBCD44DF6F41CBFAD97A2F3BF6B51
06/20/2020  11:19 AM             9,253 D1B6770530BC989F2017898A7E1C43457E24B5A7
06/20/2020  11:22 AM             9,011 D2E088E5FA558CE9E0EE910A91E330B4965B3D66
06/20/2020  11:39 AM           109,256 D31E33F357A9ADEA691EDF44F336BB836941D3D0
06/20/2020  12:05 PM            10,791 D4677F9100B52FD067D9F1726DDFD1338C2FFD6B
06/20/2020  11:33 AM            62,549 D49B83E4692701C3CECB9873FA12FB0C0D0BA812
06/20/2020  11:38 AM            10,922 D4E4285C323380C480080884417DCF4E96253206
06/20/2020  01:45 AM            41,239 D5FFFBA67225F8A27F8D470EFD416DCF410ECE78
06/20/2020  12:05 PM            12,607 D6905B7F6A0D483E9BA9A262A33F0338077ED1F2
06/20/2020  11:33 AM            27,220 D9CA6EAA479E8180382B39C36F2C591CF921F89F
06/20/2020  11:40 AM            14,979 DB2420A431121665FC47AA459A3752C6401042A0
06/20/2020  11:33 AM             9,068 DBAED94AE30B6860753D0D265B26677F5537FA00
06/20/2020  11:52 AM            16,614 DBBC69666E74B99B21147953AE332312E704D329
06/20/2020  11:33 AM            14,310 DCFAD4CBD3FFCA6FC2AFDA08A8B22DAAA35C4E52
06/20/2020  12:02 PM            17,015 E5E604411C1FF4A1A1C73560F0205677DE855860
06/20/2020  12:02 PM            11,801 E86346585A3E006001414D0FD72276E843B28A44
06/20/2020  11:22 AM            11,068 EA2198D54AB60112333D91BD2768B3E2A14CC6E1
06/20/2020  11:19 AM           179,909 EB58F0F179B039472B012C6FB401F6089D99FB5A
06/20/2020  12:02 PM           133,460 EC297D3A42DAC0EB7FB0DAD1A787B24EB868B15C
06/20/2020  11:33 AM             9,847 EF392FF16D0AE70C490F6ACCB25836755ABB92AE
06/20/2020  11:19 AM            47,430 EFEEC0D53D9E91CE4776BACE8A53F1F3789B0819
06/20/2020  12:05 PM            80,957 F0150DB1A709C3326BCB537D4091FB453C1F08D0
06/20/2020  11:22 AM             8,976 F041E6C55A67EA2968FCE02669EA8A269AA900A5
06/20/2020  11:23 AM           144,259 F07A4FE4AB62F21941441665ADAD325CBAFDCCD0
06/20/2020  12:00 PM            16,971 F1F6B197A520F1273846C98D97541EA27A431FD6
06/20/2020  12:05 PM            10,806 F3DABA1C1EFCFD8B20208F956102EBC956E1BAA7
06/20/2020  11:19 AM             9,852 F4CD75360A94709CD390C5792D7B017641800B9F
06/20/2020  11:22 AM             9,730 F58E4B7B8ECECE34DA2AFBF0B589AFBFC5F3A464
06/20/2020  12:02 PM             8,414 F72D485D1AF9550A1E5D5881D6D7652F0D363987
06/20/2020  12:02 PM             9,617 F7F5C1198A195591426C7F21E282EE7FA782AC69
06/20/2020  01:45 AM            14,203 F80D27B58993E206F55C40F6C478E8B520BDDCFD
06/20/2020  12:02 PM            10,917 F8C57A3A1677943835417E8FE70C41F820CDFDE9
06/20/2020  11:38 AM            11,016 F8CBD54DDA10F4286A41EC6A537240712D6C2308
06/20/2020  11:40 AM            11,833 FC5ED414F792FAAFFC1786703B889DE9C76A4931
06/20/2020  12:01 PM            17,160 FCC54CC5ED29231D4A9DB75FBBD23AB07D209A80
06/20/2020  12:05 PM            11,834 FD30EBDC94A255502C5B0BADC43DA43757A48F56
06/20/2020  12:05 PM            11,033 FD4FE66B56CD03ACD95320C6AA21BA32D7B44327
06/20/2020  12:08 PM            15,801 FF5DFE62F391497FDD05EE1EDE6F48A5CCACDF42
06/20/2020  11:19 AM            12,055 FF64079B420CD6B4138856E0013EFFF7E2C32BA9
06/20/2020  11:33 AM            78,196 FF99EDC4BA504B8B64E65F01425EE16A445CDE8E
             295 File(s)     11,316,686 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash10313

06/20/2020  11:25 AM    <DIR>          .
06/20/2020  11:25 AM    <DIR>          ..
               0 File(s)              0 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash14175

06/18/2020  23:55 PM    <DIR>          .
06/18/2020  23:55 PM    <DIR>          ..
06/18/2020  23:55 PM            14,204 14220
06/18/2020  23:55 PM            13,307 14383
06/18/2020  23:55 PM            14,203 15641
06/18/2020  23:55 PM            10,134 18728
06/18/2020  23:55 PM            11,846 22303
06/18/2020  23:55 PM            10,289 28149
06/18/2020  23:55 PM            11,745 2985
06/18/2020  23:55 PM            10,029 4403
06/18/2020  23:55 PM            15,024 587
06/18/2020  23:55 PM            16,082 6517
06/18/2020  23:55 PM            10,922 6629
06/18/2020  23:55 PM            11,179 9427
              12 File(s)        148,964 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash1485

06/20/2020  11:15 AM    <DIR>          .
06/20/2020  11:15 AM    <DIR>          ..
               0 File(s)              0 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash481

06/20/2020  12:12 PM    <DIR>          .
06/20/2020  12:12 PM    <DIR>          ..
               0 File(s)              0 bytes

     Total Files Listed:
             321 File(s)     11,681,261 bytes
              20 Dir(s)   8,636,510,208 bytes free

2) view two:
this is cmd.exe running on the host(not within sandboxie!)

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>dir /s
 Volume in drive C has no label.
 Volume Serial Number is 74AA-822A

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2

06/19/2020  12:18 PM    <DIR>          .
06/19/2020  12:18 PM    <DIR>          ..
06/19/2020  12:18 PM                 0 ce_Kg==
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUs
06/19/2020  12:18 PM                 0 ce_T151c2VyQ29udGV4dElkPTUsYSw=
06/19/2020  12:18 PM    <DIR>          doomed
06/19/2020  12:18 PM    <DIR>          entries
06/18/2020  23:55 PM    <DIR>          trash14175
               3 File(s)              0 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\doomed

06/19/2020  12:18 PM    <DIR>          .
06/19/2020  12:18 PM    <DIR>          ..
06/19/2020  12:18 PM            14,204 13908
06/19/2020  12:18 PM            16,082 15950
06/19/2020  12:18 PM            11,745 21828
06/19/2020  12:18 PM            15,024 29768
06/19/2020  12:18 PM            14,203 30901
06/19/2020  12:18 PM            10,132 3157
06/19/2020  12:18 PM            11,846 6421
06/19/2020  12:18 PM            11,179 6669
06/19/2020  12:18 PM            10,289 6781
06/19/2020  12:18 PM            10,029 7454
06/19/2020  12:18 PM            13,307 895
              11 File(s)        138,040 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\entries

06/19/2020  12:18 PM    <DIR>          .
06/19/2020  12:18 PM    <DIR>          ..
               0 File(s)              0 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\trash14175

06/18/2020  23:55 PM    <DIR>          .
06/18/2020  23:55 PM    <DIR>          ..
06/18/2020  23:55 PM            14,204 14220
06/18/2020  23:55 PM            13,307 14383
06/18/2020  23:55 PM            14,203 15641
06/18/2020  23:55 PM            10,134 18728
06/18/2020  23:55 PM            11,846 22303
06/18/2020  23:55 PM            10,289 28149
06/18/2020  23:55 PM            11,745 2985
06/18/2020  23:55 PM            10,029 4403
06/18/2020  23:55 PM            15,024 587
06/18/2020  23:55 PM            16,082 6517
06/18/2020  23:55 PM            10,922 6629
06/18/2020  23:55 PM            11,179 9427
              12 File(s)        148,964 bytes

     Total Files Listed:
              26 File(s)        287,004 bytes
              11 Dir(s)   8,653,508,608 bytes free

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>

3) view three (total commander view from the host, ie. not sandboxed)
capture_001_20062020_121153
capture_002_20062020_121208
capture_003_20062020_121218
capture_004_20062020_121226
capture_005_20062020_121236
notice how files are 0 bytes and how ALL THREE trash dirs have the same filenames !!! that's gotta be at least weird, right?

from sandboxie.

DavidXanatos avatar DavidXanatos commented on July 30, 2024

Not sure that this is wrong:

view 1 is inside the sand box which is a composite view of views 2 and 3

view 2 is the actual content of your unsandbox profile.

view 3 shows what was changed by the sandboxed firefox

View 3 is not supposed to contain any unchanged original files from view 2

Only when running sandboxes you see a combination of the real files with the captured alterations.

try the following, delete the original cache2, I assume you always run ff sandboxed so it shouldn't get re created and than watch if the issue re appears.
I presume its something around deleting and re creating folders with the same name, but on a short test I did not notice anything wrong

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

Damn, I think I totally confused myself... allthewhile thinking that I'm showing the contents of dir c:\Sandbox\John\DefaultBox\user\current\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2 from 3 views, but in fact I was also showing the host dir in view 2 ie. C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2

I'll need some time to review this again, so ignore what I said so far, it wasn't what I thought.

I do run Firefox outside of sandbox but only after updating it via its executable setup, then I try to update addons, then cleanup(ctrl+shift+del, all), exit. Then I delete the sandbox, run it in sandbox.

I deleted the trash dirs from host dir, but firefox was still using 25% CPU, then I deleted them from c:\Sandbox.... but only the trash dirs, and it immediately stopped the CPU usage. All while writing this.

EDIT: so now that I've once again deleted those trash dirs, the issue will take some time to re-occur... (I even restored both host and sandbox ccache2 dirs and it didn't re-ocur, go figure!) I guess it needs me to also run Firefox outside of sandbox for it to re-occur, so it may take a couple or more of updates via downloading the Firefox setup exe ... However though, I think I may altogether switch to Linux and say goodbye to Windows, so if you don't hear from me again, this is why, it's not because the issue didn't reoccur(I know it does, I already had it re-occur once, as per above). One thing to note is however that on host, all the files/dirs have "e" attribute (aka encrypted), not so for the sandbox ones, and I did notice that from within sandbox I couldn't delete (from cmd.exe) any files that were "e" on host, without first removing the "e", else it would give access denied. Oh well, I tried...

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

I got more info since I've compiled firefox locally and can now muck around with it as I please...

Look at what happens that starts the infinite loop in firefox:

[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::StartRemovingTrash()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::RemoveTrashInternal()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash15203
[Parent 18856: Cache2 I/O]: D/cache2 it's a file 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash15203\27323'
[Parent 18856: Cache2 I/O]: D/cache2 attempting remove of 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash15203\27323'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing file 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash15203\27323'
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash15203'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash15203'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash17007
[Parent 18856: Cache2 I/O]: D/cache2 it's a file 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15055'
[Parent 18856: Cache2 I/O]: D/cache2 attempting remove of 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15055'
[Parent 18856: Cache2 I/O]: D/cache2 failed(5) to remove file 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15055'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::RemoveTrashInternal() - Cannot remove trash file or dir. [name=15055] [absolutepath=C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15055]
[Parent 18856: Cache2 I/O]: D/cache2 it's a file 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15168'
[Parent 18856: Cache2 I/O]: D/cache2 attempting remove of 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15168'
[Parent 18856: Cache2 I/O]: D/cache2 failed(5) to remove file 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15168'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::RemoveTrashInternal() - Cannot remove trash file or dir. [name=15168] [absolutepath=C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007\15168]
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007'
[Parent 18856: Cache2 I/O]: D/cache2 failed(145) to remove dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash17007'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::RemoveTrashInternal() - Cannot remove trashdir. [name=trash17007]
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'

using this patch:

diff --git a/netwerk/cache2/CacheFileIOManager.cpp b/netwerk/cache2/CacheFileIOManager.cpp
--- a/netwerk/cache2/CacheFileIOManager.cpp
+++ b/netwerk/cache2/CacheFileIOManager.cpp
@@ -3387,16 +3387,17 @@ nsresult CacheFileIOManager::RemoveTrash
       NS_ENSURE_SUCCESS(rv, rv);
 
       continue;  // check elapsed time
     }
 
     // We null out mTrashDirEnumerator once we remove all files in the
     // directory, so remove the trash directory if we don't have enumerator.
     if (!mTrashDirEnumerator) {
+		LOG(("no more stuff to enumerate, so removing parent dir (non-recursive) '%s'", mTrashDir->HumanReadablePath().get()));
       rv = mTrashDir->Remove(false);
       if (NS_FAILED(rv)) {
         // There is no reason why removing an empty directory should fail, but
         // if it does, we should continue and try to remove all other trash
         // directories.
         nsAutoCString leafName;
         mTrashDir->GetNativeLeafName(leafName);
         mFailedTrashDirs.AppendElement(leafName);
@@ -3408,16 +3409,17 @@ nsresult CacheFileIOManager::RemoveTrash
 
       mTrashDir = nullptr;
       continue;  // check elapsed time
     }
 
     nsCOMPtr<nsIFile> file;
     rv = mTrashDirEnumerator->GetNextFile(getter_AddRefs(file));
     if (!file) {
+		LOG(("got nothing more to enumerate"));
       mTrashDirEnumerator->Close();
       mTrashDirEnumerator = nullptr;
       continue;  // check elapsed time
     }
     bool isDir = false;
     file->IsDirectory(&isDir);
     if (isDir) {
       NS_WARNING(
@@ -3426,18 +3428,30 @@ nsresult CacheFileIOManager::RemoveTrash
       if (LOG_ENABLED()) {
         LOG(
             ("CacheFileIOManager::RemoveTrashInternal() - Found a directory in "
              "a trash "
              "directory! It will be removed recursively, but this can block IO "
              "thread for a while! [file=%s]",
              file->HumanReadablePath().get()));
       }
-    }
-    file->Remove(isDir);
+    } else {
+		LOG(("it's a file '%s'", file->HumanReadablePath().get()));
+	}
+	LOG(("attempting remove of '%s'", file->HumanReadablePath().get()));
+    rv = file->Remove(isDir);
+	if (NS_FAILED(rv)) {
+		nsAutoCString leafName;
+        file->GetNativeLeafName(leafName);
+        //mFailedTrashDirs.AppendElement(leafName);
+        LOG(
+            ("CacheFileIOManager::RemoveTrashInternal() - Cannot remove "
+             "trash file or dir. [name=%s] [absolutepath=%s]",
+             leafName.get(), file->HumanReadablePath().get()));
+      }
   }
 
   MOZ_ASSERT_UNREACHABLE("We should never get here");
   return NS_OK;
 }
 
 nsresult CacheFileIOManager::FindTrashDirToRemove() {
   LOG(("CacheFileIOManager::FindTrashDirToRemove()"));
diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp
--- a/xpcom/io/nsLocalFileWin.cpp
+++ b/xpcom/io/nsLocalFileWin.cpp
@@ -54,16 +54,21 @@
 
 #include "mozIDOMWindow.h"
 #include "nsPIDOMWindow.h"
 #include "nsIWidget.h"
 #include "mozilla/ShellHeaderOnlyUtils.h"
 #include "mozilla/WidgetUtils.h"
 #include "WinUtils.h"
 
+//#include "mozilla/Printf.h" //for SmprintfPointer
+//extern mozilla::LazyLogModule gCache2Log;
+mozilla::LazyLogModule gCache2Log("cache2");
+#define LOG(x) MOZ_LOG(gCache2Log, mozilla::LogLevel::Debug, x)
+
 using namespace mozilla;
 using mozilla::FilePreferences::kDevicePathSpecifier;
 using mozilla::FilePreferences::kPathSeparator;
 
 #define CHECK_mWorkingPath()                                     \
   do {                                                           \
     if (mWorkingPath.IsEmpty()) return NS_ERROR_NOT_INITIALIZED; \
   } while (0)
@@ -2128,22 +2133,35 @@ nsLocalFile::Remove(bool aRecursive) {
         dirEnum->GetNext(getter_AddRefs(item));
         nsCOMPtr<nsIFile> file = do_QueryInterface(item);
         if (file) {
           file->Remove(aRecursive);
         }
       }
     }
     if (RemoveDirectoryW(mWorkingPath.get()) == 0) {
-      return ConvertWinError(GetLastError());
-    }
+		DWORD le=GetLastError();
+		LOG(("failed(%lu) to remove dir '%S'", le, mWorkingPath.get()));
+		//this didn't work (can't be seen anywhere)
+		//mozilla::SmprintfPointer msg = mozilla::Smprintf("failed to remove dir '%s'", mWorkingPath.get());
+		//NS_WARNING(msg.get());
+      return ConvertWinError(le);
+    } else {
+		LOG(("Succeeded in removing dir '%S'", mWorkingPath.get()));
+	}
   } else {
     if (DeleteFileW(mWorkingPath.get()) == 0) {
-      return ConvertWinError(GetLastError());
-    }
+		DWORD le=GetLastError();
+		LOG(("failed(%lu) to remove file '%S'", le, mWorkingPath.get()));
+		//mozilla::SmprintfPointer msg = mozilla::Smprintf("failed to remove file '%s'", mWorkingPath.get());
+		//NS_WARNING(msg.get());
+      return ConvertWinError(le);
+    } else {
+		LOG(("Succeeded in removing file '%S'", mWorkingPath.get()));
+	}
   }
 
   MakeDirty();
   return rv;
 }
 
 NS_IMETHODIMP
 nsLocalFile::GetLastModifiedTime(PRTime* aLastModifiedTime) { 

So the log shows how firefox started the process of removing the trash dirs and the first one it tries(trash15203) it succeeds in removing(I've verified that it's gone physically from disk also), the next one(trash17007) is a problematic one and cannot be removed(dno why yet) but as you can see, it tries to remove the 2 files which live inside it, which returns a GetLastError() of 5 (ERROR_ACCESS_DENIED 5 (0x5) Access is denied. ) (I made issue #77 regarding this) and then ignoring those errors, it tries to remove the dir(trash17007) itself(non-recursively! because firefox assumed that deleting the two files must've succeeded) and it yields 145 (ERROR_DIR_NOT_EMPTY 145 (0x91) The directory is not empty.) as GetLastError(), then it keeps moving on, and returns next dir(trash22085) and it apparently succeeded in removing(but not physically from the disk)! But then it keeps trying to find any other dirs, and it thus keeps finding this same dir(trash22085) over and over again due to while true, and it keeps "succeeding" to removing it, and yet it's not removed.

sandbox view is:

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\trash17007

06/24/2020  02:17 AM    <DIR>          .
06/24/2020  02:17 AM    <DIR>          ..
06/24/2020  02:17 AM            14,203 15055
06/24/2020  02:17 AM            10,129 15168
               2 File(s)         24,332 bytes

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\trash22085

06/24/2020  02:21 AM    <DIR>          .
06/24/2020  02:21 AM    <DIR>          ..
               0 File(s)              0 bytes

host view is:

 Directory of c:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\trash17007

06/24/2020  02:17 AM    <DIR>          .
06/24/2020  02:17 AM    <DIR>          ..
06/24/2020  02:17 AM            14,203 15055
06/24/2020  02:17 AM            10,129 15168
               2 File(s)         24,332 bytes

(EDIT: that's the only trash dir that exists on host, that's why I'm only showing it and its contents)

and the dirs and files are all encrypted ("e" in total commander) which might be important to know because as I've mentioned before, deleting an "e" file from within sandbox will give access denied and not delete it.

and host view(via total commander) of the sandbox location is:
1
2
3

As I was writing this however the loop stopped because deletion no longer "succeeded" but instead it gave GetLastError() of 32 (ERROR_SHARING_VIOLATION 32 (0x20) The process cannot access the file because it is being used by another process.) most likely while I was trying to list the contents of the dirs above.

[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 Succeeded in removing dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove() - Returning directory trash22085
[Parent 18856: Cache2 I/O]: D/cache2 got nothing more to enumerate
[Parent 18856: Cache2 I/O]: D/cache2 no more stuff to enumerate, so removing parent dir (non-recursive) 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 failed(32) to remove dir 'C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085'
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::RemoveTrashInternal() - Cannot remove trashdir. [name=trash22085]
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::FindTrashDirToRemove()
[Parent 18856: Cache2 I/O]: D/cache2 CacheFileIOManager::RemoveTrashInternal() - No trash directory found.
[Parent 18856: Main Thread]: D/cache2 CacheEntryHandle::Dismiss 000000001991F720
[Parent 18856: Main Thread]: D/cache2   already dropped
[Parent 18856: Main Thread]: D/cache2 CacheEntryHandle::~CacheEntryHandle 000000001991F720
[Parent 18856: Main Thread]: D/cache2 CacheEntryHandle::Dismiss 0000000018EF7180
[Parent 18856: Main Thread]: D/cache2   already dropped
[Parent 18856: Main Thread]: D/cache2 CacheEntryHandle::~CacheEntryHandle 0000000018EF7180
[Parent 18856: Main Thread]: D/cache2 CacheEntryHandle::Dismiss 0000000018ED0BA0
[Parent 18856: Main Thread]: D/cache2   already dropped
[Parent 18856: Main Thread]: D/cache2 CacheEntryHandle::~CacheEntryHandle 0000000018ED0BA0

Is this helpful?
Want me to do something else? (since I've easy way to add new changes to firefox now)
I know I can probably try to always remove the dir recursively(by changing a false to a true), that might be a workaround for this issue that Firefox could implement... Haven't yet tried to do this because if it works, it may take a while to reproduce the issue again. I still haven't figured out how to reproduce it, but it definitely needs both outside and inside the sandbox firefox runs! (tho not concurrently)

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

EDIT this is probably nothing, ignore this post:

Can't help but notice that, unless I'm missing something, if the sandbox view of dir trash22085 shows it as empty, doesn't that means that the host view of c:\sandbox... location of the same dir should also show empty? yet it shows two 0 byte files inside it. Alternatively shouldn't these files also be visible inside sandbox then? Again, I may be missing something...

EDIT: looks like I can have an empty "meh" dir in the c:\sandbox... which doesn't exist inside sandbox, as long as it exists on the host(outside of the c:\sandbox... path), just by messing with directory renames... and deleting it from sandbox. #71

from sandboxie.

DavidXanatos avatar DavidXanatos commented on July 30, 2024

wowo compiling your own firefox... respect...
was t strait forwards or a lot of hunting down dependencies?

Ok so the way it works if you delete a file inside sandboxie that exists on the host is that sandboxie creates a file in the sandboxed location that has a special attribute set marking if it finds that special file it means don't show the real file from the host.

I think the problem is really the encrypted attribute, I will do some tests with using that feature.

Thats very valuable information thank you.

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

I could look further into this if I knew how to compile sandboxie (ideally with VS2019, unless it really requires VS2015). Any pointers? Looks like it requires some version of QT, trying qt5.... looks like it also needs qt vs tools or else 1>QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly. and Severity Code Description Project File Line Suppression State Error C1083 Cannot open include file: 'QLocalServer': No such file or directory (compiling source file ..\..\src\qtlocalpeer.cpp) QtSingleApp c:\users\john\downloads\sandboxie-master2\sandboxie-master\sandboxieplus\qtsingleapp\src\qtlocalpeer.h 44 , it may need it but it has had no effect on the errors (even after selecting C:\Qt\Qt5.14.2\5.14.2\msvc2015_64 as Qt Versions), talk about hunting for dependencies :) had no such issues with firefox compiling (just that hg clone aborting/undoing everything 3 hours later, which should never be used as they recommend, but always with -stream -pull instead) Well it worked after selecting Convert custom build steps to Qt/MSBuild and restarting VS2019. Tried it again, turns out it just needed a VS2019 restart after selecting the Qt Versions for the very first time.

wowo compiling your own firefox... respect...
was t strait forwards or a lot of hunting down dependencies?

it was somewhat easy, compared to sandboxie :) but it did take 21+ hours to get to that comment

I guess the main problem is that I haven't found a way to reproduce this issue, I just somehow got it to happen again... if I knew the repro. steps, then for sure that would be useful to you.

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

Thanks! I've like zero experience with visual studio stuff but I finally managed to compile it(EDIT: correction: compiled sandboxie-plus not sandboxie which does have errors still!) (didn't run it yet tho, unsure even how to do that, do I need to make it into an install form and then install it? since I already have the normal/upstream sandboxie installed via installer...).

So, firefox is calling RemoveDirectoryW(some_trash_dir's_name_here) which returns non-zero from within sandboxie indicating that it did remove it aka that function succeeded, but in fact it doesn't, which is why the whole while true loop never exits.

Could you tell me where inside sandboxie is the code that traps/hooks this function, so I can check to see why it returns non-zero(aka succeeded to remove the dir) when in fact it doesn't remove it ?
The only relevant result I could find is the following, is this it? EDIT: ok that's definitely not it

if (RemoveDirectory(fullpath))

EDIT: ok I may have found it (lookin' into it):
// File_DeleteDirectory

if (info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) {

Now I wonder how to flippin' printf from there, or maybe send an event to the event log, or wut!

PS: some_trash_dir's_name_here is actually an empty dir when seen from within sandbox, but it contains two 0byte files when seen from host by looking inside c:\sandbox... directly. In that comment, it's trash22085.

Hmm, this is interesting: The RemoveDirectory function marks a directory for deletion on close. Therefore, the directory is not removed until the last handle to the directory is closed. I wonder if whether or not sandboxie or firefox could be missing a close? but it's too early to tell; there are many other easier things to check for first.

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

Ok so just for the record, the workaround is to enter(chdir), from within the sandbox, into the specific problematic trash dir(trash22085 in my case) from command prompt(cmd.exe). This will immediately break the loop(ie. stop the high CPU usage!) because it causes firefox to no longer get a success when trying to remove that dir, due to sharing violation.

ie. same as this:

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>rmdir trash22085

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>dir
 Volume in drive C has no label.
 Volume Serial Number is 1111-2222

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2

06/27/2020  15:33 PM    <DIR>          .
06/27/2020  15:33 PM    <DIR>          ..
06/27/2020  15:34 PM    <DIR>          doomed
06/27/2020  15:34 PM    <DIR>          entries
06/27/2020  15:33 PM            42,451 index
06/24/2020  02:19 AM            14,723 index.log
06/27/2020  14:55 PM    <DIR>          mii
06/27/2020  14:59 PM    <DIR>          shit
06/24/2020  02:17 AM    <DIR>          trash17007
06/24/2020  02:21 AM    <DIR>          trash22085
               2 File(s)         57,174 bytes
               8 Dir(s)   6,293,266,432 bytes free

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>dir trash22085
 Volume in drive C has no label.
 Volume Serial Number is 1111-2222

 Directory of C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.defa
ult-beta\cache2\trash22085

06/24/2020  02:21 AM    <DIR>          .
06/24/2020  02:21 AM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)   6,293,164,032 bytes free

(see? no error(ie. success), yet it didn't remove the empty dir)

now to get an error:
do this in a new terminal:

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>cd trash22085

now run that again in the original terminal:

C:\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache
2>rmdir trash22085
The process cannot access the file because it is being used by another process.

and bam, the firefox loop is broken this way.

So according to that code(however I haven't yet figured out how to printf or run stuff) that I've mentioned in an edit in the prev. comment, sandboxie not seeing any files within that dir(I guess?), will return success, even though it didn't delete the dir somehow. I'll have to figure out how to debug that part(but not with a debugger heh), possibly using OutputDebugString (tho I've no idea where I'd see its output...

PS: if you delete that trash dir with explorer.exe it looks deleted until you refresh, which shows that even explorer is tricked into thinking deletion succeeded.

from sandboxie.

menaquinoneK2 avatar menaquinoneK2 commented on July 30, 2024

Thank you for that useful info! I was compiling successfully Sandboxie-Plus thus far, but Sandboxie itself was another pain of failures(but then I realized I should've set to Release and x64).

Anyway, I've tracked down the issue to a bafflingly succeeding call to __sys_NtCreateFile (which is presumably the unhooked version of NtCreateFile) which tries to delete-on-handle_close the dir \Device\HarddiskVolume2\Sandbox\John\DefaultBox\user\current\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085 (which is correct path).

the code reached is exactly this:

CreateOptions |= FILE_DELETE_ON_CLOSE;
DesiredAccess |= DELETE;
}
status = __sys_NtCreateFile(
FileHandle, DesiredAccess | FILE_READ_ATTRIBUTES,
&objattrs, IoStatusBlock, AllocationSize, FileAttributes,
ShareAccess, CreateDisposition, CreateOptions, EaBuffer, EaLength);

and that call freakin' succeeds!!! and yet the dir isn't deleted(well, it can't delete it, really because that dir is not empty in that path I mentioned above, it has two 0 byte files inside it, the call should fail with directory not empty or something! however that dir inside the sandbox is empty, but inside the sandbox it does have a very different path)
but why doesn't it fail?
// Also what is setting the value for the function __sys_NtCreateFile which is initially a NULL function ? (I couldn't figure this one out, but presumably it is set by "something" correctly to point to the original and unhooked NtCreateFile ? so this doesn't matter much, if it is so...) EDIT: ok I found what, but VS2019 doesn't show me the results for this in file_init.c when searching for NtCreateFile, how odd! I've had to use external tool to search for it, or github search! I must immediately delete VS2019 for this unforgivable sin :) (also running out of space)

Basically there's nothing else I can do now, that call to the unhooked NtCreateFile succeeds when it shouldn't ... I cannot comprehend!

here's all the info you need to repro iff you already have the broken trash dir(dno how to get that yet)

output when trying to rmdir trash22085 from a cmd.exe within sandboxie:

[4400] Welcome to File_NtCreateFileImpl
[4400] lock is up
[4400] some succ11
[4400] succeeded in calling File_GetFileType
[4400]  DeleteOnClose = FALSE
[4400] now working on:
[4400] \Device\HarddiskVolume2\Sandbox\John\DefaultBox\user\current\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085
[4400] main status was success
[4400]  some weird success112
[4400]  blah990
[4400]  some success blah990
[4400] about to lift lock
[4400] meh1, so it succeeded
[4400] about to return
[4400] Wants to delete(or just check if exists as empty!!) the following abspath dir:
[4400] \Device\HarddiskVolume2\Sandbox\John\DefaultBox\user\current\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085
[4400] Pretending success1!
[4400] was just checking! returning
[4400] Welcome to File_NtCreateFileImpl
[4400] lock is up
[4400] some succ11
[4400] succeeded in calling File_GetFileType
[4400] found FILE_DELETE_ON_CLOSE
[4400] Special case, does the following exist?
[4400] \Device\HarddiskVolume2\Users\John\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085
[4400]  HaveTrueFile = 'N', pretending success
[4400]  DeleteOnClose = TRUE
[4400] now working on:
[4400] \Device\HarddiskVolume2\Sandbox\John\DefaultBox\user\current\AppData\Local\Mozilla\Firefox\Profiles\dosekefd.default-beta\cache2\trash22085
[4400]  entered another if4
[4400] main status was success
[4400]  some weird success112
[4400]  some success blah990
[4400] about to lift lock
[4400] meh1, so it succeeded
[4400] about to return
[4400] File_NtDeleteFileImpl's call of File_NtCreateFileImpl was a success
[4400] NtClose was a success

and the patch that gets that output (to be applied on f00ef56 ):

diff --git a/Sandboxie/SboxHostDll/SboxHostDll.vcxproj b/Sandboxie/SboxHostDll/SboxHostDll.vcxproj
index 3b16116..778469a 100644
--- a/Sandboxie/SboxHostDll/SboxHostDll.vcxproj
+++ b/Sandboxie/SboxHostDll/SboxHostDll.vcxproj
@@ -18,15 +18,15 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{3A42A9F3-E0C7-4633-9570-381802D6647D}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>SboxHostDll</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>Unicode</CharacterSet>
     <PlatformToolset>v140</PlatformToolset>
diff --git a/Sandboxie/apps/com/BITS/SandboxBITS.vcxproj b/Sandboxie/apps/com/BITS/SandboxBITS.vcxproj
index 64f5750..6620219 100644
--- a/Sandboxie/apps/com/BITS/SandboxBITS.vcxproj
+++ b/Sandboxie/apps/com/BITS/SandboxBITS.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{E40CC819-6990-DA28-3E1F-6708BC98E37B}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/apps/com/Crypto/SandboxCrypto.vcxproj b/Sandboxie/apps/com/Crypto/SandboxCrypto.vcxproj
index 326564d..4b9b9d1 100644
--- a/Sandboxie/apps/com/Crypto/SandboxCrypto.vcxproj
+++ b/Sandboxie/apps/com/Crypto/SandboxCrypto.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{41453A79-CA9B-ABCA-981C-5242AFC72DDF}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/apps/com/DcomLaunch/SboxDcomLaunch.vcxproj b/Sandboxie/apps/com/DcomLaunch/SboxDcomLaunch.vcxproj
index 49c73b0..7e02e1f 100644
--- a/Sandboxie/apps/com/DcomLaunch/SboxDcomLaunch.vcxproj
+++ b/Sandboxie/apps/com/DcomLaunch/SboxDcomLaunch.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{8055A629-631E-84F5-8F3C-1908F264C81D}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/apps/com/RpcSs/SandboxRpcSs.vcxproj b/Sandboxie/apps/com/RpcSs/SandboxRpcSs.vcxproj
index bf8b231..f07b0a6 100644
--- a/Sandboxie/apps/com/RpcSs/SandboxRpcSs.vcxproj
+++ b/Sandboxie/apps/com/RpcSs/SandboxRpcSs.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{5410C534-4858-C748-86AD-0567A2451FDE}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/apps/com/WUAU/SandboxWUAU.vcxproj b/Sandboxie/apps/com/WUAU/SandboxWUAU.vcxproj
index c2c4d60..220d481 100644
--- a/Sandboxie/apps/com/WUAU/SandboxWUAU.vcxproj
+++ b/Sandboxie/apps/com/WUAU/SandboxWUAU.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{42DB5510-0268-4655-B483-B9D6E4E48D62}</ProjectGuid>
     <RootNamespace>SandboxWUAU</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
     <PlatformToolset>v140</PlatformToolset>
diff --git a/Sandboxie/apps/common/Common.vcxproj b/Sandboxie/apps/common/Common.vcxproj
index 80feae4..1a1f7bd 100644
--- a/Sandboxie/apps/common/Common.vcxproj
+++ b/Sandboxie/apps/common/Common.vcxproj
@@ -16,15 +16,15 @@
     <ProjectConfiguration Include="SbieRelease|x64">
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/apps/control/Control.vcxproj b/Sandboxie/apps/control/Control.vcxproj
index 60008cd..d6bf138 100644
--- a/Sandboxie/apps/control/Control.vcxproj
+++ b/Sandboxie/apps/control/Control.vcxproj
@@ -18,15 +18,15 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}</ProjectGuid>
     <RootNamespace>Control</RootNamespace>
     <ProjectName>SbieControl</ProjectName>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>Unicode</CharacterSet>
     <UseOfMfc>Static</UseOfMfc>
diff --git a/Sandboxie/apps/ini/SbieIni.vcxproj b/Sandboxie/apps/ini/SbieIni.vcxproj
index 0db89f9..4178ceb 100644
--- a/Sandboxie/apps/ini/SbieIni.vcxproj
+++ b/Sandboxie/apps/ini/SbieIni.vcxproj
@@ -30,15 +30,15 @@
   <ItemGroup>
     <ResourceCompile Include="resource1.rc" />
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{B8D7002B-0468-44E7-93A7-94327A5D7C7A}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>SbieIni</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>Unicode</CharacterSet>
     <PlatformToolset>v140</PlatformToolset>
diff --git a/Sandboxie/apps/start/Start.vcxproj b/Sandboxie/apps/start/Start.vcxproj
index d1bc4f2..f49d19f 100644
--- a/Sandboxie/apps/start/Start.vcxproj
+++ b/Sandboxie/apps/start/Start.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{8B9E1B9D-FB3C-3009-9196-4315871BCD73}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseOfMfc>Static</UseOfMfc>
     <PlatformToolset>v140</PlatformToolset>
diff --git a/Sandboxie/core/dll/SboxDll.vcxproj b/Sandboxie/core/dll/SboxDll.vcxproj
index 789d7a6..22c4573 100644
--- a/Sandboxie/core/dll/SboxDll.vcxproj
+++ b/Sandboxie/core/dll/SboxDll.vcxproj
@@ -18,15 +18,15 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectName>SboxDll</ProjectName>
     <ProjectGuid>{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
diff --git a/Sandboxie/core/dll/file.c b/Sandboxie/core/dll/file.c
index d09e568..3bfb641 100644
--- a/Sandboxie/core/dll/file.c
+++ b/Sandboxie/core/dll/file.c
@@ -2168,28 +2168,29 @@ _FX NTSTATUS File_NtCreateFileImpl(
     //  //   __debugbreak();
     //}
 
     //
     // if this is a recursive invocation of NtCreateFile,
     // then pass it as-is down the chain
     //
-
+    OutputDebugString(L"Welcome to File_NtCreateFileImpl");
     if (TlsData->file_NtCreateFile_lock) {
-
+        OutputDebugString(L"passed down the chain");
         return __sys_NtCreateFile(
             FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock,
             AllocationSize, FileAttributes, ShareAccess, CreateDisposition,
             CreateOptions, EaBuffer, EaLength);
     }
 
     //
     // not a recursive invocation, handle the call here
     //
 
     TlsData->file_NtCreateFile_lock = TRUE;
+    OutputDebugString(L"lock is up");
 
     Dll_PushTlsNameBuffer(TlsData);
 
     AlreadyReparsed = FALSE;
 
     if (Dll_OsBuild >= 8400 && Dll_ImageType == DLL_IMAGE_TRUSTED_INSTALLER)
         DesiredAccess &= ~ACCESS_SYSTEM_SECURITY;   // for TiWorker.exe (W8)
@@ -2268,14 +2269,15 @@ ReparseLoop:
                 // the path is neither a disk nor a pipe so we generally
                 // allow access unless it explicitly matches a closed path
                 //
 
                 mp_flags = SbieDll_MatchPath(L'p', TruePath);
 
                 if (PATH_IS_CLOSED(mp_flags)) {
+                    OutputDebugString(L"path is closed, access denied, returning");
                     status = STATUS_ACCESS_DENIED;
                     __leave;
                 }
 
                 //
                 // initially try with the caller-specified desired access,
                 // which will be allowed if our driver is ignoring this
@@ -2285,51 +2287,61 @@ ReparseLoop:
                 status = __sys_NtCreateFile(
                     FileHandle, DesiredAccess, ObjectAttributes,
                     IoStatusBlock, AllocationSize, FileAttributes,
                     ShareAccess, CreateDisposition, CreateOptions,
                     EaBuffer, EaLength);
 
                 if (status == STATUS_ACCESS_DENIED) {
-
+                    OutputDebugString(L"access denied2, continuing with removed flags");
                     CreateDisposition = FILE_OPEN;
                     CreateOptions &= ~FILE_DELETE_ON_CLOSE;
                     DesiredAccess &= ~FILE_DENIED_ACCESS;
 
                     status = __sys_NtCreateFile(
                         FileHandle, DesiredAccess, ObjectAttributes,
                         IoStatusBlock, AllocationSize, FileAttributes,
                         ShareAccess, CreateDisposition, CreateOptions,
                         EaBuffer, EaLength);
+                    if (!NT_SUCCESS(status)) {
+                        OutputDebugString(L"__sys_NtCreateFile with removed flags failed!");
+                    }
+                    else {
+                        OutputDebugString(L"__sys_NtCreateFile with removed flags SUCCEEded!");
+                    }
                 }
             }
         }
-
+        OutputDebugString(L"leaving function, presumably");
         __leave;
     }
 
     //
     // allow SXS module to intercept open requests during CreateProcess
     //
 
     if (TlsData->proc_create_process &&
-                                Sxs_FileCallback(TruePath, FileHandle))
+        Sxs_FileCallback(TruePath, FileHandle)) {
+        OutputDebugString(L"probably not reached");
         __leave;
+    }
 
     //
     // check if this is an open or closed path
     //
 
     mp_flags = File_MatchPath(TruePath, &FileFlags);
 
     if (PATH_IS_CLOSED(mp_flags)) {
+        OutputDebugString(L"denied due to closed path, returning from func.");
         status = STATUS_ACCESS_DENIED;
         __leave;
     }
 
     if (PATH_IS_OPEN(mp_flags)) {
+        OutputDebugString(L"path is open...");
 
         WCHAR *ReparsedPath = NULL;
 
         RtlInitUnicodeString(&objname, TruePath);
         objattrs.SecurityDescriptor = ObjectAttributes->SecurityDescriptor;
         /*
         objattrs.SecurityQualityOfService =
@@ -2419,16 +2431,21 @@ ReparseLoop:
 
     //
     // otherwise we have to do the work, so first check parameters.
     //
 
     status = File_CheckCreateParameters(
         DesiredAccess, CreateDisposition, CreateOptions, -1);
-    if (! NT_SUCCESS(status))
+    if (!NT_SUCCESS(status)) {
+        OutputDebugString(L"some fail11");
         __leave;
+    }
+    else {
+        OutputDebugString(L"some succ11");
+    }
 
     //
     // if TruePath and CopyPath contain colons that indicate an NTFS
     // alternate data stream, we remove these for now
     //
 
     TruePathColon = wcsrchr(TruePath, L'\\');
@@ -2446,14 +2463,15 @@ ReparseLoop:
     }
 
     //
     // abort early if the parent of CopyPath exists but marked deleted
     //
 
     if (File_CheckDeletedParent(CopyPath)) {
+        OutputDebugString(L"STATUS_OBJECT_PATH_NOT_FOUND");
         status = STATUS_OBJECT_PATH_NOT_FOUND;
         __leave;
     }
 
     //
     // if the caller is trying to open the image file for write access,
     // then deny the request.  note that at this point we don't make
@@ -2483,56 +2501,61 @@ ReparseLoop:
 
     HaveTrueFile = '?';
 
     RtlInitUnicodeString(&objname, CopyPath);
     status = File_GetFileType(&objattrs, FALSE, &FileType, &IsEmptyCopyFile);
 
     if (NT_SUCCESS(status)) {
-
+        OutputDebugString(L"succeeded in calling File_GetFileType");
         ULONG TrueFileType;
 
         //
         // we got the file type of an existing CopyPath file.
         // note that a CopyPath that is marked deleted, is still
         // considered to exist
         //
 
         HaveCopyParent = TRUE;
         HaveCopyFile = TRUE;
 
         if (CreateOptions & FILE_DELETE_ON_CLOSE) {
-
+            OutputDebugString(L"found FILE_DELETE_ON_CLOSE");
             if (Dll_DigitalGuardian && (PATH_IS_WRITE(mp_flags) || PATH_IS_CLOSED(mp_flags)))
             {
+                OutputDebugString(L"Dll_DigitalGuardian and (path is write or closed), pretending success!");
                 HaveTrueFile = 'N';
                 status = STATUS_SUCCESS;
             }
             else
             {
+                OutputDebugString(L"Special case, does the following exist?");
                 //
                 // special case:  for FILE_DELETE_ON_CLOSE handling, we need
                 // to know if a TrueFile exists, to decide if we are going
                 // to really delete CopyPath, or just mark it deleted
                 //
-
+                OutputDebugString(TruePath);
                 RtlInitUnicodeString(&objname, TruePath);
                 status = File_GetFileType(&objattrs, FALSE, &TrueFileType, NULL);
-                if (NT_SUCCESS(status))
+                if (NT_SUCCESS(status)) {
+                    OutputDebugString(L" HaveTrueFile = 'Y'");
                     HaveTrueFile = 'Y';
+                }
                 else {
+                    OutputDebugString(L" HaveTrueFile = 'N', pretending success");
                     HaveTrueFile = 'N';
                     status = STATUS_SUCCESS;
                 }
             }
         }
 
     }
     else if (status == STATUS_OBJECT_NAME_NOT_FOUND ||
         status == STATUS_OBJECT_PATH_NOT_FOUND) {
-
+        OutputDebugString(L" some shie");
         //
         // the CopyPath file does not exist, but its parent path may exist
         //
 
         HaveCopyFile = FALSE;
 
         if (status == STATUS_OBJECT_NAME_NOT_FOUND)
@@ -2760,16 +2783,18 @@ ReparseLoop:
                 DesiredAccess |= FILE_GENERIC_WRITE;
                 status = STATUS_SUCCESS;
             }
         }
 
     }
 
-    if (! NT_SUCCESS(status))
+    if (!NT_SUCCESS(status)) {
+        OutputDebugString(L" no success so far, leaving func.");
         __leave;
+    }
 
     //
     // check creation parameters again, now that we know the file type
     //
 
     status = File_CheckCreateParameters(
         DesiredAccess, CreateDisposition, CreateOptions, FileType);
@@ -2793,40 +2818,45 @@ ReparseLoop:
 
         //
         // special case:  accessing an alternate data stream in a
         // directory file.  File_CheckCreateParameters doesn't know
         // about the ADS part, but sees a FILE_NON_DIRECTORY_FILE
         // access to a TYPE_DIRECTORY file, and returns error
         //
-
+        OutputDebugString(L"this better not match!");
         status = STATUS_SUCCESS;
     }
 
-    if (! NT_SUCCESS(status))
+    if (!NT_SUCCESS(status)) {
+        OutputDebugString(L" leaving due to fail thus far 111");
         __leave;
+    }
 
     //
     // if caller wants to delete the file, we have to make sure the
     // file (or directory) are deletable (and empty).  we don't support
     // deletion of alternate data streams
     //
 
     if (CreateOptions & FILE_DELETE_ON_CLOSE) {
 
         if (TruePathColon || CopyPathColon) {
 
             status = STATUS_ACCESS_DENIED;
             __leave;
         }
-
+        OutputDebugString(L" DeleteOnClose = TRUE");
         CreateOptions &= ~FILE_DELETE_ON_CLOSE;
         DeleteOnClose = TRUE;
 
-    } else
+    }
+    else {
         DeleteOnClose = FALSE;
+        OutputDebugString(L" DeleteOnClose = FALSE");
+    }
 
     //
     // for Windows Explorer, any write access on an existing TruePath
     // file that has no corresponding CopyPath file (and disposition
     // is FILE_OPEN), is converted to read-only access
     // in particular this stops Windows Vista Explorer from creating
     // sandboxed files when right-clicking Properties on a file
@@ -2864,25 +2894,30 @@ ReparseLoop:
         if (HaveTrueParent) {
 
             status = File_CreatePath(TruePath, CopyPath);
 
         } else
             status = STATUS_OBJECT_PATH_NOT_FOUND;
 
-        if (! NT_SUCCESS(status))
+        if (!NT_SUCCESS(status)) {
+            OutputDebugString(L" returning due to fail 7368278");
             __leave;
+        }
+        else {
+            OutputDebugString(L" continuing due to success 7368278");
+        }
     }
 
     //
     // if TruePath exists while CopyPath does not (note that a file marked
     // deleted is considered to exist), then:
     //
 
     if ((! HaveCopyFile) && FileType) {
-
+        OutputDebugString(L" entered messy 'if'1");
         BOOLEAN IsWritePath = FALSE;
         if ((FileType & TYPE_DIRECTORY) && PATH_IS_WRITE(mp_flags))
             IsWritePath = TRUE;
 
         //
         // if the operation is to open the existing file non-destructively;
         // or if the operation is destructive but only on one of the streams
@@ -2976,45 +3011,46 @@ ReparseLoop:
 
         //
         // if migration reports the file is too big, then ask for
         // read-only access to the TruePath
         //
 
         if (! NT_SUCCESS(status)) {
-
+            OutputDebugString(L" some fail 9827862");
             if (status == STATUS_BAD_INITIAL_PC) {
 
                 if (TruePathColon)
                     *TruePathColon = L':';
                 RtlInitUnicodeString(&objname, TruePath);
 
                 DesiredAccess &= ~FILE_DENIED_ACCESS;
                 CreateOptions &= ~FILE_DELETE_ON_CLOSE;
 
                 status = __sys_NtCreateFile(
                     FileHandle, DesiredAccess, &objattrs, IoStatusBlock,
                     AllocationSize, FileAttributes, ShareAccess,
                     CreateDisposition, CreateOptions, EaBuffer, EaLength);
+                OutputDebugString(L" changed status 9827862");
             }
-
+            OutputDebugString(L" leaving 9827862");
             __leave;
         }
     }
 
     //
     // an alternative case is if the caller is asking to create CopyPath
     // through a destructive operation, and CopyPath is marked deleted.
     // in this case we physically delete the stale CopyPath.
     //
 
     DeleteChildren = FALSE;
 
     if (HaveCopyFile && (FileType & TYPE_DELETED) &&
             (CreateDisposition != FILE_OPEN)) {
-
+        OutputDebugString(L" entered another if2");
         RtlInitUnicodeString(&objname, CopyPath);
         status = __sys_NtDeleteFile(&objattrs);
 
         if (! NT_SUCCESS(status))
             __leave;
 
         FileType = 0;
@@ -3033,15 +3069,15 @@ ReparseLoop:
 
     //
     // if the caller specifies write attributes, this is only permitted
     // on non-directory files, so we must be sure to tell the driver
     //
 
     if (DesiredAccess & DIRECTORY_JUNCTION_ACCESS) {
-
+        OutputDebugString(L" entered another if3");
         if ((CreateOptions & FILE_DIRECTORY_FILE) ||
                 (FileType & TYPE_DIRECTORY) &&
                 (! TruePathColon) && (! CopyPathColon)) {
 
             DesiredAccess &= ~DIRECTORY_JUNCTION_ACCESS;
             DesiredAccess |= FILE_GENERIC_READ;
 
@@ -3057,28 +3093,40 @@ ReparseLoop:
     // if FILE_DELETE_ON_CLOSE was specified on a copy file that has
     // no matching true file, then try to really delete the file
     //
 
     if (CopyPathColon)
         *CopyPathColon = L':';
     RtlInitUnicodeString(&objname, CopyPath);
+    OutputDebugString(L"now working on:");
+    OutputDebugString(CopyPath);
 
     if (DeleteOnClose && HaveTrueFile == 'N') {
-
+        OutputDebugString(L" entered another if4");
         CreateOptions |= FILE_DELETE_ON_CLOSE;
         DesiredAccess |= DELETE;
     }
+    //else {
+    //    DesiredAccess |= FILE_READ_ATTRIBUTES;
+    //}
 
     status = __sys_NtCreateFile(
+        //FileHandle, DesiredAccess,
         FileHandle, DesiredAccess | FILE_READ_ATTRIBUTES,
         &objattrs, IoStatusBlock, AllocationSize, FileAttributes,
         ShareAccess, CreateDisposition, CreateOptions, EaBuffer, EaLength);
+    if (NT_SUCCESS(status)) {
+        OutputDebugString(L"main status was success");
+    }
+    else {
+        OutputDebugString(L"main status was fail");
+    }
 
     if (DeleteOnClose && HaveTrueFile == 'N' && (! NT_SUCCESS(status))) {
-
+        OutputDebugString(L" some weird shieee");
         CreateOptions &= ~FILE_DELETE_ON_CLOSE;
         DesiredAccess &= ~DELETE;
 
         status = __sys_NtCreateFile(
             FileHandle, DesiredAccess | FILE_READ_ATTRIBUTES,
             &objattrs, IoStatusBlock, AllocationSize, FileAttributes,
             ShareAccess, CreateDisposition, CreateOptions,
@@ -3088,32 +3136,32 @@ ReparseLoop:
     //
     // if the file was opened with FILE_DELETE_ON_CLOSE, then invoke
     // File_MarkDeleted to mark it deleted.  otherwise make sure
     // the creation timestamp is not marked deleted.
     //
 
     if (NT_SUCCESS(status)) {
-
+        OutputDebugString(L" some weird success112");
         if (DeleteOnClose) {
 
             //
             // if we have a corresponding true file, then mark the copy
             // file deleted, unless it's an alternate data stream
             //
 
             if (HaveTrueFile == 'Y') {
-
+                OutputDebugString(L" not reached  88");
                 if (CopyPathColon)
                     status = STATUS_ACCESS_DENIED;
                 else
                     status = File_MarkDeleted(*FileHandle, CopyPath);
             }
 
         } else {
-
+            OutputDebugString(L" blah990");
             BOOLEAN IsRecover = FALSE;
 
             //
             // file was not opened for deletion, but NTFS file systems
             // may sometimes persist an (out of date) creation time
             //
 
@@ -3179,65 +3227,83 @@ ReparseLoop:
                             *FileHandle = NULL;
                     }
                 }
             }
         }
 
         if (! NT_SUCCESS(status)) {
+            OutputDebugString(L" some fail blah990");
             if (*FileHandle) {
                 NtClose(*FileHandle);
                 *FileHandle = NULL;
             }
             IoStatusBlock->Information = 0;
         }
+        else {
+            OutputDebugString(L" some success blah990");
+        }
     }
 
     //
     // finish
     //
 
     } __except (EXCEPTION_EXECUTE_HANDLER) {
+        OutputDebugString(L"excepted1");
         status = GetExceptionCode();
     }
 
     //
     // we can get access denied in a restricted Chrome sandbox process:
     // perhaps we tried to access a file/device in the box which isn't
     // accessible to a restricted token, but the real file might be
     // accessible, so try to access the real file
     //
 
     if (Dll_RestrictedToken && status == STATUS_ACCESS_DENIED) {
-
+        OutputDebugString(L"Dll_RestrictedToken && status == STATUS_ACCESS_DENIED");
         status = __sys_NtCreateFile(
             FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock,
             AllocationSize, FileAttributes, ShareAccess, CreateDisposition,
             CreateOptions, EaBuffer, EaLength);
 
-        if (! NT_SUCCESS(status))
+        if (!NT_SUCCESS(status)) {
+            OutputDebugString(L"failed9");
             status = STATUS_ACCESS_DENIED;
+        }
+        else {
+            OutputDebugString(L"succeeded9");
+        }
     }
 
     //
     // finish
     //
 
     Dll_PopTlsNameBuffer(TlsData);
 
+    OutputDebugString(L"about to lift lock");
     TlsData->file_NtCreateFile_lock = FALSE;
 
     __try {
 
-        if (! NT_SUCCESS(status))
+        if (!NT_SUCCESS(status)) {
+            OutputDebugString(L"marking failed status");
             IoStatusBlock->Status = status;
+        }
+        else {
+            OutputDebugString(L"meh1, so it succeeded");
+        }
 
     } __except (EXCEPTION_EXECUTE_HANDLER) {
+        OutputDebugString(L"exceptioned2");
         status = GetExceptionCode();
     }
 
+    OutputDebugString(L"about to return");
     SetLastError(LastError);
     return status;
 }
 
 
 //---------------------------------------------------------------------------
 // File_CheckCreateParameters
@@ -5910,16 +5976,27 @@ _FX NTSTATUS File_NtDeleteFileImpl(OBJECT_ATTRIBUTES *ObjectAttributes)
     HANDLE handle;
     IO_STATUS_BLOCK IoStatusBlock;
 
     status = File_NtCreateFileImpl(
         &handle, DELETE, ObjectAttributes, &IoStatusBlock, NULL, 0,
         FILE_SHARE_VALID_FLAGS, FILE_OPEN, FILE_DELETE_ON_CLOSE, NULL, 0);
 
-    if (NT_SUCCESS(status))
-        NtClose(handle);
+    if (NT_SUCCESS(status)) {
+        OutputDebugStringW(L"File_NtDeleteFileImpl's call of File_NtCreateFileImpl was a success");
+        status = NtClose(handle);
+        if (NT_SUCCESS(status)) {
+            OutputDebugStringW(L"NtClose was a success");
+        }
+        else {
+            OutputDebugStringW(L"NtClose was a fail");
+        }
+    }
+    else {
+        OutputDebugStringW(L"File_NtDeleteFileImpl's call of File_NtCreateFileImpl was a fail!");
+    }
 
     return status;
 }
 
 
 //---------------------------------------------------------------------------
 // File_RenameFile
diff --git a/Sandboxie/core/dll/file_dir.c b/Sandboxie/core/dll/file_dir.c
index 1cfdcc2..b1355b4 100644
--- a/Sandboxie/core/dll/file_dir.c
+++ b/Sandboxie/core/dll/file_dir.c
@@ -17,15 +17,15 @@
 
 //---------------------------------------------------------------------------
 // File (Dir)
 //---------------------------------------------------------------------------
 
 
 #include "common/pool.h"
-
+#include <stdio.h>
 
 //---------------------------------------------------------------------------
 // Structures and Types
 //---------------------------------------------------------------------------
 
 
 typedef struct _FILE_MERGE_CACHE_FILE {
@@ -1883,14 +1883,21 @@ _FX NTSTATUS File_DeleteDirectory(const WCHAR *FilePath, BOOLEAN JustCheck)
     FILE_DIRECTORY_INFORMATION *info;
     BOOLEAN is_dot1, is_dot2;
     BOOLEAN RestartScan;
 
     //
     // open the directory
     //
+    //WCHAR  tmp[2000+16];
+//#pragma comment(lib, "legacy_stdio_definitions.lib")
+    //_snprintf_s(tmp, 2000, 2000, L"deleting dir: %S\n", FilePath); //fucking annoying!111 no form of sprintf will link!
+    //OutputDebugStringW(tmp);
+    OutputDebugString(L"Wants to delete(or just check if exists as empty!!) the following abspath dir:");
+    OutputDebugStringW(FilePath);
+    //OutputDebugString(L"\n"); //well this is not needed! all calls imply \n !
 
     InitializeObjectAttributes(
         &objattrs, &objname, OBJ_CASE_INSENSITIVE, NULL, NULL);
 
     FilePath_len = wcslen(FilePath) * sizeof(WCHAR);
 
     objname.Length        = (USHORT)FilePath_len;
@@ -1898,16 +1905,18 @@ _FX NTSTATUS File_DeleteDirectory(const WCHAR *FilePath, BOOLEAN JustCheck)
     objname.Buffer        = (WCHAR *)FilePath;
 
     status = __sys_NtCreateFile(
         &handle, FILE_GENERIC_READ, &objattrs, &IoStatusBlock, NULL, 0,
         FILE_SHARE_VALID_FLAGS, FILE_OPEN,
         FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);
 
-    if (! NT_SUCCESS(status))
+    if (!NT_SUCCESS(status)) {
+        OutputDebugString(L"failed1! returning\n");
         return status;
+    }
 
     //
     // make sure no child files exist, other than "." and "..".
     // we use our NtQueryDirectoryFile here, so it merges from
     // both directories, and discards deleted entries
     //
 
@@ -1933,23 +1942,38 @@ _FX NTSTATUS File_DeleteDirectory(const WCHAR *FilePath, BOOLEAN JustCheck)
                 info->FileName[0] == L'.');
 
             is_dot2 = (
                 info->FileNameLength == sizeof(WCHAR) * 2 &&
                 info->FileName[0] == L'.' &&
                 info->FileName[1] == L'.');
 
-            if (! (is_dot1 || is_dot2))
+            if (!(is_dot1 || is_dot2)) {
+                OutputDebugString(L"dir not empty, found: ");
+                OutputDebugString(info->FileName);
+                OutputDebugString(L"\n");
                 status = STATUS_DIRECTORY_NOT_EMPTY;
+            }
         }
     }
 
-    if (status == STATUS_NO_MORE_FILES || status == STATUS_NO_SUCH_FILE)
+    if (status == STATUS_NO_MORE_FILES || status == STATUS_NO_SUCH_FILE) {
+        OutputDebugString(L"Pretending success1!\n");
         status = STATUS_SUCCESS;
+    }
+    else {
+        OutputDebugString(L"something other than no-more-files or no-such-file!\n");
+    }
 
     if ((! NT_SUCCESS(status)) || JustCheck) {
+        if (JustCheck) {
+            OutputDebugString(L"was just checking! returning\n");
+        }
+        else {
+            OutputDebugString(L"failed2! returning\n");
+        }
         Dll_Free(info);
         NtClose(handle);
         return status;
     }
 
     //
     // now delete any files that physically exist within the copy
@@ -1978,15 +2002,17 @@ _FX NTSTATUS File_DeleteDirectory(const WCHAR *FilePath, BOOLEAN JustCheck)
 
             is_dot2 = (
                 info->FileNameLength == sizeof(WCHAR) * 2 &&
                 info->FileName[0] == L'.' &&
                 info->FileName[1] == L'.');
 
             if (! (is_dot1 || is_dot2)) {
-
+                OutputDebugString(L"Found stuff to delete inside dir, name=");
+                OutputDebugString(info->FileName);
+                OutputDebugString(L"\n");
                 ULONG TempPath_len = FilePath_len + info->FileNameLength
                                    + 2 * sizeof(WCHAR);
                 WCHAR *TempPath = Dll_AllocTemp(TempPath_len);
                 WCHAR *TempPtr = TempPath;
                 memcpy(TempPtr, FilePath, FilePath_len);
                 TempPtr += FilePath_len / sizeof(WCHAR);
                 *TempPtr = L'\\';
@@ -1999,29 +2025,41 @@ _FX NTSTATUS File_DeleteDirectory(const WCHAR *FilePath, BOOLEAN JustCheck)
                 objname.MaximumLength = (USHORT)TempPath_len;
                 objname.Buffer      = TempPath;
 
                 status = __sys_NtDeleteFile(&objattrs);
 
                 Dll_Free(TempPath);
 
-                if (status == STATUS_OBJECT_NAME_NOT_FOUND)
+                if (status == STATUS_OBJECT_NAME_NOT_FOUND) {
+                    OutputDebugString(L"Pretending success2!\n");
                     status = STATUS_SUCCESS;
+                }
+                else {
+                    OutputDebugString(L"it's NOT not-found: ");
+                    OutputDebugString(info->FileName);
+                    OutputDebugString(L"\n");
+                }
             }
         }
     }
 
     //
     // finish
     //
-
+    OutputDebugString(L"finishing...");
     Dll_Free(info);
     NtClose(handle);
 
-    if (status == STATUS_NO_MORE_FILES || status == STATUS_NO_SUCH_FILE)
+    if (status == STATUS_NO_MORE_FILES || status == STATUS_NO_SUCH_FILE) {
+        OutputDebugString(L"with forced success3!\n");
         status = STATUS_SUCCESS;
+    }
+    else {
+        OutputDebugString(L"with some status(possibly success, or fail)!\n");
+    }
 
     return status;
 }
 
 
 //---------------------------------------------------------------------------
 // File_MarkChildrenDeleted
diff --git a/Sandboxie/core/drv/SboxDrv.vcxproj b/Sandboxie/core/drv/SboxDrv.vcxproj
index ddb7ddc..8f700b2 100644
--- a/Sandboxie/core/drv/SboxDrv.vcxproj
+++ b/Sandboxie/core/drv/SboxDrv.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/core/low/LowLevel.vcxproj b/Sandboxie/core/low/LowLevel.vcxproj
index f41adf1..b5d2b64 100644
--- a/Sandboxie/core/low/LowLevel.vcxproj
+++ b/Sandboxie/core/low/LowLevel.vcxproj
@@ -9,15 +9,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{255002EC-9FC7-422E-B497-BE2CC5012B2D}</ProjectGuid>
     <RootNamespace>LowLevel</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
diff --git a/Sandboxie/core/svc/SboxSvc.vcxproj b/Sandboxie/core/svc/SboxSvc.vcxproj
index 44ac001..00c6bc1 100644
--- a/Sandboxie/core/svc/SboxSvc.vcxproj
+++ b/Sandboxie/core/svc/SboxSvc.vcxproj
@@ -17,15 +17,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{2D3DBCAE-883E-54A6-F8F6-11228D989033}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
diff --git a/Sandboxie/install/kmdutil/kmdutil.vcxproj b/Sandboxie/install/kmdutil/kmdutil.vcxproj
index d5d70d9..49393da 100644
--- a/Sandboxie/install/kmdutil/kmdutil.vcxproj
+++ b/Sandboxie/install/kmdutil/kmdutil.vcxproj
@@ -18,15 +18,15 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{0BF4988E-2325-4426-8CDC-BD221E4FB68C}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>KmdUtil</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>Unicode</CharacterSet>
     <PlatformToolset>v140</PlatformToolset>
diff --git a/Sandboxie/install/release/SandboxieInstall.vcxproj b/Sandboxie/install/release/SandboxieInstall.vcxproj
index b2a7c83..6f49bfd 100644
--- a/Sandboxie/install/release/SandboxieInstall.vcxproj
+++ b/Sandboxie/install/release/SandboxieInstall.vcxproj
@@ -5,15 +5,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{08A656D9-CDD0-4C9F-AB3F-D98F8E5B6EC6}</ProjectGuid>
     <RootNamespace>SandboxieInstall</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
diff --git a/Sandboxie/msgs/Parse.vcxproj b/Sandboxie/msgs/Parse.vcxproj
index b66122c..bd710cb 100644
--- a/Sandboxie/msgs/Parse.vcxproj
+++ b/Sandboxie/msgs/Parse.vcxproj
@@ -5,15 +5,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{7BA01954-12F1-4CEE-BA97-FAD3250D9776}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
diff --git a/Sandboxie/msgs/SboxMsg.vcxproj b/Sandboxie/msgs/SboxMsg.vcxproj
index b756854..18f22cc 100644
--- a/Sandboxie/msgs/SboxMsg.vcxproj
+++ b/Sandboxie/msgs/SboxMsg.vcxproj
@@ -9,15 +9,15 @@
       <Configuration>SbieRelease</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <Keyword>Win32Proj</Keyword>
     <ProjectGuid>{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>

well my job here is done, cheers

from sandboxie.

rugabunda avatar rugabunda commented on July 30, 2024

Well its been over a week and I have not seen this issue re-surface... so something has definitely changed in the code because this was a very persistent bug for me!

from sandboxie.

rugabunda avatar rugabunda commented on July 30, 2024

bump, to this day haven't had any issue;

from sandboxie.

rugabunda avatar rugabunda commented on July 30, 2024

Closing for now, have not seen any cpu use problem for a LONG time. tx everybody.

from sandboxie.

codesmashd avatar codesmashd commented on July 30, 2024

I'm using the latest version, 5.46.4 on Windows 10 and this issue still happens with me (started way back when sophos was supporting it), although it's simple to fix by deleting the trash folders. A potential explanation I can come up with is Firefox updates. When I recently updated it from 84.0.2 to 85 outside of the sandbox, all sandboxes that have previously created instances of Firefox now have trash folders that need to be manually removed or it would suck up CPU at 30+%. There may be other situations where this occurs (My memory is fuzzy because I just delete them when I notice the computer running slow).

From my experience, this workaround (deleting trash folders) also worked on 5.33.6 for extended periods until something creates them again.

from sandboxie.

 avatar commented on July 30, 2024

I think it still happens. I have just deleted trash folders and so far so good

from sandboxie.

mailinglists35 avatar mailinglists35 commented on July 30, 2024

I don't use sandboxie, but since this is the only useful result, I'm adding this comment that firefox.exe still drains my laptop battery, with top thread being "ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>" (alternating with xul.dll)

I don't see any trash files/folders in the cache2 folder

firefox idle: 1% cpu
edge idle: 0.1% cpu.
this 0.9 percent is big enough to not allow the cpu sleep and draw more current.

hoping this info confirms someone elses' pursue of a perfect firefox friendly with energy. but I think there is something rotten deep inside firefox core architecture, since I can observe this constant low cpu usage on idle for all os where I use it (linux, macos, windows), for the master firefox process.

from sandboxie.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.