import os
import signal
import sys
from gnuradio import gr
import numpy
class my_null_source(gr.sync_block):
def __init__(self, item=numpy.uint32, vlen=1):
gr.sync_block.__init__(
self,
name="my_null_source",
in_sig=None,
out_sig=[(item, vlen)])
def work(self, input_items, output_items):
out = output_items[0]
for i in range(len(out)):
out[i] = 0
return len(out)
class my_null_sink(gr.sync_block):
def __init__(self, item=numpy.uint32, vlen=1):
gr.sync_block.__init__(
self,
name="my_null_sink",
in_sig=[(item, vlen)],
out_sig=None)
def work(self, input_items, output_items):
return len(input_items[0])
class python_sink(gr.top_block):
def __init__(self):
gr.top_block.__init__(self, "Testing Python Sinks")
# source1 = blocks.null_source(gr.sizeof_gr_complex)
# source2 = blocks.null_source(gr.sizeof_gr_complex)
source1 = my_null_source(item=numpy.complex64)
source2 = my_null_source(item=numpy.complex64)
# null_sink1 = blocks.null_sink(gr.sizeof_gr_complex)
my_null_sink1 = my_null_sink(item=numpy.complex64)
my_null_sink2 = my_null_sink(item=numpy.complex64)
# self.connect(source1, null_sink1)
self.connect(source1, my_null_sink1)
self.connect(source2, my_null_sink2)
print('GR Version: {}'.format(gr.version()))
# print('Blocked waiting for GDB attach (pid = {})'.format(os.getpid()))
# raw_input('Press Enter to continue: ')
def main(top_block_cls=python_sink, options=None):
tb = top_block_cls()
def sig_handler(sig=None, frame=None):
tb.stop()
tb.wait()
sys.exit(0)
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
tb.start()
tb.wait()
if __name__ == '__main__':
main()
- a06420691493534ca268ce52e1f16504c216828d is ok, but the next commit 1206251231696359270a260508551e044f3af33a is broken (confirming the issue in old 3.7 releases and 3.8).
- e635ae442132a7e3bab75796d2ac0b66bd289bdb is broken, but the next commit 713629cce8d571570bc5f0f0db67c5a96d5ee071 is ok (confirming the fix in the 3.7 history).
Tested on Ubuntu 19.10 with python 3.7.5
Crashing.
Backtrace gives
Thread 3 "my_null_sink4" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe8939700 (LWP 7033)]
0x00007ffff265bed1 in gr::py_feval_ll::calleval(long) () from
/usr/local/gnuradio/lib/python3/dist-packages/gnuradio/gr/_runtime_swig.so
(gdb) bt
#0 0x00007ffff265bed1 in gr::py_feval_ll::calleval(long) () from
/usr/local/gnuradio/lib/python3/dist-packages/gnuradio/gr/_runtime_swig.so
#1 0x00007ffff6caf2ea in gr::block_gateway_impl::work(int,
std::vector<void const*, std::allocator<void const*> >&,
std::vector<void*, std::allocator<void*> >&) ()
from /usr/local/gnuradio/lib/libgnuradio-runtime.so.3.9.0
#2 0x00007ffff6caf423 in gr::block_gateway_impl::general_work(int,
std::vector<int, std::allocator<int> >&, std::vector<void const*,
std::allocator<void const*> >&, std::vector<void*, std::allocator<void*> >&)
() from /usr/local/gnuradio/lib/libgnuradio-runtime.so.3.9.0
#3 0x00007ffff6cad1a3 in gr::block_executor::run_one_iteration() ()
from /usr/local/gnuradio/lib/libgnuradio-runtime.so.3.9.0
#4 0x00007ffff6d03093 in
gr::tpb_thread_body::tpb_thread_body(boost::shared_ptr<gr::block>,
boost::shared_ptr<boost::barrier>, int) () from
/usr/local/gnuradio/lib/libgnuradio-runtime.so.3.9.0
#5 0x00007ffff6cf498e in
boost::detail::function::void_function_obj_invoker0<gr::thread::thread_body_wrapper<gr::tpb_container>,
void>::invoke(boost::detail::function::function_buffer&) ()
from /usr/local/gnuradio/lib/libgnuradio-runtime.so.3.9.0
#6 0x00007ffff6d105c6 in
boost::detail::thread_data<boost::function0<void> >::run() () from
/usr/local/gnuradio/lib/libgnuradio-runtime.so.3.9.0
#7 0x00007ffff71f61b5 in ?? () from
/usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0
#8 0x00007ffff7d9c669 in start_thread (arg=<optimized out>) at
pthread_create.c:479
#9 0x00007ffff7ed8323 in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
By the way: trying the gnuradio version with pybind instead of swig
crashes too.
-- Volker
No comments:
Post a Comment