Hi all,

I'm just using the gr-fcd block with an funcube dongle on a gentoo linux system.

When I try to change the frequency of the dongle by an slider I get the following segfault:

[  633.104902] usb 1-5.1: link qh1-0e01/ffff8801251cba00 start 0 [1/3 us]
[  633.105563] ehci_hcd 0000:00:12.2: reused qh ffff8801251cb580 schedule
[  633.105574] usb 1-5.1: link qh1-0e01/ffff8801251cb580 start 0 [3/1 us]
[  633.106207] usb 1-5.1: unlink qh1-0e01/ffff8801251cb580 start 0 [3/1 us]
[  633.108227] usb 1-5.1: unlink qh1-0e01/ffff8801251cba00 start 0 [1/3 us]
[  633.108674] ehci_hcd 0000:00:12.2: reused qh ffff8801251cba00 schedule
[  633.108683] usb 1-5.1: link qh1-0e01/ffff8801251cba00 start 0 [1/3 us]
[  633.108771] usb 1-5.1: unlink qh1-0e01/ffff8801251cba00 start 0 [1/3 us]
[ 636.943732] gr_fcdtest.py[1645]: segfault at 30 ip 00007f47dadb4c4b sp 00007fff5e94bff0 error 4 in libusb-1.0.so.0.1.0[7f47dadaf000+10000]

( Taken from the message log )

So I compiled libusb with debug information.

This is the output:

libusb:debug [libusb_get_device_list]
libusb:debug [sysfs_scan_device] scan usb1
libusb:debug [sysfs_scan_device] bus=1 dev=1
libusb:debug [enumerate_device] busnum 1 devaddr 1 session_id 257
libusb:debug [enumerate_device] allocating new device for 1/1 (session 257)
libusb:debug [sysfs_scan_device] scan usb2
libusb:debug [sysfs_scan_device] bus=2 dev=1
libusb:debug [enumerate_device] busnum 2 devaddr 1 session_id 513
libusb:debug [enumerate_device] allocating new device for 2/1 (session 513)
libusb:debug [sysfs_scan_device] scan usb3
libusb:debug [sysfs_scan_device] bus=3 dev=1
libusb:debug [enumerate_device] busnum 3 devaddr 1 session_id 769
libusb:debug [enumerate_device] allocating new device for 3/1 (session 769)
libusb:debug [sysfs_scan_device] scan usb4
libusb:debug [sysfs_scan_device] bus=4 dev=1
libusb:debug [enumerate_device] busnum 4 devaddr 1 session_id 1025
libusb:debug [enumerate_device] allocating new device for 4/1 (session 1025)
libusb:debug [sysfs_scan_device] scan usb5
libusb:debug [sysfs_scan_device] bus=5 dev=1
libusb:debug [enumerate_device] busnum 5 devaddr 1 session_id 1281
libusb:debug [enumerate_device] allocating new device for 5/1 (session 1281)
libusb:debug [sysfs_scan_device] scan usb6
libusb:debug [sysfs_scan_device] bus=6 dev=1
libusb:debug [enumerate_device] busnum 6 devaddr 1 session_id 1537
libusb:debug [enumerate_device] allocating new device for 6/1 (session 1537)
libusb:debug [sysfs_scan_device] scan usb7
libusb:debug [sysfs_scan_device] bus=7 dev=1
libusb:debug [enumerate_device] busnum 7 devaddr 1 session_id 1793
libusb:debug [enumerate_device] allocating new device for 7/1 (session 1793)
libusb:debug [sysfs_scan_device] scan 1-5
libusb:debug [sysfs_scan_device] bus=1 dev=4
libusb:debug [enumerate_device] busnum 1 devaddr 4 session_id 260
libusb:debug [enumerate_device] allocating new device for 1/4 (session 260)
libusb:debug [sysfs_scan_device] scan 3-1
libusb:debug [sysfs_scan_device] bus=3 dev=2
libusb:debug [enumerate_device] busnum 3 devaddr 2 session_id 770
libusb:debug [enumerate_device] allocating new device for 3/2 (session 770)
libusb:debug [discovered_devs_append] need to increase capacity
libusb:debug [sysfs_scan_device] scan 3-2
libusb:debug [sysfs_scan_device] bus=3 dev=3
libusb:debug [enumerate_device] busnum 3 devaddr 3 session_id 771
libusb:debug [enumerate_device] allocating new device for 3/3 (session 771)
libusb:debug [sysfs_scan_device] scan 1-5.1
libusb:debug [sysfs_scan_device] bus=1 dev=5
libusb:debug [enumerate_device] busnum 1 devaddr 5 session_id 261
libusb:debug [enumerate_device] allocating new device for 1/5 (session 261)
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_active_config_descriptor]
libusb:debug [sysfs_get_active_config_descriptor] active configuration 1
libusb:debug [sysfs_get_active_config_descriptor] active configuration 1
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_active_config_descriptor]
libusb:debug [sysfs_get_active_config_descriptor] active configuration 1
libusb:debug [sysfs_get_active_config_descriptor] active configuration 1
libusb:debug [libusb_get_device_descriptor]
libusb:debug [libusb_get_active_config_descriptor]
libusb:debug [sysfs_get_active_config_descriptor] active configuration 1
libusb:debug [sysfs_get_active_config_descriptor] active configuration 1
libusb:debug [parse_endpoint] skipping descriptor 25
libusb:debug [libusb_open] open 1.5
libusb:debug [op_open] opening /dev/bus/usb/001/005
libusb:debug [usbi_add_pollfd] add fd 9 events 4
Speicherzugriffsfehler

