f4exb / sdrangel

SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube
GNU General Public License v3.0
2.96k stars 447 forks source link

Sdrangel crashes when decoding FT8 cross 6K bandwidth #2339

Open Tony-QQ opened 6 days ago

Tony-QQ commented 6 days ago

I’m a newbie of SDR and love to use Sdrangel.

There are some FT8 bands like 7.071MHz and 7.074MHz which can be covered by one FT8 demodulator with 6K bandwidth. But Sdrangel crashes in a few seconds or minutes if set the FT8 demodulator to 6K bandwidth.

I use the Windows version of Sdrangel 7.22.4 on windows11 home edition, and tested by Kiwisdr and RSP1, both can reproduce this issue. But it is strange that if reduce FT8 decoding bandwidth from 6K to 5.6K, Sdrangel doesn’t crash.

Thanks.

f4exb commented 5 days ago

Something fishy here although one would never use such a large bandwidth but as it is proposed...

#0  0x00007fa790143883 in FT8::FT8::reduce_rate (this=0x7fa73001a620, a=..., hz0=4040.06665, hz1=6000, arate=<optimized out>, brate=<optimized out>, delta_hz=@0x7fa7029fd340: 0) at /opt/build/sdrangel/ft8/ft8.cpp:446
446                 bbins[i] = bins1[i + delta];
(gdb) p i
$1 = 31280
(gdb) p delta
$3 = 59176
(gdb) p bbins
$2 = std::vector of length 32251, capacity 32251 = ...
(gdb) p bins1
$4 = std::vector of length 90001, capacity 90001 = ...

31280 + 59176 = 90456 so i + delta is out of bounds.

Tony-QQ commented 4 days ago

Thank you so much for taking a look on this issue.

Sdrangel has a super good FT8 performance and user friendly interface especially for multi-band FT8. I’m listening on 10m-160m FT8 band almost 7/24 by Sdrangel. There’re 17 frequency slots from 10m-160m,but my web SDR device limit to only 13 channels output. So 6K FT8 bandwidth helps a lot to let me cover more FT8 frequency like at 20m/30m/40m.

IMG_3289

Maybe this is a rare use case, but hope to make Sdrangel be better and better. ^^

f4exb commented 4 days ago

It is true that in some cases the 3k bands are adjacent