Honestly, my money would be on GCC 4.8.5 being less buggy than 6.2, but
that's a separate topic.

You can configure VOLK to not use this protokernel and there's some
documentation on how to do it here:
http://gnuradio.org/doc/doxygen/volk_guide.html#volk_tuning

This is fairly concerning though... are you able to consistently trigger a
segfault or is it a seemingly random event that you can't trigger?

On Tue, Dec 6, 2016 at 11:48 AM, devin kelly <dwwke...@gmail.com> wrote:

> OK, I tried a brand new GR/Volk install and still had the same problem.
> So no problem with re-linking Volk to GR.  Could this be an issue with Volk
> on GCC 4.8.5?  The newest GCC is 6.2 so 4.8.5 is pretty old, though the
> newest for Red Hat 7.  Is there any way to reconfigure volk to not use
> volk_32fc_32f_dot_prod_32fc_a_avx?
>
> Here's volk-config-info:
>
> $ volk-config-info --all --prefix --cc --cflags --avail-machines --machine
> --alignment --malloc
> /local_disk/spectrum_challenge
> cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
> Copyright (C) 2015 Free Software Foundation, Inc.
> This is free software see the source for copying conditions.  There is NO
> warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> /usr/bin/cc:::  -Wall
> /usr/bin/c++:::  -Wall
> generic_orc:::GNU:::-g  -Wall
> sse2_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2
> sse3_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3
> ssse3_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3 -mssse3
> sse4_a_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3 -msse4a
> -mpopcnt
> sse4_1_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3 -mssse3
> -msse4.1
> sse4_2_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3 -mssse3
> -msse4.1 -msse4.2 -mpopcnt
> avx_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3 -mssse3
> -msse4.1 -msse4.2 -mpopcnt -mavx
> avx2_64_mmx_orc:::GNU:::-g  -Wall -m64 -mmmx -msse -msse2 -msse3 -mssse3
> -msse4.1 -msse4.2 -mpopcnt -mavx -mfma -mavx2
> generic_orc;sse2_64_mmx_orc;sse3_64_mmx_orc;ssse3_64_mmx_
> orc;sse4_a_64_mmx_orc;sse4_1_64_mmx_orc;sse4_2_64_mmx_orc;
> avx_64_mmx_orc;avx2_64_mmx_orc;
> generic_orc;sse2_64_mmx_orc;sse3_64_mmx_orc;ssse3_64_mmx_
> orc;sse4_1_64_mmx_orc;sse4_2_64_mmx_orc;avx_64_mmx_orc;avx2_64_mmx_orc;
> avx2_64_mmx_orc
> Alignment in bytes: 32
> Used malloc implementation: posix_memalign
>
>
> Thanks again for any help,
> Devin
>
>
> On Fri, Dec 2, 2016 at 10:04 AM, Marcus Müller <marcus.muel...@ettus.com>
> wrote:
>
>> 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>
>> 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/vol
>>> k_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-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/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.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.so.0.0.0
>>> #5  0x00007fea7b781120 in gr::tpb_thread_body::tpb_threa
>>> d_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 
>>> listDiscuss-gnuradio@gnu.orghttps://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 
>> listDiscuss-gnuradio@gnu.orghttps://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
>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to