XCB error: 148 - Qt application display issues
I'm trying to run my Qt application on a different computer (it works perfectly on mine, where I developed it). When I start this application through the terminal, I get this error -
QXcbConnection: XCB error: 148 (Unknown), sequence: 175, resource id: 0, major code: 140 (Unknown), minor code: 20
My program does launch and everything looks ok, but when I run it I see strange behavior when interacting with the display (some paint commands are not being executed, which is crucial for my app).
I've tried searching for this error and I can't find any solution so far. Do you have any suggestions?
Using ubuntu 16.04, with Nvidia 1050 GTX gpu, code was compiled with Qt 5.7
i was also facing the same issue
the solution that worked for me was,
coping my libxcb.so file on the system i am running my application and making a any_name.conf file in /etc/ld.so.conf/any_name.conf with the folder path where libxcb is placed.
i have placed my libxcb.so in "platforms" folder where my application is.
hope this helps...
Hi and welcome to devnet,
What are the differences between both machines ?
And how did you deploy your application ?
@Swapnil_Shelke modifying the ld.so.conf configuration of a user machine for a library that is likely already installed on that machine is not a good idea.
Comp1 (working) -
Nvidia GTX 960
Comp2 (error) -
Nvidia GTX 1050
I compiled my code on comp1, and just took the executable. Linking is dynamic to the Qt libraries (they came from the same installation file).
Where does the Qt you installed come from ?
Just to be sure, you only copy the executable to your other machine ?
The Qt comes from Qt's site, I've installed using the 'qt-opensource-linux-x64-5.7.0.run' script.
And yes, just copied.
Then are you sue that you are using that version of Qt when running your application ?
I'm sure. Will try to reinstall Qt and run it again. Do you have any direction I can look into to even figure out what this error means?
You didn't deploy the application, did you ? You just copied the executable over you other machine ?
Normally you create a deployment folder containing
a few subfolders ( like platforms )
and the needed dlls/so files.
You can also test this app
(i have not tried it yet)
To inform the loader on linux about the so files in the folder, you can use rpath.