This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/osmocom-sdr@lists.osmocom.org/.
Dominic Chen d.c.ddcc at gmail.comThis is a workaround for a crash triggered by the following scenario: using gqrx, if the automatically generated device string "addr=1d50:6108,driver=lime,media='USB 3.0',module=STREAM,name=LimeSDR-USB,serial=XXXX,soapy=0" is passed into gr-osmosdr, args_to_io_signature(args) will generate an io_signature with two channels, because the space in 'USB 3.0' causes dev_nchan to be incremented twice. Then, in source_impl::source_impl(), GNU Radio will gneerate an exception of the form "FATAL: destination port 1 out of range for source_impl(47)", which causes the exception-handling null channel code to be executed. But, since output_signature()->max_streams() returns 1, channel is 2, and missing_chans has size_t type, the subtraction will underflow to (unsigned int)(-1), which causes another GNU Radio exception when connect(). Since this is an exception in an exception handler, the program will terminate immediately. Thanks, Dominic --- lib/source_impl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/source_impl.cc b/lib/source_impl.cc index a28f314..ac7c3af 100644 --- a/lib/source_impl.cc +++ b/lib/source_impl.cc @@ -426,7 +426,7 @@ source_impl::source_impl( const std::string &args ) connect(null_source, 0, throttle, 0); size_t missing_chans = 0; - if ( output_signature()->max_streams() > 0 ) + if ( output_signature()->max_streams() > 0 && ((size_t) output_signature()->max_streams()) > channel) missing_chans = output_signature()->max_streams() - channel; std::cerr << "Trying to fill up " << missing_chans -- 2.7.4