[PyQt] Workaround / fix for "could not create shader" issue with QtQuick on linux (causes all QtQuick examples to fail)

Phil Thompson phil at riverbankcomputing.com
Tue Jan 28 10:16:19 GMT 2014


On 27-01-2014 11:55 pm, Russell Warren wrote:
>> I assume there is a way to see which shared libraries are loaded by
>> a running process. Can somebody compare the two cases?
>
> Sure.
>
> With it working (PyOpenGL imported): 
> http://bpaste.net/raw/wqsRPBbWpRG0y0eVLRVj/ [1]
>
> With the shader error:
> http://bpaste.net/raw/70VWD7JM7jKtO9Xsevgj/ [2]
>
> The diff:
> http://bpaste.net/raw/m87uC3nj62lmRQGA5PMY/ [3]
>
> Those were obtained with the proc system using:
> cat /proc/14197/maps | awk {print $6} | grep .so | sort | uniq
>
> Note that Im not sure that will be good enough, given that I had to
> get that dump prior to the app.exec_ due to the near-immediate
> segfault.  I just put a time.sleep before i the exec_ to capture the
> libs..
>
> If that is unhelpful, or if the libs in question arent loaded prior 
> to
> the exec_ call, I can just give you the open calls in the strace (but
> that is much messier).

Note that I don't think this is a PyQt problem. I think it's an 
Ubuntu/Qt5 problem that PyQt triggers. Also my Linux skills are not what 
they were.

I was initially hoping to see a different version of the same library 
being used, but I think the presence of libdbus in the working version 
is significant.

It might be interesting to see the same information for a working C++ 
version - particularly to see if libdbus is loaded.

It suggests that Nvidia has a dependency on DBus, that PyOpenGL 
satisfies that dependency, but PyQt doesn't.

Qt can be built with the DBus support dynamically linked or dynamically 
loaded (ie. with dlopen()). I'd be curious to know if that is a factor.

Phil



More information about the PyQt mailing list