|
From: | devin kelly |
Subject: | Re: [Discuss-gnuradio] Segfault with volk_32fc_32f_dot_prod_32fc_a_avx |
Date: | Thu, 1 Dec 2016 12:14:06 -0500 |
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:
It looks like aPtr (0x7fea5c3014c0) is somehow not valid. GR passes this pointer to VOLK so maybe it's a GR problem?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/vol k_32fc_32f_dot_prod_32fc.h#L11 9
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-lin ux/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/vo lk/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 .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.s o.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.s o.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.s o.0.0.0
#6 0x00007fea7b774821 in boost::detail::function::void_function_obj_invoker0<gr::thre ad::thread_body_wrapper<gr:: tpb_container>, void>::invoke(boost::detail::f unction::function_buffer&) () at /local_disk/gr_3.7.10.1/lib64/ libgnuradio-runtime-3.7.10.1.s o.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.s o.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/vo lk/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 address@hidden https://lists.gnu.org/mailman/ listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Prev in Thread] | Current Thread | [Next in Thread] |