Oh, that's pretty interesting! Well, no misconfiguration should segfault, so I'm a bit stumped at the moment.
On 12/01/2016 06:14 PM, devin kelly wrote: > Marcus, > > Thanks for taking the time. It is possible I re-installed a new > version of VOLK. I'll try a fresh build and see what that gets me. > > I also should have mentioned that the filter works OK for a while then > segfaults. A couple of packets always pass through the clock sync > block I'm using before I get the segfault. Finally, the segfault > occurs in the polyphase clock sync block, do you think I could have > mis-configured the block in some way that will get me this error? I > think the PF clock sync block is pretty popular so if there's a bug in > that block that's causing this I'd be surprised. > > Devin > > On Thu, Dec 1, 2016 at 11:47 AM, Marcus Müller > <marcus.muel...@ettus.com <mailto:marcus.muel...@ettus.com>> wrote: > > Hi Devin, > > I don't think it's a kernel problem – all your calculations happen > in userland, and the kernel has not much to say with respect to > the instructions used. > > The most common reason for this kind of misbehaviour is in fact a > problem with how the application (in this case, your GNU Radio > application's block) calls into the library function (in this case > the VOLK dot product). > > Is it possible that for some reason, GNU Radio used a previous > version of VOLK when you linked it, and then the new version of > VOLK was installed? > > Best regards, > > Marcus > > > On 12/01/2016 05:23 PM, devin kelly wrote: >> Hello, >> >> I'm having a problem with the above VOLK function segfaulting. I >> don't think I'm passing any incorrect values to VOLK. My problem >> could be that I'm on RHEL7 with (obviously) an older kernel: >> >> $ uname -a >> Linux 520842-mitll 3.10.0-327.10.1.el7.x86_64 #1 SMP Sat Jan 23 >> 04:54:55 EST 2016 x86_64 x86_64 x86_64 GNU/Linux >> >> I'm on VOLK 1.3 and GR 3.7.10.1. >> >> it segfaults here: >> >> https://github.com/gnuradio/volk/blob/maint/kernels/volk/volk_32fc_32f_dot_prod_32fc.h#L119 >> >> <https://github.com/gnuradio/volk/blob/maint/kernels/volk/volk_32fc_32f_dot_prod_32fc.h#L119> >> It looks like aPtr (0x7fea5c3014c0) is somehow not valid. GR >> passes this pointer to VOLK so maybe it's a GR problem? >> >> I've copied the output of a GDB session and my CPU info below. >> >> Thanks for any help, >> Devin >> >> >> >> Program terminated with signal 11, Segmentation fault. >> #0 0x00007fea7b1bd8b7 in _mm256_load_ps (__P=0x7fea5c3014c0) at >> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/avxintrin.h:835 >> 835 return *(__m256 *)__P; >> Missing separate debuginfos, use: debuginfo-install >> python-2.7.5-48.el7.x86_64 >> (gdb) bt >> #0 0x00007fea7b1bd8b7 in volk_32fc_32f_dot_prod_32fc_a_avx >> (__P=0x7fea5c3014c0) at >> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/avxintrin.h:835 >> #1 0x00007fea7b1bd8b7 in volk_32fc_32f_dot_prod_32fc_a_avx >> (result=0x3665160, input=0x7fea5c3014c0, taps=0x3671a00, >> num_points=47) at >> >> /local_disk/gr_3.7.10.1_src/volk/kernels/volk/volk_32fc_32f_dot_prod_32fc.h:119 >> #2 0x00007fea6661d88f in >> gr::filter::kernel::fir_filter_ccf::filter(std::complex<float> >> const*) () at >> /local_disk/gr_3.7.10.1/lib64/libgnuradio-filter-3.7.10.1.so >> <http://libgnuradio-filter-3.7.10.1.so>.0.0.0 >> #3 0x00007fea66c01d01 in >> gr::digital::pfb_clock_sync_ccf_impl::general_work(int, >> std::vector<int, std::allocator<int> >&, std::vector<void const*, >> std::allocator<void const*> >&, std::vector<void*, >> std::allocator<void*> >&) () >> at >> /local_disk/gr_3.7.10.1/lib64/libgnuradio-digital-3.7.10.1.so.0.0.0 >> #4 0x00007fea7b73fe10 in gr::block_executor::run_one_iteration() >> () at >> /local_disk/gr_3.7.10.1/lib64/libgnuradio-runtime-3.7.10.1.so.0.0.0 >> #5 0x00007fea7b781120 in >> gr::tpb_thread_body::tpb_thread_body(boost::shared_ptr<gr::block>, >> int) () at >> /local_disk/gr_3.7.10.1/lib64/libgnuradio-runtime-3.7.10.1.so.0.0.0 >> #6 0x00007fea7b774821 in >> >> boost::detail::function::void_function_obj_invoker0<gr::thread::thread_body_wrapper<gr::tpb_container>, >> void>::invoke(boost::detail::function::function_buffer&) () at >> /local_disk/gr_3.7.10.1/lib64/libgnuradio-runtime-3.7.10.1.so.0.0.0 >> #7 0x00007fea7b725ef0 in >> boost::detail::thread_data<boost::function0<void> >::run() () at >> /local_disk/gr_3.7.10.1/lib64/libgnuradio-runtime-3.7.10.1.so.0.0.0 >> #8 0x00007fea7a22427a in thread_proxy () at >> /lib64/libboost_thread-mt.so.1.53.0 >> #9 0x00007fea960f3dc5 in start_thread () at /lib64/libpthread.so.0 >> #10 0x00007fea9571973d in clone () at /lib64/libc.so.6 >> (gdb) print __P >> $1 = (const float *) 0x7fea5c3014c0 >> (gdb) print *__P >> Cannot access memory at address 0x7fea5c3014c0 >> (gdb) print *(__m256 *)__P >> Cannot access memory at address 0x7fea5c3014c0 >> (gdb) f 1 >> #1 volk_32fc_32f_dot_prod_32fc_a_avx (result=0x3665160, >> input=0x7fea5c3014c0, taps=0x3671a00, num_points=47) at >> >> /local_disk/gr_3.7.10.1_src/volk/kernels/volk/volk_32fc_32f_dot_prod_32fc.h:119 >> 119 a0Val = _mm256_load_ps(aPtr); >> (gdb) info locals >> number = 0 >> sixteenthPoints = 2 >> res = {-1.30492652e+29, 0.0779444203} >> realpt = 0x7fea57ffde50 >> imagpt = 0x7fea57ffde54 >> aPtr = 0x7fea5c3014c0 >> bPtr = 0x3671a00 >> a0Val = {-0.656753004, -0.658071458, -0.760932922, -0.762304127, >> -0.869615495, -0.869560063, -0.887507021, -0.885902643} >> a1Val = {-0.744178772, -0.742508531, -0.437728733, -0.437706977, >> -0.0328192525, -0.0346645005, 0.376206338, 0.374125361} >> a2Val = {0.711783648, 0.711464763, 0.931477308, 0.933318734, >> 1.01744843, 1.01973152, 0.954917312, 0.955377996} >> a3Val = {0.734342158, 0.732418418, 0.374049634, 0.371605545, >> -0.0585254543, -0.0588675328, -0.461206883, -0.458686352} >> b0Val = {0.0023738991, 0.0023738991, -0.00534401694, >> -0.00534401694, 0.00242348039, 0.00242348039, 0.00727195293, >> 0.00727195293} >> b1Val = {-0.0158917159, -0.0158917159, 0.00614725193, >> 0.00614725193, 0.0485430211, 0.0485430211, -0.22138992, -0.22138992} >> b2Val = {0, 0, 0.22138992, 0.22138992, -0.0485430211, >> -0.0485430211, -0.00614725193, -0.00614725193} >> b3Val = {0.0158917159, 0.0158917159, -0.00727195293, >> -0.00727195293, -0.00242348039, -0.00242348039, 0.00534401694, >> 0.00534401694} >> x0Val = {0.0023738991, -0.00534401694, 0.00242348039, >> 0.00727195293, -0.0158917159, 0.00614725193, 0.0485430211, >> -0.22138992} >> x1Val = {0, 0.22138992, -0.0485430211, -0.00614725193, >> 0.0158917159, -0.00727195293, -0.00242348039, 0.00534401694} >> x0loVal = {0.0023738991, 0.0023738991, -0.00534401694, >> -0.00534401694, -0.0158917159, -0.0158917159, 0.00614725193, >> 0.00614725193} >> x0hiVal = {0.00242348039, 0.00242348039, 0.00727195293, >> 0.00727195293, 0.0485430211, 0.0485430211, -0.22138992, -0.22138992} >> x1loVal = {0, 0, 0.22138992, 0.22138992, 0.0158917159, >> 0.0158917159, -0.00727195293, -0.00727195293} >> x1hiVal = {-0.0485430211, -0.0485430211, -0.00614725193, >> -0.00614725193, -0.00242348039, -0.00242348039, 0.00534401694, >> 0.00534401694} >> c0Val = {-0.00155906542, -0.00156219525, 0.00406643841, >> 0.00407376606, -0.00210749614, -0.0021073618, -0.00645390945, >> -0.0064422423} >> c1Val = {0.0118262777, 0.011799735, -0.00269082887, >> -0.00269069499, -0.00159314566, -0.00168271956, -0.0832882896, >> -0.082827583} >> c2Val = {0, 0, 0.206219688, 0.206627354, -0.0493900217, >> -0.0495008491, -0.00587011734, -0.00587294903} >> c3Val = {0.0116699571, 0.0116393855, -0.00272007124, >> -0.00270229811, 0.000141835291, 0.000142664314, -0.00246469746, >> -0.00245122775} >> dotProdVal0 = {0, 0, 0, 0, 0, 0, 0, 0} >> dotProdVal1 = {0, 0, 0, 0, 0, 0, 0, 0} >> dotProdVal2 = {0, 0, 0, 0, 0, 0, 0, 0} >> dotProdVal3 = {0, 0, 0, 0, 0, 0, 0, 0} >> dotProductVector = {0.0218032673, 0.0217418969, 0.204074427, >> 0.204509094, -0.0519821495, -0.0521854945, -0.0983558819, >> -0.097870864} >> (gdb) print *aPtr >> Cannot access memory at address 0x7fea5c3014c0 >> >> >> >> >> $ lscpu >> Architecture: x86_64 >> CPU op-mode(s): 32-bit, 64-bit >> Byte Order: Little Endian >> CPU(s): 4 >> On-line CPU(s) list: 0-3 >> Thread(s) per core: 2 >> Core(s) per socket: 2 >> Socket(s): 1 >> NUMA node(s): 1 >> Vendor ID: GenuineIntel >> CPU family: 6 >> Model: 61 >> Model name: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz >> Stepping: 4 >> CPU MHz: 2038.664 >> BogoMIPS: 5187.61 >> Virtualization: VT-x >> L1d cache: 32K >> L1i cache: 32K >> L2 cache: 256K >> L3 cache: 4096K >> NUMA node0 CPU(s): 0-3 >> >> >> >> _______________________________________________ >> Discuss-gnuradio mailing list >> Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org> >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio> > _______________________________________________ Discuss-gnuradio > mailing list Discuss-gnuradio@gnu.org > <mailto:Discuss-gnuradio@gnu.org> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio> > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio