[USRP-users] SEGFAULT using Gnuradio/uhd and RFNoC

Simon Méra simon.mera at lassena.etsmtl.ca
Thu Oct 5 18:25:44 EDT 2017


Hi,
For my project, I have to use an Ettus e310 at high rates (> 10MSPs). With the default settings, I’m not able to go further than 2MSPs, and was trying to use RFNoC to avoid using the DUC (I’ve got UAL errors, so I thought using directly the radio avoiding the upsampling, giving that I have a signal at 10MSPs or more). 

After cross-compiling, I’m able to see my device using uhd_usrp_probe, running the given example, but using whatever scripts generated by gnuradio give me this output : 

	[INFO] [UHDlinux; GNU C++ version 4.9.2; Boost_105700; UHD_4.0.0.rfnoc-devel-369-g1908672f] 
	[INFO] [E300] Loading FPGA image: /home/root/usr/usr/share/uhd/images/usrp_e310_fpga.bit...
	[INFO] [E300] FPGA image loaded
	[INFO] [E300] Detecting internal GPSDO 
	.... [INFO] [E300] GPSDO found
	[INFO] [E300] Initializing core control (global registers)...

	[INFO] [E300] Performing register loopback test... 
	[INFO] [E300] Register loopback test passed
	[INFO] [RFNOC RADIO] Register loopback test passed
	[INFO] [RFNOC RADIO] Register loopback test passed
	[WARNING] [RFNOC] [0/fosphor_0] defines 2 input buffer sizes, but 1 input ports
	[INFO] [AD936X] Performing CODEC loopback test... 
	[INFO] [AD936X] CODEC loopback test passed
	[INFO] [AD936X] Performing CODEC loopback test... 
	[INFO] [AD936X] CODEC loopback test passed
	[INFO] [CORES] Performing timer loopback test... 
	[INFO] [CORES] Timer loopback test passed
	Segmentation fault

gdb give this information about the segfault : 

	Program received signal SIGSEGV, Segmentation fault.
	memcmp_common_alignment (len=<optimized out>, srcp2=<optimized out>, srcp1=7221248) at memcmp.c:165
	165	      a0 = ((op_t *) srcp1)[0];

The stack at the segfault is : 

	#0  memcmp_common_alignment (len=<optimized out>, srcp2=<optimized out>, 
	    srcp1=<optimized out>) at memcmp.c:177
	#1  __GI_memcmp (s1=<optimized out>, s2=<optimized out>, len=<optimized out>)
	    at memcmp.c:343
	#2  0xb64b4618 in compare (__n=<optimized out>, __s2=<optimized out>, 
	    __s1=<optimized out>)
 	  at /usr/src/debug/gcc-runtime/4.9.2-r0/gcc-4.9.2/build.arm-oe-linux-gnueabi.arm-oe-linux-gnueabi/arm-oe-linux-gnueabi/libstdc++-v3/include/bits/char_traits.h:259
	#3  std::string::compare (this=this at entry=0x6620c8, __str=...)
 	  at /usr/src/debug/gcc-runtime/4.9.2-r0/gcc-4.9.2/build.arm-oe-linux-gnueabi.arm-oe-linux-gnueabi/arm-oe-linux-gnueabi/libstdc++-v3/include/bits/basic_string.h:2250
	#4  0xb28cadcc in operator< <char, std::char_traits<char>, std::allocator<char> > (__rhs=..., __lhs=...)
	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/basic_string.h:2590
	#5  operator() (this=<optimized out>, __y=..., __x=...)
	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_function.h:371
	#6  _M_lower_bound (this=<optimized out>, __k=..., __y=<optimized out>, 
	   __x=0x6620b8)
	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/incl---Type <return> to continue, or q <return> to quit—
ude/c++/4.9.2/bits/stl_tree.h:1261
	#7  lower_bound (__k=..., this=0xb2926658 <global_block_registry>)
	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_tree.h:927
	#8  lower_bound (__x=..., this=0xb2926658 <global_block_registry>)
	    at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_map.h:902
	#9  std::map<std::string, std::map<long, gr::basic_block*, std::less<long>, std::allocator<std::pair<long const, gr::basic_block*> > >, std::less<std::string>, std::allocator<std::pair<std::string const, std::map<long, gr::basic_block*, std::less<long>, std::allocator<std::pair<long const, gr::basic_block*> > > > > >::operator[] (this=this at entry=0xb2926658 <global_block_registry>, __k=...)
 	  at /home/balister/release-4/build/tmp-glibc/sysroots/ettus-e3xx-sg1/usr/include/c++/4.9.2/bits/stl_map.h:496

(The full stack is 46 lines)


Is the idea of using RFNoC to emit at higher rates a good idea ? 
If yes, how can I resolve the SEGFAULT ? Where does it come ? 

Regards,
Simon





More information about the USRP-users mailing list