Jump to content

DS Mod Tools erased my entire computer (and how to reproduce)


Recommended Posts

(Note: I'm re-posting this bug as a Topic because I think it could occur to other users, and the damage is irreparable )

Hi everyone

Yesterday I was updating a mod for Don't Starve Together using Don't Starve Mod Tools and... After I click "Publish!" I lost 99% of all files from my computer
The update I was doing was to change a Mod Picture................

I lost my personal pictures, my programming projects and all my stuff from my Ph. D. that I have to present in 3 weeks... (Guys, really, I'm in panic! These things should not happen to Ph. D. students!)

Well, since 99% of the files in my computer are gone, I decided to be sure of what is deleting my files

So here is the steps I made:
Note: I already have published several mods, so, I'm pretty sure I did nothing wrong

1: I'm using Linux (Ubuntu 20.04)
2: Open Steam
3: Open Don't Starve Mod Tools
4: Choose Don't Starve Together in the Box
5: Choose a Mod that you want to update and click Edit
6: Now check the box "Update Preview Images"

7: For the preview Image, choose a GIF file (in my case, a 1.2MB file)
8: Click "Publish!"

After you doing that, you will notice that the Don't Starve Mod Tools will get stuck, which is very common, usually it takes a long time to update mods
BUT if you check your computer files, you will notice that they are going to be erased and destroyed (you can not recover with any recovery tools, its like they are overwritten with zeros)

I repeated this process 3 times just to be sure It is Don't Starve Mod Tools fault, so I posted it here
Please, consider to take a look on this... I lost everything!

As you can see from this log output, DS Mod Tools is trying to delete EVERYTHING from root
It just can't do it from lack of permition
But when it reaches my Home folder, it erases all files

c^CExecuteSteamURL: "steam://rungameid/245850"
Could not connect to X session manager: None of the authentication protocols specified are supported
Could not connect to X session manager: None of the authentication protocols specified are supported
GameAction [AppID 245850, ActionID 2] : LaunchApp changed task to ProcessingInstallScript with ""
GameAction [AppID 245850, ActionID 2] : LaunchApp changed task to SynchronizingCloud with ""
GameAction [AppID 245850, ActionID 2] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
GameAction [AppID 245850, ActionID 2] : LaunchApp changed task to CreatingProcess with ""
GameAction [AppID 245850, ActionID 2] : LaunchApp waiting for user response to CreatingProcess ""
GameAction [AppID 245850, ActionID 2] : LaunchApp continues with user response "CreatingProcess"
Game update: AppID 245850 "", ProcID 87086, IP 0.0.0.0:0
Gtk-Message: 07:49:38.258: Failed to load module "gail"
Gtk-Message: 07:49:38.258: Failed to load module "atk-bridge"

(ModUploader:87088): Gtk-WARNING **: 07:49:38.262: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Yaru/gtk-2.0/main.rc:775: error: unexpected identifier 'direction', expected character '}'

(ModUploader:87088): Gtk-WARNING **: 07:49:38.265: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Yaru/gtk-2.0/hacks.rc:28: error: invalid string constant "normal_entry", expected valid string constant
07:49:38: Logging to [/home/gustavo/.local/share/DontStarveModUploader/ModUploader.log]
07:49:38: UploaderApp::OnInit()
Game update: AppID 245850 "", ProcID 87088, IP 0.0.0.0:0
Starting app 245850
RecordSteamInterfaceCreation (PID 87088): SteamUtils009 / Utils
>>> Adding process 87086 for game ID 245850
Setting breakpad minidump AppID = 245850
GameAction [AppID 245850, ActionID 2] : LaunchApp changed task to WaitingGameWindow with ""
RecordSteamInterfaceCreation (PID 87088): SteamUser019 / User
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198039069920 [API loaded no]
RecordSteamInterfaceCreation (PID 87088): SteamUser019 / User
RecordSteamInterfaceCreation (PID 87088): SteamFriends015 / Friends
RecordSteamInterfaceCreation (PID 87088): SteamUtils009 / Utils
RecordSteamInterfaceCreation (PID 87088): SteamMatchMaking009 / Matchmaking
RecordSteamInterfaceCreation (PID 87088): SteamMatchMakingServers002 / MatchmakingServers
RecordSteamInterfaceCreation (PID 87088): STEAMUSERSTATS_INTERFACE_VERSION011 / UserStats
RecordSteamInterfaceCreation (PID 87088): STEAMAPPS_INTERFACE_VERSION008 / Apps
RecordSteamInterfaceCreation (PID 87088): SteamNetworking005 / Networking
RecordSteamInterfaceCreation (PID 87088): STEAMREMOTESTORAGE_INTERFACE_VERSION014 / RemoteStorage
RecordSteamInterfaceCreation (PID 87088): STEAMSCREENSHOTS_INTERFACE_VERSION003 / Screenshots
RecordSteamInterfaceCreation (PID 87088): STEAMHTTP_INTERFACE_VERSION002 / HTTP
RecordSteamInterfaceCreation (PID 87088): SteamController006 / Controller
RecordSteamInterfaceCreation (PID 87088): STEAMUGC_INTERFACE_VERSION010 / UGC
RecordSteamInterfaceCreation (PID 87088): STEAMAPPLIST_INTERFACE_VERSION001 / AppList
RecordSteamInterfaceCreation (PID 87088): STEAMMUSIC_INTERFACE_VERSION001 / Music
RecordSteamInterfaceCreation (PID 87088): STEAMMUSICREMOTE_INTERFACE_VERSION001 / MusicRemote
RecordSteamInterfaceCreation (PID 87088): STEAMHTMLSURFACE_INTERFACE_VERSION_004 / HTMLSurface
RecordSteamInterfaceCreation (PID 87088): STEAMINVENTORY_INTERFACE_V002 / Inventory
RecordSteamInterfaceCreation (PID 87088): STEAMVIDEO_INTERFACE_V002 / Video
RecordSteamInterfaceCreation (PID 87088): STEAMPARENTALSETTINGS_INTERFACE_VERSION001 / ParentalSettings
GameAction [AppID 245850, ActionID 2] : LaunchApp changed task to Completed with ""
07:49:38: RefreshPublishedModInfo
07:49:38: EnumerateUserPublishedFiles(1)
07:49:38: Progress: Updating Mod List...
RecordSteamInterfaceCreation (PID 87088): SteamUtils009 / Utils
RecordSteamInterfaceCreation (PID 87088): SteamController006 / Controller
07:49:38: OnEnumerateUserPublishedFiles
07:49:38:    EResult 1, results 0/0
07:49:38:    Complete
07:49:38: EndProgress ok: No mods found
07:49:38: MainFrame::OnRefreshComplete ok: No mods found
07:49:41: RefreshPublishedModInfo
07:49:41: EnumerateUserPublishedFiles(1)
07:49:41: Progress: Updating Mod List...
07:49:41: OnEnumerateUserPublishedFiles
07:49:41:    EResult 1, results 24/24
07:49:41:    0x0003C05A, 0x0004EB1A, [Airplane], 0x183de41f7f6e7e13, 0x183de3c8bd20215a, 76561198039069920, 0x60132DA5, 0x6018909A, 0, 0, [all_clients_require_mod,art,item,other,tweak,utility,version:1.01], 0, [mod_publish_data_file.zip], 2719546, 7451911, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Cane Kiting], 0xffffffffffffffff, 0x184de35e697a7693, 76561198039069920, 0x600D81BD, 0x608948A9, 0, 0, [client_only_mod,tweak,utility,version:1.03], 0, [], 24915, 73561, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Catapult Controller], 0x1845e63511a1de2e, 0x1849e5c6a2c4bba9, 76561198039069920, 0x6032D60E, 0x603A30C2, 0, 0, [all_clients_require_mod,art,item,other,tweak,utility,version:1.02], 0, [mod_publish_data_file.zip], 265639, 2919675, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Farm Plant Needs], 0x184de2d945042a64, 0x16cde07d0164c009, 76561198039069920, 0x5FDE0056, 0x6005EB60, 0, 0, [all_clients_require_mod,other,tweak,utility,version:1.04], 0, [mod_publish_data_file.zip], 16643, 102197, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Fire Pyromatic], 0x16c9da6a98b08538, 0x16c9da6a98b088a9, 76561198039069920, 0x5F7F5A37, 0x5F7F5A37, 0, 0, [item,utility,version:1.00,all_clients_require_mod,Other], 0, [mod_publish_data_file.zip], 351017, 6025676, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Fuel-Sharing Ice Flingomatic], 0x1731dbfa57acfae9, 0x16c9dadcc29bc6c8, 76561198039069920, 0x5F84EA92, 0x5F971D56, 0, 0, [server_only_mod,tweak,utility,version:1.03], 0, [mod_publish_data_file.zip], 10427, 5732261, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Gleenus Beta Testing], 0x1705dd8930b9a56b, 0x172ddc4c71a10f36, 76561198039069920, 0x5F9B244F, 0x5FB07833, 3, 0, [all_clients_require_mod,version:0.0902], 0, [mod_publish_data_file.zip], 107711, 10452, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Headless Emote], 0x1705dd6ef5fa0431, 0x172ddc2509d05e2b, 76561198039069920, 0x5F9B0D46, 0x5FAD7550, 0, 0, [all_clients_require_mod,Art,utility,version:1.03], 0, [mod_publish_data_file.zip], 201314, 5336089, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Hydroponics], 0x1485d6d2312d4ebc, 0x11c5d2f27133da85, 76561198039069920, 0x5F05D84D, 0x5F43BCA7, 0, 0, [all_clients_require_mod,item,utility,version:1.01], 0, [mod_publish_data_file.zip], 366811, 446730, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Lightbug Cage], 0x183de41f7f6e17b2, 0x183de3f11641d9b3, 76561198039069920, 0x601705BD, 0x60188E8A, 0, 0, [all_clients_require_mod,art,item,tweak,utility,version:1.04], 0, [mod_publish_data_file.zip], 475949, 2260375, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Loot Pump], 0xffffffffffffffff, 0x1485d6d2313c4095, 76561198039069920, 0x5F4400D2, 0x605F409F, 0, 0, [all_clients_require_mod,item,utility,version:1.10], 0, [], 354393, 2578306, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [More Battle Songs], 0x1841e4a25ec002d3, 0x1665da4ef6a4a358, 76561198039069920, 0x5F7C938E, 0x602118B8, 0, 0, [item,utility,art,tweak,version:1.07,all_clients_require_mod], 0, [mod_publish_data_file.zip], 880336, 122177, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Nightvision for Free (client side)], 0x1849e5a333ad43b4, 0x1701e2428e209e9a, 76561198039069920, 0x5FFB0DF8, 0x603110CF, 0, 0, [client_only_mod,tweak,utility,version:1.01], 0, [mod_publish_data_file.zip], 10467, 1023530, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Pigeons!], 0x1549d952e6c72edf, 0x1549d952e6c61b1e, 76561198039069920, 0x5F6D2894, 0x5F6D2D1C, 0, 0, [all_clients_require_mod,creature,version:1.01], 0, [mod_publish_data_file.zip], 16569, 7799859, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Poop Flingomatic], 0x16d1db12e6ea7cca, 0x1449d5c6a0b505a2, 76561198039069920, 0x5F189D34, 0x5F87BB5E, 0, 0, [all_clients_require_mod,item,version:1.02], 0, [mod_publish_data_file.zip], 344525, 1938062, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Rail Cart], 0xffffffffffffffff, 0x1705ddbee7e9e2ac, 76561198039069920, 0x5FB3097C, 0x60516952, 0, 0, [all_clients_require_mod,art,item,other,tweak,utility,version:1.06], 0, [], 1368791, 1365671, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Rope Bridge], 0xffffffffffffffff, 0x1835e72d952408c3, 76561198039069920, 0x60494396, 0x60516914, 0, 0, [all_clients_require_mod,art,item,tweak,utility,version:1.10], 0, [], 229770, 183675, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Starver Games (Client Side)], 0x16d1e0b09f3ee539, 0x16d1e0b09f3ee60a, 76561198039069920, 0x5FE26CAD, 0x5FE26CAD, 0, 0, [utility,version:0.01,all_clients_require_mod], 0, [mod_publish_data_file.zip], 14419, 10452, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Thermal Stone Alert], 0x184de2d944ae852f, 0x184de2d944ae85d8, 76561198039069920, 0x60046D95, 0x60046D95, 0, 0, [utility,tweak,other,version:1.00,client_only_mod], 0, [mod_publish_data_file.zip], 9288, 59253, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Toggleable Miner Hat], 0x1841e486c2cac486, 0x1731db91a5ca5183, 76561198039069920, 0x5F903EE5, 0x60200B04, 0, 0, [item,server_only_mod,tweak,utility,version:1.01], 0, [mod_publish_data_file.zip], 10183, 43389, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [TUtil], 0xffffffffffffffff, 0x183de3f115f3b75d, 76561198039069920, 0x6015B933, 0x605CD0EE, 0, 0, [all_clients_require_mod,version:0.05], 0, [], 1650453, 10452, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Twerk Emote], 0x1731dbdd31bc96db, 0x1731dbdd319d13b2, 76561198039069920, 0x5F94606B, 0x5F94E675, 0, 0, [all_clients_require_mod,Art,tweak,utility,version:1.01], 0, [mod_publish_data_file.zip], 135532, 473045, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [Vacuum Bag], 0xffffffffffffffff, 0x1889eb8bcf8d7614, 76561198039069920, 0x608F5077, 0x608F5077, 0, 0, [all_clients_require_mod,item,version:1.00], 0, [], 189056, 600545, [], 0
07:49:41:    0x0003C05A, 0x0004EB1A, [[PT-BR] Criando seu primeiro Mod: Ice Maker (TUTORIAL)], 0x16cddf77593ceaee, 0x16cddf77593cec74, 76561198039069920, 0x5FCEA113, 0x5FCEA113, 0, 0, [item,utility,tutorial,version:1.00,all_clients_require_mod], 0, [mod_publish_data_file.zip], 145262, 78111, [], 0
07:49:41:    Complete
07:49:41: EndProgress ok: Mod listing complete.
07:49:41: MainFrame::OnRefreshComplete ok: Mod listing complete.

