turning on debug flags

        export CFLAGS="-O0 -ggdb"
        export CXXFLAGS="-O0 -ggdb"

using the following reproducible procedure

        bzr co lp:libvdpau
        git clone git://anongit.freedesktop.org/git/libva
        git clone git://anongit.freedesktop.org/vaapi/vdpau-driver

        cd ./libvdpau
        ./autogen.sh
        ./configure \
        --libdir=/usr/local/lib64
        make
        make install
        ldconfig

        cd ../libva
        ./autogen.sh
        ./configure --libdir=/usr/local/lib64 \
        --with-drivers-path=/usr/local/lib64/dri \
        --enable-dummy-driver \
        --enable-glx \
        --enable-egl \
        --disable-wayland
        make
        make install
        ldconfig

        cd ../vdpau-driver
        ./autogen.sh
        ./configure \
         --libdir=/usr/local/lib64 \
         --enable-glx \
         --enable-tracer \
         --with-sysroot=/usr/local/${LIBDIR}
        make
        make install
        ldconfig

GDB session returns

        gdb vainfo
                (gdb) run
                Starting program: /usr/local/bin/vainfo 
                [Thread debugging using libthread_db enabled]
                Using host libthread_db library
                "/lib64/libthread_db.so.1".
                libva info: VA-API version 0.33.0
                libva info: va_getDriverName() returns 0
                libva info: Trying to open
                /usr/local/lib64/dri/nvidia_drv_video.so
                libva info: Found init function __vaDriverInit_0_33

                Program received signal SIGFPE, Arithmetic exception.
                0x00007ffff5e4c87c in object_heap_destroy
                (heap=0x619c30) at object_heap.c:275
!!              275         for (i = 0; i < heap->heap_size /
heap->heap_increment; i++) {
                (gdb) bt
                #0  0x00007ffff5e4c87c in object_heap_destroy
                (heap=0x619c30) at object_heap.c:275
                #1  0x00007ffff5e50455 in destroy_heap
                (name=0x7ffff5e5f174 "buffer", heap=0x619c30, 
                    destroy_func=0x7ffff5e50337 <destroy_buffer_cb>,
                    user_data=0x619ae0) at vdpau_driver.c:138
                #2  0x00007ffff5e50488 in vdpau_common_Terminate
                (driver_data=0x619ae0) at vdpau_driver.c:159
                #3  0x00007ffff5e51a75 in vdpau_Terminate_Current
                (ctx=0x612d30) at vdpau_driver_template.h:537
                #4  0x00007ffff5e51b22 in vdpau_Initialize_Current
                (ctx=0x612d30) at vdpau_driver_template.h:563
                #5  0x00007ffff5e51f04 in __vaDriverInit_0_33
                (ctx=0x612d30) at vdpau_driver.c:317
                #6  0x00007ffff7bc494e in va_openDriver (dpy=0x605500,
                driver_name=0x6133c0 "nvidia") at va.c:273
                #7  0x00007ffff7bc543b in vaInitialize (dpy=0x605500,
                major_version=0x7fffffffd96c,
                minor_version=0x7fffffffd968)
                    at va.c:446
                #8  0x000000000040119f in main (argc=1,
                argv=0x7fffffffda88) at vainfo.c:98
                (gdb) 

identifying a problem in object_heap.c


        vi /usr/local/src/vdpau-driver/src/object_heap.c

                ...
                261     object_heap_destroy(object_heap_p heap)
                262     {
                263         object_base_p obj;
                264         int bucket_index, obj_index, i;
                265
                266         /* Check if heap is empty */
                267         for (i = 0; i < heap->heap_size; i++) {
                268             /* Check if object is not still
                allocated */
                269             bucket_index = i / heap->heap_increment;
                270             obj_index = i % heap->heap_increment;   
                271             obj =
                (object_base_p)(heap->bucket[bucket_index] + obj_index *
                heap->object_size);
                272             ASSERT(obj->next_free != ALLOCATED);
                273         }
                274
!!!             275         for (i = 0; i < heap->heap_size /
heap->heap_increment; i++) {
                276             free(heap->bucket[i]);
                277         }
                278
                279         pthread_mutex_destroy(&heap->mutex);
                280
                281         free(heap->bucket);
                282         heap->bucket = NULL;
                283         heap->heap_size = 0;
                284         heap->next_free = LAST_FREE;
                285     }

which, i think (?), appeared in

        
http://cgit.freedesktop.org/vaapi/intel-driver/commit/?id=ef5efefaec8b3a4eafde2347b98a973f73745421
_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to