Create a ticket
Follow

Q100392: Nuke 11 failing to launch on Ubuntu because it can not find or load the Qt platform plugin "xcb"

SYMPTOMS

When trying to launch Nuke 11.0v1 or later on Ubuntu, you may encounter an error similar to the following:
 

 

CAUSE
This issue started happening with Nuke 11.0v1 due to the upgrade of the Qt version used internally to 5.6.1, in order to be VFX Reference Platform compliant. 
 
We have identified the above error to be related to the libstdc++.so library included in the Nuke 11 installation directory. This library version appears to conflict with the system version that Ubuntu has, and this seems to be causing Nuke to not launch. 

 

WORKAROUND
The conflict has been reported to our engineering team and logged as a bug report to be addressed in a future release. You can follow its progress and subscribe to notifications via the URL below:

TP 340253 - Nuke 11 fails to launch on Ubuntu because it could not find or load the Qt platform plugin "xcb"

To workaround the problem you need to first identify that the error you're seeing is due to the same library conflict. 

Identifying the error cause

Firstly, run the following command in a terminal:

LD_DEBUG=libs /usr/local/Nuke11.1v2/Nuke11.1

This should give a long output in the terminal but, very near to the end, you should see something similar to the following line:

/usr/local/Nuke11.0v4/libstdc++.so.6: error: version lookup error: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libmirclient.so.9) (fatal)

If you see this line in the output it indicates the error is due to the same libstdc++.so library conflict we've identified on Ubuntu and logged as the bug above.  

Error workaround

To work around this issue you need to force the usage of the system version of this library, instead of the one that is shipped with Nuke. 

Try running the following command in a terminal:

locate *libstdc++*

This searches for all files that contain libstdc++ in its name, and this should give you a similar output in the terminal:

/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so
/usr/lib/i386-linux-gnu/libstdc++.so.6
/usr/lib/i386-linux-gnu/libstdc++.so.6.0.21
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/usr/local/Nuke11.0v4/libstdc++.so
/usr/local/Nuke11.0v4/libstdc++.so.6
/usr/local/Nuke11.0v4/libstdc++.so.6.0.18
/usr/local/Nuke11.1v2/libstdc++.so
/usr/local/Nuke11.1v2/libstdc++.so.6
/usr/local/Nuke11.1v2/libstdc++.so.6.0.18

The line we are looking for from the output is /usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so. This identifies the system version of libstdc++.so which we need to be loaded before any other. 

Next, by running the following command the libstdc++.so will be preloaded and use the system version instead of the one that is shipped with Nuke:

export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so

You should now be able to launch Nuke 11 as normal.

FURTHER READING
The above workaround would require you to run the export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so command in every terminal session from which you launch Nuke.

To simplify the workflow, you can instead create a Nuke wrapper script that will run this command before launching Nuke. Another advantage of using a wrapper script is that it will only run the export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so command when launching Nuke, so it will not interfere with any other applications that may rely on this library. 

You can create a wrapper script for Nuke 11.1v2 for example by first copy and pasting the following lines into a text editor:

export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so
/usr/local/Nuke11.1v2/Nuke11.1

Save this file with the extension .sh, for example 'Nuke11.1v2.sh'. This script can then be launched from the terminal to open Nuke. 

Additionally, you could also create an alias command by adding the following line to your user .bashrc file:

alias nuke11.1v2 ='~/filepath/Nuke11.1v2.sh'

This will allow you to type nuke11.1v2 in a terminal in order to run the .sh script and launch Nuke 11.1v2 with the LD_PRELOAD environment variable set prior to launch.

NOTE: To use other versions of Nuke you have to update the version number in the example above, and save a new copy of the .sh file. 

FURTHER HELP
If you are experiencing this issue on Ubuntu and the above workaround does not resolve the problem to allow Nuke to launch, please open a Support ticket. Please let us know the symptoms of the issue, the troubleshooting steps you have taken so far and the exact OS build you are using.

More information on how to open a Support ticket can be found in the Q100064: How to raise a support ticket article.

Was this article helpful?
/
0 out of 0 found this helpful

Comments