(ModUploader:87088): Gtk-WARNING **: 07:49:47.612: Error loading theme icon 'edit-find' for stock: Fatal error reading PNG image file: bad parameters to zlib

(ModUploader:87088): Gtk-WARNING **: 07:49:47.618: Error loading theme icon 'edit-find' for stock: Fatal error reading PNG image file: bad parameters to zlib

(ModUploader:87088): Gtk-WARNING **: 07:49:50.182: Error loading theme icon 'folder' for stock: Fatal error reading PNG image file: bad parameters to zlib
07:49:58: Progress: Updating...
07:49:58: UpdateItem
07:49:58: Setting 3 tags...
07:49:58:    all_clients_require_mod
07:49:58:    item
07:49:58:    version:1.00
07:49:58: Progress: Submitting Item Update...
07:49:58: OnUpdateItemResult
07:49:58: Error: File '/boot/grub/fonts/unicode.pf2' couldn't be removed (error 13: Permission denied)
07:49:58: Error: Directory '/boot/grub/fonts' couldn't be deleted (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/luks.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/functional_test.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/msdospart.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/iso9660.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/parttool.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/datetime.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gcry_seed.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/exfctest.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/video_cirrus.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/crypto.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gcry_rmd160.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/cbmemc.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/part_apple.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/minix.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/div.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/boot.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/acpi.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/video_colors.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/minix3.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/load.cfg' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/cryptodisk.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gcry_crc.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/div_test.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gcry_rfc2268.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gcry_twofish.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/mdraid1x.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/efifwsetup.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gcry_tiger.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/jpeg.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/zstd.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/ldm.mod' couldn't be removed (error 13: Permission denied)
07:49:58: Error: File '/boot/grub/x86_64-efi/gfxterm.mod' couldn't be removed (error 13: Permission denied)


