[valgrind] v4l1_open



  • Hallo c-community,

    ich habe ein paar kleine Probleme mit eine Kamera mit v4l zu öffnen, ohne dass sich valgrind über uninitialisierte Byte(s) beschwert.

    Folgender Maßen sieht meine Öffnungsfunktion aus:

    void	V4LCAMERA_OpenDevice(pClassV4LCamera V4LCamera)
    {
    	struct stat st;
    	char ErrMessage[256];
    
        if (-1 == stat(V4LCAMERA_Get_DeviceName(V4LCamera), &st))
    	{
    		sprintf(ErrMessage, "Cannot identify %s", V4LCAMERA_Get_DeviceName(V4LCamera));
    		errmsg_exit(V4LCAMERA, ErrMessage, 262);
    	}
        if (!S_ISCHR(st.st_mode))
    	{
    		sprintf(ErrMessage, "%s is no device", V4LCAMERA_Get_DeviceName(V4LCamera));
    		errmsg_exit(V4LCAMERA, ErrMessage, 267);
    	}    
    	V4LCamera->CameraHandle = v4l1_open(V4LCAMERA_Get_DeviceName(V4LCamera), O_RDONLY);
    	//V4LCamera->CameraHandle = v4l1_open("/dev/v4l/by-id/usb-The_Imaging_Source_Europe_GmbH_DFM_22BUC03-ML_03310459-video-index0", O_RDONLY);
    	if (-1 == V4LCamera->CameraHandle)
    	{
    		sprintf(ErrMessage, "%s is no device", V4LCAMERA_Get_DeviceName(V4LCamera));
    		errmsg_exit(V4LCAMERA, ErrMessage, 277);
    	}
    }
    

    Folgende Ausgabe gibt mir valgrind mit Option --leak-check=full:

    ==2906== Thread 2:
    ==2906== Syscall param ioctl(generic) points to uninitialised byte(s)
    ==2906== at 0x4126547: syscall (syscall.S:31)
    ==2906== by 0x41B5FDF: ??? (in /usr/lib/libv4lconvert.so.0)
    ==2906== by 0x41A9E87: v4lconvert_create (in /usr/lib/libv4lconvert.so.0)
    ==2906== by 0x40582A7: v4l2_fd_open (in /usr/lib/libv4l2.so.0)
    ==2906== by 0x4051165: v4l1_open (in /usr/lib/libv4l1.so.0)
    ==2906== by 0x804A26F: V4LCAMERA_OpenDevice (CLASS_V4LCamera.c:270)
    ==2906== by 0x804A821: V4LCAMERA_ThreadFunction (CLASS_V4LCamera.c:437)
    ==2906== by 0x403A954: start_thread (pthread_create.c:300)
    ==2906== by 0x412A1DD: clone (clone.S:130)
    ==2906== Address 0x4e416d8 is on thread 2's stack

    Was mache ich falsch hier? Der Quellcode scheint zu funktionieren aber ich möchte verstehen, warum valgrid hier meckert.

    MfG
    mirrowwinger


  • Mod

    edit: Hier stand etwas ungenaues


Anmelden zum Antworten