webcamd-4.12.0.1 segfault when using WinTV-HV-950Q

Lucas Young youngluc at gmail.com
Sat Dec 16 13:11:37 UTC 2017


I am trying to get my WinTV-HV-950Q working on FreeBSD. I am running 
into, apparently, the same problem as described in the following link 
which is from this list about two years ago.
[Hauppauge WinTV HVR 
950Q](https://lists.freebsd.org/pipermail/freebsd-multimedia/2015-June/016273.html)

This one sounds similar as well.
[FreeBSD-10.3 and WinTV 
HVR-950Q](https://lists.freebsd.org/pipermail/freebsd-multimedia/2016-December/017525.html)

Unfortunately, it does not appear that the solution to either of those 
previous issues was posted to the list so hoping that there is someone 
who is willing to rehash this for me.

In short, webcamd is crashing with a segfault the first time that it is 
run. If it is run again, it usually starts but then consumes 100% of one 
CPU core. I have included the particulars from my system below. Note 
that I have already compiled webcamd from ports with the DEBUG turned 
on. I am not proficient in C or in using gdb so I need some help to know 
what to check next.

# uname -mrs
FreeBSD 11.1-RELEASE-p4 amd64

# pkg info -x webcamd
webcamd-4.12.0.1

# md5 /boot/modules/dvb-fe-xc5000-1.6.114.fw
MD5 (/boot/modules/dvb-fe-xc5000-1.6.114.fw) = 
b1ac8f759020523ebaaeff3fdf4789ed

# usbconfig
ugen4.1: <AMD OHCI root HUB> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) 
pwr=SAVE (0mA)
ugen0.1: <0x1022 XHCI root HUB> at usbus0, cfg=0 md=HOST spd=SUPER 
(5.0Gbps) pwr=SAVE (0mA)
ugen5.1: <AMD EHCI root HUB> at usbus5, cfg=0 md=HOST spd=HIGH (480Mbps) 
pwr=SAVE (0mA)
ugen2.1: <AMD OHCI root HUB> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) 
pwr=SAVE (0mA)
ugen3.1: <AMD EHCI root HUB> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) 
pwr=SAVE (0mA)
ugen1.1: <0x1022 XHCI root HUB> at usbus1, cfg=0 md=HOST spd=SUPER 
(5.0Gbps) pwr=SAVE (0mA)
ugen0.2: <Hauppauge WinTV HVR-950> at usbus0, cfg=0 md=HOST spd=HIGH 
(480Mbps) pwr=ON (500mA)
ugen3.2: <Chicony Electronics Co.,Ltd. HP Truevision HD> at usbus3, 
cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

# usbconfig -d 0.2 dump_device_desc
ugen0.2: <Hauppauge WinTV HVR-950> at usbus0, cfg=0 md=HOST spd=HIGH 
(480Mbps) p
wr=ON (500mA)

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0200
   bDeviceClass = 0x0000  <Probed by interface class>
   bDeviceSubClass = 0x0000
   bDeviceProtocol = 0x0000
   bMaxPacketSize0 = 0x0040
   idVendor = 0x2040
   idProduct = 0x7200
   bcdDevice = 0x0005
   iManufacturer = 0x0001  <retrieving string failed>
   iProduct = 0x0002  <retrieving string failed>
   iSerialNumber = 0x000a  <retrieving string failed>
   bNumConfigurations = 0x0001

# cat /boot/loader.conf
kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"
vfs.zfs.min_auto_ashift=12
zfs_load="YES"
cuse_load="YES"

# sysrc -a
autofs_enable: YES
dbus_enable: NO
dumpdev: AUTO
hald_enable: NO
jackd_enable: NO
mountd_enable: YES
mountd_flags: -r
moused_enable: NO
mythbackend_enable: YES
nfs_server_enable: YES
ntpd_enable: YES
powerd_enable: YES
rpc_lockd_enable: YES
rpc_statd_enable: YES
rpcbind_enable: YES
sshd_enable: YES
webcamd_0_flags: -N Hauppauge-WinTV-HVR-950 -S unknown
webcamd_1_flags: -N Chicony-Electronics-Co--Ltd--HP-Truevision-HD -S 0x0001
webcamd_enable: YES
zfs_enable: YES


When the host boots I find that the cuse module is loaded, there is a 
coredump in /, and dmesg indicates that it "exited on signal 11" during 
the boot.

# kldstat
Id Refs Address            Size     Name
  1   17 0xffffffff80200000 1f67a88  kernel
  2    1 0xffffffff82169000 316708   zfs.ko
  3    2 0xffffffff82480000 cb78     opensolaris.ko
  4    1 0xffffffff8248d000 e690     cuse.ko
  5    1 0xffffffff82a31000 10913    snd_uaudio.ko

# dmesg
...
uaudio0 on uhub3
uaudio0: <WinTV HVR-950 Audio> on usbus0
uaudio0: No playback.
uaudio0: Record: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: No MIDI sequencer.
pcm2: <USB audio> on uaudio0
uaudio0: No HID volume keys found.
pid 99972 (webcamd), uid 0: exited on signal 11 (core dumped)
...

# gdb $(which webcamd) /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"...
Core was generated by '/usr/local/sbin/webcamd -i 0 -d ugen0.2 -B -U 
webcamd -G webcamd'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/local/lib/libhal.so...done.
Loaded symbols for /usr/local/lib/libhal.so
Reading symbols from /usr/local/lib/libdbus-1.so...done.
Loaded symbols for /usr/local/lib/libdbus-1.so
Reading symbols from /usr/lib/libusb.so.3...done.
Loaded symbols for /usr/lib/libusb.so.3
Reading symbols from /lib/libthr.so.3...done.
Loaded symbols for /lib/libthr.so.3
Reading symbols from /lib/libutil.so.9...done.
Loaded symbols for /lib/libutil.so.9
Reading symbols from /usr/lib/libcuse.so.1...done.
Loaded symbols for /usr/lib/libcuse.so.1
Reading symbols from /lib/libc.so.7...done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /usr/lib/libexecinfo.so.1...done.
Loaded symbols for /usr/lib/libexecinfo.so.1
Reading symbols from /lib/libelf.so.2...done.
Loaded symbols for /lib/libelf.so.2
Reading symbols from /lib/libgcc_s.so.1...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0  0x0000000000414e32 in timer_exec (arg=0x0) at kernel/linux_timer.c:142
142                                     TAILQ_REMOVE(&timer_head, t, entry);
(gdb) bt
#0  0x0000000000414e32 in timer_exec (arg=0x0) at kernel/linux_timer.c:142
#1  0x00000008014c7bc5 in pthread_create () from /lib/libthr.so.3
#2  0x0000000000000000 in ?? ()
Current language:  auto; currently minimal
(gdb) p &timer_head
$1 = (struct timer_head *) 0xccee78
(gdb) p t
$2 = (struct timer_list *) 0x802843130


Can someone point me in the direction of what to check next?
-- 
Luke


More information about the freebsd-multimedia mailing list