[PyQt] Segfault using PyQt5 with Raspbian
David Boddie
david at boddie.org.uk
Thu Nov 30 14:36:52 GMT 2017
On Thu Nov 30 12:01:22 GMT 2017, Xenoshell wrote:
> i want to use my Raspberry Pi with a USB Camera in a GUI. I am working with
> Qt5 and python3.5.
Which version of Raspbian?
> The problem is when the code is at /self.camvfind.show()
> / or /self.cam.setViewfinder(self.camvfind)/ it sometimes results in a
> segmentation fault or it actually shows the camera feed. So it can work but
> not always. I am really confused by this. Here is my complete code
> <https://github.com/Xenoshell/raspberry/blob/master/qt.py> . Its just a
> little bit too long to show everything here but the most interesting
>
> function is this:
> def startVid(self):
> self.camvfind.show()
>
> self.cam.setViewfinder(self.camvfind)
>
> self.cam.setCaptureMode(self.cammode)
> self.cam.start()
Is the order of these calls important? What happens if you show the camvfind
widget last?
> I already tried to debug with gdb and the outout was:
> (gdb) bt
> #0 0x733d4620 in platform_get_handle () from /opt/vc/lib/libEGL.so
> #1 0x733c9f2c in eglCreateWindowSurface () from /opt/vc/lib/libEGL.so
> #2 0x722e7004 in ?? ()
>
> from
>
> /usr/lib/arm-linux-gnueabihf/qt5/plugins/xcbglintegrations/libqxcb-egl-integ
> ration.so Backtrace stopped: previous frame identical to this frame (corrupt
> stack?)
I did what I tend to do in these situations and searched for part of the
backtrace. In this case I searched for
platform_get_handle () from /opt/vc/lib/libEGL.so
I haven't thoroughly read through the advice you got in other forums, so I
can't be sure if I'm repeating someone else:
https://raspberrypi.stackexchange.com/questions/75597/segmentation-fault-running-out-of-memory-pyqt5
https://forum.qt.io/topic/84893/resizing-a-constant-video-stream-from-opencv-to-pyqt5-with-qpainter-in-a-qwidget-using-a-raspberry-pi/24
https://forum.qt.io/topic/85511/segmentation-fault-trying-to-display-camera-feed
Anyway, I found a couple of responses to similar questions that might be
useful, even if one of them is for Ubuntu and not Raspbian:
https://raspberrypi.stackexchange.com/questions/61078/qt-applications-dont-work-due-to-libegl
https://code.mythtv.org/trac/ticket/12757
My advice is to check whether there is more than one copy of libEGL installed
and to use LD_LIBRARY_PATH to select each one to see if it makes a
difference.
David
More information about the PyQt
mailing list