(There are more thousands of files)

 

  • Sad 9
  • Sad Dupe 3
Link to comment
Share on other sites

42 minutes ago, penguin0616 said:

The mod tools should not be deleting things.. Why does it try to delete things to begin with?

@zarklord_klei Any idea?

Edit: @Gleenus Can you post the actual log file as well, instead of this copy/pasted version?

There is no log file
Everything was deleted
The copy pasted region is only thing I can recover before it self-delete (I recovered by copying from the terminal)
Even the DS Mod Tools was deleted in the process
The entire hard disk and all partitions that my user has writing permission

And since its one shot, the only way to get it again is to erase my computer one more time
I'm trying to work on my Ph.D.

But the messages in the console are all like this, and this never finishes

Link to comment
Share on other sites

  • Developer

You either have a bug with the linux temp folder, or its a steam bug.

Edit: I realize this may sound heartless and not caring about this issue at hand, which was not my intention, what I should have said was, as this was really what was I was thinking:
We'll look into the immediately, my first guess is its a issue with the linux temp folder or its a steam bug, but whatever it is, we'll find the bug and fix it.

Edited by zarklord_klei
  • Thanks 1
Link to comment
Share on other sites

21 minutes ago, zarklord_klei said:

You either have a bug with the linux temp folder, or its a steam bug.

My temp folder always worked and the steam also

But why the Don't Starve Mod Tools uses any kind of remove file function? Why its necessary?
If there is at least one "remove file" command in the source code it can cause that
If the coder wrote something like "Remove files from '/'+directory" and directory is nil, it would erase the entire computer

Since it only happens when I try to replace a mod picture in the Mod Tools, it should be triggering this

I never had this problem with the old version of DST Mod Tools

Link to comment
Share on other sites

11 minutes ago, Aeglefire said:

Can this be tried on another linux box? To verify the problem reoccurs with the exact same steps to reproduce?

I don't have any other computer to try this (or time now)
I would appreciate if anyone tries that

But for don't make any sense for the Don't Starve Mod Tools erase files since its using temp folders like @zarklord_klei told us

Maybe if we can see the source code from DS Mod Tools we can map the problem, but I think its not public

Link to comment
Share on other sites

2 hours ago, zarklord_klei said:

You either have a bug with the linux temp folder, or its a steam bug.

I poked at the mod update functions and the tool is calling a delete directory function 'wxFileName::Rmdir'.

Removing an entire directory without extensive care and checks is supremely bad form, and in this instance just nuked a person's entire drive.

It's better to have a lingering folder floating about than to accidentally expunge an entire drive.

The OS could easily redirect any directory created and not fail in the return result.  The program cannot assume that the directory just made doesn't contain other important files.

