[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