New version of webcamd [3.11.0.1] ready for testing

Hans Petter Selasky hans.petter.selasky at bitfrost.no
Fri Aug 16 16:51:12 UTC 2013


Hi Jurgen,

I think this is something broken at the Linux side or I have sources out of sync.
You should just ignore the NULL function pointer, hence the technisat driver does not have these callbacks.

Change:
       if (!rdev->users++)
                rval = rdev->open(rdev);
Into:
       if (!rdev->users++ && rdev->open != NULL)
                rval = rdev->open(rdev);

And the same for the:

rdev->close

case.

CC'ed: Srinivas KANDAGATLA
 
https://lkml.org/lkml/2013/7/22/93

--HPS



-----Original message-----
> From:Juergen Lock <nox at jelal.kn-bremen.de <mailto:nox at jelal.kn-bremen.de> >
> Sent: Friday 16th August 2013 18:05
> To: Hans Petter Selasky <hans.petter.selasky at bitfrost.no <mailto:hans.petter.selasky at bitfrost.no> >
> Cc: freebsd-multimedia at freebsd.org <mailto:freebsd-multimedia at freebsd.org> 
> Subject: Re: New version of webcamd [3.11.0.1] ready for testing
> 
> On Fri, Aug 16, 2013 at 02:23:06PM +0200, Hans Petter Selasky wrote:
> > Hi,
> Hi!
> > 
> > There is a new version of webcamd available. Changes:
> > 
> > - Update to the latest and greatest Linux V4L codebase (Linux 3.11).
> > 
> > Please test and report back!
> > 
> > svn --username anonsvn --password anonsvn \
> >         checkout svn://svn.turbocat.net/i4b/trunk/ports
> > 
>  Segfaults with technisat-usb2:
> 
> Linux video capture interface: v2.00
> lirc_dev: IR Remote Control driver registered, major 14 
> IR NEC protocol handler initialized
> IR RC5(x) protocol handler initialized
> IR RC6 protocol handler initialized
> IR JVC protocol handler initialized
> IR Sony protocol handler initialized
> IR RC5 (streamzap) protocol handler initialized
> IR SANYO protocol handler initialized
> IR LIRC bridge handler initialized
> b2c2-flexcop: B2C2 FlexcopII/II(b)/III digital TV receiver chip loaded successfully
> uvcvideo: Unable to create debugfs directory
> USB Video Class driver (1.1.1)
> cpia2: V4L-Driver for Vision CPiA2 based cameras v3.0.1
> au0828 driver loaded
> pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
> pvrusb2: Debug mask is 31 (0x1f)
> USBVision USB Video Device Driver for Linux : 0.9.11
> Em28xx: Initialized (Em28xx dvb Extension) extension
> virtual DVB server adapter driver, version 1.0-hps, (c) 2011 Hans Petter Selasky
> Attached to ugen5.2[0]
> technisat-usb2: set alternate setting
> technisat-usb2: firmware version: 17.63
> dvb-usb: found a 'Technisat SkyStar USB HD (DVB-S/S2)' in warm state.
> dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
> DVB: registering new adapter (Technisat SkyStar USB HD (DVB-S/S2))
> dvb-usb: MAC address: 0x8014c3188M
> stv6110x_attach: Attaching STV6110x
> DBG: : dvb_register_frontend:
> INFO: : DVB: registering adapter 0 frontend 0 (Technisat SkyStar USB HD (DVB-S/S2))...
> DBG: : dvb_frontend_clear_cache: Clearing cache for delivery system 5
> Registered IR keymap rc-technisat-usb2
> rc0: IR-receiver inside an USB DVB receiver as webcamd
> DBG: rc0: lirc_dev: lirc_register_driver: sample_rate: 0
> INFO: rc0: lirc_dev: driver ir-lirc-codec (technisat-usb2) registered at minor = 0
> dvb-usb: schedule remote query interval to 100 msecs.
> dvb-usb: Technisat SkyStar USB HD (DVB-S/S2) successfully initialized and connected.
> Waiting for HAL USB device.
> Creating /dev/dvb/adapter0/demux0
> Creating /dev/dvb/adapter0/dvr0
> DBG: : dvb_frontend_open:
> DBG: : dvb_frontend_release:
> Creating /dev/dvb/adapter0/frontend0
> DBG: rc0: lirc_dev (ir-lirc-codec (technisat-usb2)[0]): open called
> zsh: segmentation fault (core dumped)  webcamd-31101x -d 5.2 -H
> # gdb $(which webcamd-31101x ) webcamd.core
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "amd64-marcel-freebsd"...
> 
> warning: core file may not match specified executable file.
> Core was generated by `webcamd'.
> Program terminated with signal 11, Segmentation fault.
> Reading symbols from /usr/local/lib/libdbus-1.so.3...done.
> Loaded symbols for /usr/local/lib/libdbus-1.so.3
> Reading symbols from /usr/local/lib/libhal.so.1...done.
> Loaded symbols for /usr/local/lib/libhal.so.1
> Reading symbols from /usr/lib/libusb.so.2...done.
> Loaded symbols for /usr/lib/libusb.so.2
> Reading symbols from /usr/local/lib/libcuse4bsd.so.1...done.
> Loaded symbols for /usr/local/lib/libcuse4bsd.so.1
> Reading symbols from /lib/libutil.so.8...done.
> Loaded symbols for /lib/libutil.so.8
> Reading symbols from /lib/libthr.so.3...done.
> Loaded symbols for /lib/libthr.so.3
> Reading symbols from /lib/libc.so.7...done.
> Loaded symbols for /lib/libc.so.7
> Reading symbols from /libexec/ld-elf.so.1...done.
> Loaded symbols for /libexec/ld-elf.so.1
> #0  0x0000000000000000 in ?? ()
> [New Thread 8014087c0 (LWP 100307/webcamd)]
> [New Thread 801408980 (LWP 100306/webcamd)]
> [New Thread 801408b40 (LWP 100305/webcamd)]
> [New Thread 801408d00 (LWP 100304/webcamd)]
> [New Thread 801409080 (LWP 100303/webcamd)]
> [New Thread 801409240 (LWP 100302/webcamd)]
> [New Thread 801409400 (LWP 100301/webcamd)]
> [New Thread 8014095c0 (LWP 100299/webcamd)]
> [New Thread 801409940 (LWP 100298/webcamd)]
> [New Thread 801409b00 (LWP 100289/webcamd)]
> [New Thread 801409cc0 (LWP 100288/webcamd)]
> [New Thread 801409e80 (LWP 100287/webcamd)]
> [New Thread 80140a3c0 (LWP 100274/webcamd)]
> [New Thread 80140a740 (LWP 100265/webcamd)]
> [New Thread 80140aac0 (LWP 100260/webcamd)]
> [New Thread 80140ac80 (LWP 100229/webcamd)]
> [New Thread 80140ae40 (LWP 100159/webcamd)]
> [New Thread 80144f1c0 (LWP 100146/webcamd)]
> [New Thread 8014041c0 (LWP 100541/initial thread)]
> (gdb) bt
> #0  0x0000000000000000 in ?? ()
> #1  0x00000000005abcca in rc_open (rdev=0x8015aea00)
>     at media_tree/drivers/media/rc/rc-main.c:711
> #2  0x00000000005ae488 in lirc_dev_fop_open (inode=0x801499508, 
>     file=0x801499520) at media_tree/drivers/media/rc/lirc_dev.c:472
> #3  0x000000000070e8db in linux_open (f_v4b=288, fflags=0)
>     at kernel/linux_file.c:57
> #4  0x0000000000715a21 in v4b_create (unit=-1) at webcamd.c:353
> #5  0x0000000000716636 in main (argc=4, argv=0x7fffffffe2b8) at webcamd.c:719
> (gdb) fr 1
> #1  0x00000000005abcca in rc_open (rdev=0x8015aea00)
>     at media_tree/drivers/media/rc/rc-main.c:711
> 711                     rval = rdev->open(rdev);
> (gdb) p rdev
> $1 = (struct rc_dev *) 0x8015aea00
> (gdb) p *rdev
> $2 = {dev = {minor = 0, busnum = 0, kobj = {parent = 0x0}, refcount = {
>       refcount = {counter = 1}}, release = 0, driver = 0x0, 
>     parent = 0x8014be000, type = 0x954700, platform_data = 0x0, 
>     driver_data = 0x8015aea00, fops = 0x0, cdev = 0x0, class = 0x9545a0, 
>     driver_static = {name = 0x0, owner = 0x0, pm = 0x0}, devt = 0, 
>     name = "rc0", '\0' <repeats 60 times>, bus_name = '\0' <repeats 31 times>, 
>     bus_id = '\0' <repeats 31 times>}, 
>   input_name = 0x77e958 "IR-receiver inside an USB DVB receiver", 
>   input_phys = 0x8014c42a8 "usb-/dev/usb-/dev/usb/ir0", input_id = {
>     bustype = 3, vendor = 5367, product = 1280, version = 1}, 
>   driver_name = 0x787852 "technisat-usb2", 
>   map_name = 0x787840 "rc-technisat-usb2", rc_map = {scan = 0x80148ae00, 
>     size = 64, len = 33, alloc = 512, rc_type = RC_TYPE_RC5, 
>     name = 0x770887 "rc-technisat-usb2", lock = <incomplete type>}, lock = {
>     sem = {value = 0, owner = 0x8014041c0}}, devno = 0, raw = 0x80148ac00, 
>   input_dev = 0x8015b9400, driver_type = RC_DRIVER_IR_RAW, idle = false, 
>   allowed_protos = 262143, enabled_protocols = 18446744073709551615, 
>   users = 1, scanmask = 0, priv = 0x8014c2000, keylock = <incomplete type>, 
>   keypressed = false, keyup_jiffies = 0, timer_keyup = {entry = {
>       tqe_next = 0x0, tqe_prev = 0x0}, function = 0x5ab930 <ir_timer_keyup>, 
>     expires = 0, data = 34382473728}, last_keycode = 0, last_scancode = 0, 
>   last_toggle = 0 '\0', timeout = 0, min_timeout = 0, max_timeout = 0, 
>   rx_resolution = 0, tx_resolution = 0, change_protocol = 0, open = 0, 
> ---Type <return> to continue, or q <return> to quit---
>   close = 0, s_tx_mask = 0, s_tx_carrier = 0, s_tx_duty_cycle = 0, 
>   s_rx_carrier_range = 0, tx_ir = 0, s_idle = 0, s_learning_mode = 0, 
>   s_carrier_report = 0}
> (gdb) p rdev->open
> $3 = (int (*)(struct rc_dev *)) 0
> (gdb) q
> 
>  Thanx,
> 	Juergen
> 
> PS: pctv452e (TT-S2 3600) and dual dib0700 seem to work so far.
> 



More information about the freebsd-multimedia mailing list