The python code is attached.

Volker



#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: FcdTest
# Generated: Sat Apr  7 16:09:26 2012
##################################################

from gnuradio import audio
from gnuradio import blks2
from gnuradio import eng_notation
from gnuradio import fcd
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.gr import firdes
from gnuradio.wxgui import forms
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx

class gr_fcdtest(grc_wxgui.top_block_gui):

	def __init__(self):
		grc_wxgui.top_block_gui.__init__(self, title="FcdTest")

		##################################################
		# Variables
		##################################################
		self.samp_rate = samp_rate = 96000
		self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate, 30000, 5000, firdes.WIN_HAMMING, 6.76)
		self.Freq = Freq = 100

		##################################################
		# Blocks
		##################################################
		_Freq_sizer = wx.BoxSizer(wx.VERTICAL)
		self._Freq_text_box = forms.text_box(
			parent=self.GetWin(),
			sizer=_Freq_sizer,
			value=self.Freq,
			callback=self.set_Freq,
			label='Freq',
			converter=forms.float_converter(),
			proportion=0,
		)
		self._Freq_slider = forms.slider(
			parent=self.GetWin(),
			sizer=_Freq_sizer,
			value=self.Freq,
			callback=self.set_Freq,
			minimum=60,
			maximum=150,
			num_steps=1,
			style=wx.SL_HORIZONTAL,
			cast=float,
			proportion=1,
		)
		self.Add(_Freq_sizer)
		self.xlating_fir_filter = gr.freq_xlating_fir_filter_ccf(1, (xlate_filter_taps), 0, samp_rate)
		self.fcd_source_c_0 = fcd.source_c("FCD")
		self.fcd_source_c_0.set_freq_corr(-120)
		self.fcd_source_c_0.set_freq(Freq*10000000)
		    
		self.blks2_wfm_rcv_0 = blks2.wfm_rcv(
			quad_rate=samp_rate,
			audio_decimation=2,
		)
		self.audio_sink_0 = audio.sink(samp_rate/2, "LinPSK_Play", True)

		##################################################
		# Connections
		##################################################
		self.connect((self.xlating_fir_filter, 0), (self.blks2_wfm_rcv_0, 0))
		self.connect((self.blks2_wfm_rcv_0, 0), (self.audio_sink_0, 0))
		self.connect((self.blks2_wfm_rcv_0, 0), (self.audio_sink_0, 1))
		self.connect((self.fcd_source_c_0, 0), (self.xlating_fir_filter, 0))

	def get_samp_rate(self):
		return self.samp_rate

	def set_samp_rate(self, samp_rate):
		self.samp_rate = samp_rate
		self.set_xlate_filter_taps(firdes.low_pass(1, self.samp_rate, 30000, 5000, firdes.WIN_HAMMING, 6.76))

	def get_xlate_filter_taps(self):
		return self.xlate_filter_taps

	def set_xlate_filter_taps(self, xlate_filter_taps):
		self.xlate_filter_taps = xlate_filter_taps
		self.xlating_fir_filter.set_taps((self.xlate_filter_taps))

	def get_Freq(self):
		return self.Freq

	def set_Freq(self, Freq):
		self.Freq = Freq
		self._Freq_slider.set_value(self.Freq)
		self._Freq_text_box.set_value(self.Freq)
		self.fcd_source_c_0.set_freq(self.Freq*10000000)

if __name__ == '__main__':
	parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
	(options, args) = parser.parse_args()
	tb = gr_fcdtest()
	tb.Run(True)

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to