O código pára na inicialização sem sudo? Ajude-me a interpretar a saída do gdb

0

Eu estou escrevendo no Python 3.5, usando PyQt5, Ubuntu Mate Xenial e um Raspberry Pi. Eu tenho uma tonelada de saída do gdb e obviamente meu código. Tenho certeza que meu código não está errado (eu escrevi no fórum Qt e eles verificaram isso), mas algo com o meu sistema operacional ou algo não está instalado.

Meu código deve abrir uma janela com um feed de câmera usb. Eu quero mais adicionado a isso, mas eu só quero gerenciar essa parte do meu projeto.

A saída do gdb só acontece se eu usar python3 qt5.py para executar meu código. Se eu uso sudo python3 qt5.py o código executado muito bem e também abre o feed da câmera, mas então a tela fica bloqueada e eu tenho que fazer o login novamente.

De qualquer forma aqui está o meu código e ele para exatamente em self.cam = QCamera (QCameraInfo.defaultCamera ()):

    import sys
from PyQt5 import QtCore , QtWidgets, QtGui, QtMultimedia, QtMultimediaWidgets
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QApplication, QPushButton, QMainWindow
from PyQt5.QtMultimedia import QCamera, QCameraInfo, QMediaObject, QCameraViewfinderSettings, QCameraImageCapture
from PyQt5.QtMultimediaWidgets import QCameraViewfinder


class Camera(QObject):
    def __init__(self, parent = QObject()):
        super(Camera, self).__init__(parent)
        print("3")
        self.cam = QCamera(QCameraInfo.defaultCamera())   #"/dev/video0".encode()
        print("4")
        self.caminfo = QCameraInfo(self.cam)
        self.camvfind = QCameraViewfinder()
        self.camvfindset = QCameraViewfinderSettings()
        self.cammode = self.cam.CaptureMode(0)
        self.camimgcap = QCameraImageCapture(self.cam)

    def iniCamera(self):
        print(self.caminfo.description())
        print(self.caminfo.availableCameras())

        for caminfo in QCameraInfo.availableCameras():
            print(caminfo.deviceName())

        if self.cam.isCaptureModeSupported(self.cammode):
            print("Capturemode supported")

    def startVid(self):
        #self.camimgcap.CaptureDestination(2)

        self.camvfind.show()

        self.cam.setViewfinder(self.camvfind)

        self.cam.setCaptureMode(self.cammode)

        self.cam.start()



if __name__ == '__main__':
    print("1")
    app = QtWidgets.QApplication(sys.argv)
    print("2")
    cam = Camera()
    print("4")
    cam.iniCamera()

    cam.startVid()

    sys.exit(app.exec_())

As saídas do gdb são: Esta é apenas a compilação do meu código

(gdb) run qt5.py
Starting program: /usr/bin/python3 qt5.py
Cannot parse expression '.L1185 4@r4'.
warning: Probes-based dynamic linker interface failed.
Reverting to original interface.

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
1
[New Thread 0x72b39470 (LWP 4134)]
2
3
[New Thread 0x6de10470 (LWP 4139)]
[Thread 0x6de10470 (LWP 4139) exited]
[New Thread 0x6de10470 (LWP 4140)]
[Thread 0x6de10470 (LWP 4140) exited]

este é o backtrace:

(gdb) bt
#0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46
#1  0x76f21c0a in __GI_ppoll (fds=0x7001a8, nfds=1, timeout=<optimized out>, 
    sigmask=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:50
#2  0x73389e12 in pa_mainloop_poll ()
   from /usr/lib/arm-linux-gnueabihf/libpulse.so.0
#3  0x7338a290 in pa_mainloop_iterate ()
   from /usr/lib/arm-linux-gnueabihf/libpulse.so.0
#4  0x6de2888c in conf_pulse_hook_load_if_running ()
   from /usr/lib/arm-linux-gnueabihf/alsa-lib/libasound_module_conf_pulse.so
#5  0x6e01c9f2 in ?? () from /usr/lib/arm-linux-gnueabihf/libasound.so.2
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

e aqui estão os tópicos de informações:

(gdb) info threads
  Id   Target Id         Frame 
* 1    Thread 0x76ff6300 (LWP 4204) "python3" __libc_do_syscall ()
    at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46
  2    Thread 0x72b39470 (LWP 4206) "QXcbEventReader" 0x76f21b90 in poll ()
    at ../sysdeps/unix/syscall-template.S:84

Se você realmente leu até aqui, obrigado. Eu sei que coletei bastante os dados. Se você tiver alguma dúvida, não hesite em perguntar.

    
por Xenoshell 12.12.2017 / 16:22

0 respostas