I’m trying to debug my Vulkan application with Nsight Graphics.
The way I normally run it is by launching a simple script that first sets the environment variables needed for the application to work properly and then proceed to launch it.
Directly launching the app with the environment variables set.
Application Executable: /home/user/Documents/vulkan/build/app
Working Directory: /home/user/Documents/vulkan
Environment: PATH=/home/user/Documents/vulkan/extern/Vulkan/bin; LD_LIBRARY_PATH=/home/user/Documents/vulkan/extern/Vulkan/lib; VK_LAYER_PATH=/home/user/Documents/vulkan/extern/Vulkan/etc/vulkan/explicit_layer.d
Automatically Connect: On
I even wrote everything in absolute paths and without referring to other environment variables using ‘$’. Nothing worked (Obviously I first tried with relative paths and referencing other environment variables with ‘$’).
The result is “Failed to connect (host: localhost, pid: 7376). The target may already have exited.”
EDIT: I’ve disabled the validation layers and it no longer gives me this error right away, but it stays indefinitely “Trying to connect to process on host”.
Launch the run script without connecting automatically and try to attach the process later.
Application Executable: /home/user/Documents/vulkan/run
Working Directory: /home/user/Documents/vulkan
Automatically Connect: Off
Thank you for your feedback on Nsight Graphics. From looking at your steps in the report you sent, it appears that the setup you are using to debug your application looks fine. Your description seems to be the way to set the environment variable when trying to launch an application for debugging.
Would it be possible for you as a next step to use our latest Nsight Graphics 2019.5 release and try your steps again? Our 2019.2 release is a few months older and 2019.5 has a number of fixes that may have resolved your issue.
Since then I’ve updated Nsight Graphics to 2019.5. I’ve also updated the driver to 430.50.
The problem remains.
If I launch Nsight through a terminal with the environment variables set, and then setup the application executable and working directory (with automatically connect ON), my app is launched and works correctly but it still stays indefinitely “Trying to connect to process on host”.
Thanks for the update. Our engineer tried launching a Vulkan sample on their Linux machine with the same environment settings as yours, however didn’t see the same issues. Is it possible for you to share your app with us for further investigation?
Hello,
Thanks for investigating. I’ve discovered that it’s not a problem with environment variables. I can say this because I’ve tried running a known Vulkan application which requires none and it still didn’t work, displaying the “Trying to connect to process on host” message forever. You can get this Vulkan app here: https://github.com/SaschaWillems/Vulkan-glTF-PBR.
I’ve also tried an OpenGL application and it worked perfectly, so this is definitely a Vulkan issue.
Cheers,
Daniel
I would suggest your engineer to use a clean Ubuntu 18.04 image with the 430.50 driver, (for convenience a Virtual Machine might be better) because that would rule out or evidentiate that your software is relying on some packages that may not be installed or set up as expected.
I must add that I’ve tested the same application on a competitor software (not going to mention its name, but it’s “the open-source one”) and it worked perfectly, albeit it’s not as pleasant to work with.
Let’s hope that, in the future, NVIDIA adopts open-sourcing more seriously and this type of problems may go away as the community could help itself.
Thanks for the additional details. The developer suspects that Nomad’s interception layer wasn’t loaded somehow on your machine. The reason could be the layer manifest not being correctly installed.
Can you check the file’s existence at the following location? ~/.local/share/vulkan/implicit_layer.d/VK_LAYER_NV_nomad_release_public_2019_6_0.json
It should be deployed during the install, but might be unexpectedly removed. If this file doesn’t exist, you could try to run the script to re-install it: /host/linux-desktop-nomad-x64/VK_LAYER_NV_nomad.sh.
At the directory ~/.local/share/vulkan/implicit_layer.d/ there was only one file named VK_LAYER_NV_nomad.json
After running the script you recommended I noticed that it was trying to copy VK_LAYER_NV_nomad_release_public_2019_5_1.json (from the installed path) to ~/.local/share/vulkan/implicit_layer.d
However, cp and chmod were failling with “permission denied”, and therefore I ran it with sudo.
After that I tried running my vulkan application on Nsight and it finally worked!
Thanks for all your help.
As a side note I would like to reference that the installation guide for Linux does not mention the need for sudo anywhere (I would suppose that this copy script is being called by the “run” script mentioned in the guide). I really think you should write a note about it there. [url]Installation Guide :: Nsight Graphics Documentation
Glad to hear that you were able to get past this issue. Our apologies for the lack of information in the installation guide about the need for sudo. We now have a bug created on our side to improve the area of checking the Vulkan layer manifest during launching.
I spoke to our engineer and he recommended the following:
Have him look in HKLM\SOFTWARE\Khronos\Vulkan\ImplicitLayers. The directory there should point to his current install of Nsight and the JSON file in that directory Given that he has installed 2020 and is seeing the 2019_6_1.json error message, he may need to remove that one.
Please let me know if you have additional feedback.
The 2020.json files that you see in the registry are all there. I just don’t understand where it got the directory for 2019.json from! I can’t even get the 2019.json file anywhere on the internet!
I have also upgraded my Vulkan SDK version to the latest, made sure my NVIDIA drivers are up to date etc.
I personally don’t think the json file issue is causing the program to not attach to Nsight Graphics 2020.
I can share the source code with you so you can attempt it on a Windows machine at your place.
I figured it out. There was a problem with my Vulkan program where it would exit prematurely if you tried to run the .exe file outside of the Visual Studio Build → Run process. I fixed the problem of running the .exe file directly so that it wouldn’t exit prematurely and now it works fine.