Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] SMB mounted volume IO error 1.2.80 "System.IO.FileNotFoundException" #554

Open
GiulioCDI opened this issue Jan 21, 2025 · 18 comments
Open
Labels
bug Something isn't working

Comments

@GiulioCDI
Copy link

GiulioCDI commented Jan 21, 2025

Description of the issue

Update 1.2.80 has broken compatibility with mounted SMB shares. I believe the update to .NET 9 has caused this issue. Emulator will crash upon launching any software.

Emulator files and games are located on the network share. Previously emulator would detect the correct emulated system version in the bottom right corner.
After the update, the detected System version is NaN.

The previous version would also correctly list the mounted network path in console: D:\FOLDER_TO_EMULATOR...
After the update, folder path is listed as follows: \?\UNC\NETWORK_LOCATION...

Reproduction steps

Update to v1.2.80 and attempt to launch a game with the emulator running on an SMB network mounted disk.

Log file

Ryujinx_1.2.80_2025-01-20_21-49-27.log

OS

Windows 11 23H2

Ryujinx version

1.2.80

Game version

NA

CPU

AMD 7950X

GPU

NVIDIA RTX 4090

RAM

64 GB

List of applied mods

NA

Additional context?

No response

@GiulioCDI GiulioCDI added the bug Something isn't working label Jan 21, 2025
@x7l7j8cc
Copy link

I have the same problem, with both 1.2.80 and 1.2.81... If i go back to 1.2.78 , all goes back to normal.

@GreemDev
Copy link
Member

GreemDev commented Jan 22, 2025

@x7l7j8cc
Copy link

@GreemDev We didnt tell you to reverse the .NET upgrade... But, more then anything to look up to fix the problem?
If before was working fine, but now it doesnt, i dont see why you cant fix. Obviously if the problem is with .NET 9 itself, there nothing we can do, we have to wait for a fix from Microsoft, i understand that.. in this case or we SMB users stick with 1.2.78 at the moment, or someone have to find a workaround to fix the Bug. Because "weird edge" or not, there are users that can and use a NAS to store anything and/or use SMB Share.

In my case I use a NAS, because for me its more convenient, and i can access those files whenever i am.

Dont cut off people only because they use a NAS/SMB Share. Please.

@GreemDev
Copy link
Member

@GreemDev We didnt tell you to reverse the .NET upgrade... But, more then anything to look up to fix the problem? If before was working fine, but now it doesnt, i dont see why you cant fix. Obviously if the problem is with .NET 9 itself, there nothing we can do, we have to wait for a fix from Microsoft, i understand that.. in this case or we SMB users stick with 1.2.78 at the moment, or someone have to find a workaround to fix the Bug. Because "weird edge" or not, there are users that can and use a NAS to store anything and/or use SMB Share.

In my case I use a NAS, because for me its more convenient, and i can access those files whenever i am.

Dont cut off people only because they use a NAS/SMB Share. Please.

The .NET upgrade is realistically the only thing that caused this. I didn't make any changes to how anything is loaded.

@GiulioCDI
Copy link
Author

I'm not asking for you to revert a change.

I'm asking if it would be possible to look into why this issue is occurring. It is possible the issue is related to .NET 9. But this may not be the case. If you could take a bit of time to look into the issue I believe both I and x7l7j8cc would appreciate it.

I understand this issue will effect a small subset of users but for us it would make a huge difference. Thank you.

@GreemDev
Copy link
Member

I'm not asking for you to revert a change.

I'm asking if it would be possible to look into why this issue is occurring. It is possible the issue is related to .NET 9. But this may not be the case. If you could take a bit of time to look into the issue I believe both I and x7l7j8cc would appreciate it.

I understand this issue will effect a small subset of users but for us it would make a huge difference. Thank you.

Refer to the comment I just made.

@dxgldotorg
Copy link

I recently moved my emulator folders to my NAS, and used a symlink to bind it to my network path. Seems to work fine on my end.

@kftX
Copy link

kftX commented Jan 24, 2025

I recently moved my emulator folders to my NAS, and used a symlink to bind it to my network path. Seems to work fine on my end.

How exactly did you manage this? I created a symlink to my emulator folder on my NAS but Ryujinx still refused to display firmware version and sees itself as installed on \UNC\SERVERNAME\Folder

@x7l7j8cc
Copy link

x7l7j8cc commented Jan 24, 2025

@dxgldotorg @kftX
For me symlink doesnt work , as im on Windows.. and Windows doesnt allow to create a symlink to a NAS / SMB Share, you can only create a "Desktop Type Link".