I'd recommend to definitely look at it closer and please either you or someone else there at Klei make all changes to remove the use of wxFileName::Rmdir by keeping tabs on all files created in some sort of array and deleting those files individually instead.

  • Like 11
  • Thanks 4
Link to comment
Share on other sites

  • Developer
1 hour ago, CarlZalph said:

The program cannot assume that the directory just made doesn't contain other important files.

The directory generated is named ugcuploader_<base16repr of the current millisecond> even if you tried to have a clashing name, it would still require incredibly precise timing to actually get the clash, not to mention the directory is created in the Temp folder which is intended for temporary files.

Link to comment
Share on other sites

52 minutes ago, zarklord_klei said:

The directory generated is named ugcuploader_<base16repr of the current millisecond> even if you tried to have a clashing name, it would still require incredibly precise timing to actually get the clash, not to mention the directory is created in the Temp folder which is intended for temporary files.

The OS can redirect anything you try to make into something else.  The point is that you cannot guarantee that what you just made is actually unique and does not contain other files.  The OS can and will lie to you under certain settings.

Take for example Bedrock Linux.  It's a very low level VM to house other distros and merge their capabilities while effectively lying to every single one of them about where files actually are to make it all function.

Assuming that the return directory is your unique special freshly made thing is the error.  Having a scan of all of the files in the directory before doing the purge is one method of fixing this, or do the safest method of just not deleting an entire directory and deleting the files themselves that the program's creating.

 

Edit:

Just to be clear, I'm not assigning blame here.  I don't care who or what wrote the program in this fashion and I'm not judging.  Under the majority of circumstances the program functions fine, but in this case it didn't.  The results were catastrophic to the end user.

To prevent this from happening to future users, it should be addressed.  Even if it's a highly improbable thing, imagine being the one on the receiving end of this and having all of your files poof because you were trying to make a mod for a game.  It sucks to put it bluntly, and I wouldn't wish for it to happen to anyone else.  (Backups and restore points besides the point.  Keep your valuable data backed up, folks.)

The fix of keeping a record of the files generated is rather lightweight and could be banged out in an hour.  Let the OS control if the directory should be purged later (you did put it in the temp folder after all).  Compare that to the time the OP will need to spend to re-obtain obtainable files and to recreate permanently lost files.

Edited by CarlZalph
  • Like 7
  • Thanks 4
Link to comment
Share on other sites

1 hour ago, zarklord_klei said:

The directory generated is named ugcuploader_<base16repr of the current millisecond> even if you tried to have a clashing name, it would still require incredibly precise timing to actually get the clash, not to mention the directory is created in the Temp folder which is intended for temporary files.

Well, reading what you said looks like the thing that happened to me was an "rare event"

But you can reproduce it by installing a fresh Ubuntu 20.04 and following the steps

Since Ubuntu 20.04 is the latest LTS version of Ubuntu and Ubuntu is a very popular Linux distro, I think the DS Mod Tools code should be changed to avoid these things
Like, no one will bring back my files. The damage is permanently done to me
At least it should not happen to anyone else

DS Mod Tools is the only tool in my 8 years of Linux experience that have done that kind of damage to my computer.

  • Like 4
  • Sad 1
  • Health 1
Link to comment
Share on other sites

  • Developer
23 minutes ago, Gleenus said:

Well, reading what you said looks like the thing that happened to me was an "rare event"

But you can reproduce it by installing a fresh Ubuntu 20.04 and following the steps

Since Ubuntu 20.04 is the latest LTS version of Ubuntu and Ubuntu is a very popular Linux distro, I think the DS Mod Tools code should be changed to avoid these things
Like, no one will bring back my files. The damage is permanently done to me
At least it should not happen to anyone else

DS Mod Tools is the only tool in my 8 years of Linux experience that have done that kind of damage to my computer.

We found the bug, apparently Ubuntu if given an invalid input to a delete command, it treats the input as the root dir, it was my fault for not properly adding an if check for that invalid input, but the result of that null input is incredibly surprising, and I'm incredibly sorry for the loss of any and all your files.

  • Thanks 1
  • Sad Dupe 2
Link to comment
Share on other sites

12 minutes ago, zarklord_klei said:

We found the bug, apparently Ubuntu if given an invalid input to a delete command, it treats the input as the root dir, it was my fault for not properly adding an if check for that invalid input, but the result of that null input is incredibly surprising, and I'm incredibly sorry for the loss of any and all your files.

Please, take the time to delete the files it generates directly by name and not apply a bandaid fix that still uses the delete entire directory.

  • Like 2
Link to comment
Share on other sites

12 minutes ago, zarklord_klei said:

We found the bug, apparently Ubuntu if given an invalid input to a delete command, it treats the input as the root dir, it was my fault for not properly adding an if check for that invalid input, but the result of that null input is incredibly surprising, and I'm incredibly sorry for the loss of any and all your files.

It's incredibly stupid ubuntu was made that way, why on earth would anyone want that to happen by default?

  • Like 1
Link to comment
Share on other sites

I've messaged @Gleenus and if there is any way to recover what was lost, we will do what we can do to help there. 

We're working on deploying a fix immediately and further review to make sure something like this can't ever happen again. 

For clarity, this is an extremely rare care that only affects modders on linux but we'll have a fix out ASAP. 

  • Like 1
  • Thanks 11
Link to comment
Share on other sites

1 hour ago, JoeW said:

I've messaged @Gleenus and if there is any way to recover what was lost, we will do what we can do to help there. 

We're working on deploying a fix immediately and further review to make sure something like this can't ever happen again. 

For clarity, this is an extremely rare care that only affects modders on linux but we'll have a fix out ASAP. 

Thanks @JoeW, but I already gave up from the data, I just don't have time for more recovery process (like at minumim: one week sending the HD for someone, 1 week of analysis and more 1 week for it come back)
I spend 6 hours trying to recover it with several tools and all have the same report "The data is corrupt, event if we can see some files, they are corrupted"
Now I need to run to try to reproduce my data for my Ph. D. qualification (codes are already running and generating tons of data output)

  • Sad 5
  • Sad Dupe 2
  • GL Happy 1
Link to comment
Share on other sites

  • Developer

Hey all, the patch for the Linux Mod Uploader file deletion issue has been pushed live. All the info that's been provided has been much appreciated and helpful in tracking down the problem and solving it as fast as possible.

  • Thanks 7
Link to comment
Share on other sites

@Gleenus

I am saddened by your lost data :(

But I have to say how much I'm admired for the support and agility that the entire Klei team had in solving this error so that it does not happen again and giving the necessary support...It was incredible, you are awesome, congratulations Klei :wilson_love:

Link to comment
Share on other sites

7 hours ago, YumoS said:

nothing to do with the main topic but if you guys have any important documents on your pc, always do a backup on a external hard drive or cloud.

In that case, an external hard drive would be erased if it was plugged

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...