|
From: | Sakthivel Velumani |
Subject: | Re: [Discuss-gnuradio] Segfault in Polyphase clock sync block |
Date: | Sun, 21 Jan 2018 12:01:31 +0100 |
Hi all,
I'm using a Polyphase clock sync block in one of my flowgraphs
(https://github.com/daniestevez/gr-satellites/ )blob/master/apps/picsat.grc
and I'm getting a segmentation fault when running the flowgraph.
Using GDB, the problem seems to be in the Polyphase clock
implementation, when filtering is done via fir_filter_ccf (see the
backtrace below).
I've studied a bit pfb_clock_sync_ccf_impl::general_work() and I have
the impression that the line
out[i+d_out_idx] = d_filters[d_filtnum]->filter(&in[count+d_out_idx]);
might run into problems if there are not enough samples in the input
buffer, since filter() assumes you pass as many samples as taps are in
the filter.
The pfb_clock_sync_ccf_impl::general_work() doesn't ever look at
ninput_items to check how much output can be produced with the input
given, so I'm not even sure how it manages to run correctly in many
other cases (I've had no problems with Polyphase clock in many other
flowgraphs).
Regards,
Daniel.
-----------
BACKTRACE
#0 volk_32fc_32f_dot_prod_32fc_a_avx (result=0x555556735100,
input=<optimized out>, taps=0x55555673c5a0, num_points=89)
at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ volk/kernels/volk/volk_32fc_ 32f_dot_prod_32fc.h:138
#1 0x00007fffe9b61119 in gr::filter::kernel::fir_filter_ccf::filter
(this=0x555556734f00, address@hidden0x7fffa4804d80)
at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ gr-filter/lib/fir_filter.cc: 232
#2 0x00007fffea15266b in
gr::digital::pfb_clock_sync_ccf_impl::general_work (this=0x555556730080,
noutput_items=16, ninput_items=..., input_items=...,
output_items=std::vector of length 1, capacity 1 = {...}) at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ gr-digital/lib/pfb_clock_sync_ ccf_impl.cc:465
#3 0x00007ffff5d48608 in gr::block_executor::run_one_iteration
(address@hidden0x7fffbeffcdd0)
at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ gnuradio-runtime/lib/block_ executor.cc:451
#4 0x00007ffff5d927c8 in gr::tpb_thread_body::tpb_thread_body
(this=0x7fffbeffcdd0, block=..., start_sync=...,
max_noutput_items=<optimized out>)
at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ gnuradio-runtime/lib/tpb_ thread_body.cc:123
#5 0x00007ffff5d86ac4 in gr::tpb_container::operator() (this=<optimized
out>, this=<optimized out>, this=<optimized out>, this=<optimized out>)
at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ gnuradio-runtime/lib/ scheduler_tpb.cc:46
#6 gr::thread::thread_body_wrapper<gr::tpb_container>:: operator()
(this=0x555556776120)
at
/usr/src/debug/net-wireless/gnuradio-9999/gnuradio-9999/ gnuradio-runtime/include/ gnuradio/thread/thread_body_ wrapper.h:51
#7
boost::detail::function::void_function_obj_invoker0<gr:: thread::thread_body_wrapper< gr::tpb_container>,
void>::invoke (function_obj_ptr=...)
at /usr/include/boost/function/function_template.hpp:159
#8 0x00007ffff5d33f42 in boost::function0<void>::operator()
(this=<optimized out>) at
/usr/include/boost/function/function_template.hpp:771
#9 boost::detail::thread_data<boost::function0<void> >::run
(this=<optimized out>) at /usr/include/boost/thread/detail/thread.hpp:116
#10 0x00007ffff4a9994d in ?? () from /usr/lib64/libboost_thread.so.1.63.0
#11 0x00007ffff77de677 in start_thread () from /lib64/libpthread.so.0
#12 0x00007ffff751ec7f in clone () from /lib64/libc.so.6
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Prev in Thread] | Current Thread | [Next in Thread] |