@dxgldotorg
Copy link

@dxgldotorg @kftX For me symlink doesnt work , as im on Windows.. and Windows doesnt allow to create a symlink to a NAS / SMB Share, you can only create a "Desktop Type Link".

mklink /d link target

@x7l7j8cc
Copy link

@dxgldotorg I used that same command, but when used on a smb/nas it simply create a link on windows.

@kftX
Copy link

kftX commented Jan 25, 2025

@dxgldotorg I used that same command, but when used on a smb/nas it simply create a link on windows.

Yup, can confirm the same. I knew about mklink /d but the thing is that's a soft-link and doesn't work, I thought he'd done something different. Linux allows for hard linking folders but Windows does not. There is a junction option in Windows as well, but it can't point to non-local drives. So basically we keep the old version.

@dxgldotorg
Copy link

dxgldotorg commented Jan 26, 2025

@dxgldotorg I used that same command, but when used on a smb/nas it simply create a link on windows.

Yup, can confirm the same. I knew about mklink /d but the thing is that's a soft-link and doesn't work, I thought he'd done something different. Linux allows for hard linking folders but Windows does not. There is a junction option in Windows as well, but it can't point to non-local drives. So basically we keep the old version.

Maybe recent Canary builds of Windows handle the symlink redirection better, as that is what I'm running on. Can't test at the very moment as my server is having issues, but it did work for me. Edit: Booted up TOTK 1.2.1 and could play and save fine.

@GiulioCDI
Copy link
Author

GiulioCDI commented Jan 26, 2025

Here is a python script I created to create a .bat file with all the mklink commands for directories containing a mix of folders and files.

Change the extension of the file from .txt to .py in order to use it.

The python script asks for a network directory and a local directory and will create a .bat file containing the commands for a symlink from the network directory to the local directory.

Run the created .bat in order to create the symlink. Finally, you must delete the Ryujinx.exe from the local folder since it's a symlink file and replace it with a copy of the .exe from the network folder.

Symbolic Link Create.txt

@x7l7j8cc
Copy link

x7l7j8cc commented Jan 26, 2025

@GiulioCDI This are the results...
"Impossibile trovare il percorso specificato." -> "The specified path could not be found."

EDIT: I needed to create manually the Folder.

@x7l7j8cc
Copy link

x7l7j8cc commented Jan 26, 2025

@GiulioCDI Ok, after a bit, i can confirm that the method GiulioCDI wrote, works fine.

GiulioCDI, i changed a bit the python code, and ended up creating 2 methods...

  • one with the BAT file, similar to yours (but with some code changed/added).
  • and the other one, letting python do the entire things.

Either two do their things Fully Automatically (just need the source and destination folder), so there is no need to manually copy or other things. Obviously if anyone is interested.

RyujiNX_SymLink_Generator.py.txt
RyujiNX_SymLink_Generator(with_BAT).py.txt

@kftX
Copy link

kftX commented Jan 26, 2025

@dxgldotorg I used that same command, but when used on a smb/nas it simply create a link on windows.

Yup, can confirm the same. I knew about mklink /d but the thing is that's a soft-link and doesn't work, I thought he'd done something different. Linux allows for hard linking folders but Windows does not. There is a junction option in Windows as well, but it can't point to non-local drives. So basically we keep the old version.

Maybe recent Canary builds of Windows handle the symlink redirection better, as that is what I'm running on. Can't test at the very moment as my server is having issues, but it did work for me. Edit: Booted up TOTK 1.2.1 and could play and save fine.

I tested the most recent Canary and the issue is still there. It does not detect or install any firmware as the path \UNC[...] is unavailable. Are you sure your Ryujinx itself is on the NAS? Because the dumps being located on the NAS/Server is fine, what breaks Ryujinx is the emulator itself (with a portable folder) being located on the NAS/Server.

@GiulioCDI
Copy link
Author

GiulioCDI commented Jan 26, 2025

I tested the most recent Canary and the issue is still there. It does not detect or install any firmware as the path \UNC[...] is unavailable. Are you sure your Ryujinx itself is on the NAS? Because the dumps being located on the NAS/Server is fine, what breaks Ryujinx is the emulator itself (with a portable folder) being located on the NAS/Server.

Here is a screenshot of my local folder. All files and folder except for Ryujinx.exe are symlinks. The .exe is the only file that needs to actually be present in the local directory. I took a screenshot of my Ryujinx folder for easier understanding.

EDIT

When installing firmware use the symlink path and not the network path.

Installing firmware from a network folder seems to work without a problem.

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants