Skip to content

Segmentation fault when unloading LimeSuiteNG RF driver for srsRAN_Project #146

@dtv-comp

Description

@dtv-comp

Segmentation fault when unloading LimeSuiteNG RF driver for srsRAN_Project

Description
When using the LimeSuiteNG RF driver with srsRAN_Project, the application crashes with a segmentation fault during driver unload/exit.

Steps to reproduce

  1. Build and run srsRAN_Project with LimeSuiteNG RF driver.
  2. Start open5gs
  3. Start gNB
  4. Stop the application to trigger RF driver unload.
  5. Observe segmentation fault.

Expected behavior
The RF driver should unload cleanly without causing a crash.

Actual behavior
The application terminates with a segmentation fault on driver unload.

Environment

  • srsRAN_Project: branch limesuiteng commit 47d0c13c24ec87bd3635355ff26cd9e5f4244453
  • LimeSuiteNG: branch develop commit 3178f11
  • Hardware: LimeXTRX at LimePSB v1.3
  • OS/Distribution: Debian GNU/Linux 12 (bookworm)

Additional context

  • The crash consistently occurs only on unload, not during normal operation.
  • Backtrace/logs:
--== srsRAN gNB (commit 47d0c13c24) ==--

Lower PHY in dual executor mode.
Available radio types: zmq and limesuiteng.
Key:Value{ logLevel:3 }
Key:Value{ dev0:"LimeSDR" }
Key:Value{ port0:"dev0" }
Key:Value{ port0_rx_path:"LNAW" }
Key:Value{ port0_tx_path:"BAND1" }
Key:Value{ port0_linkFormat:"I16" }
Key:Value{ timestamp:"ticks" }
provided: port0_linkFormat
provided: port0_rx_path
provided: port0_tx_path
provided: port0
provided: dev0
Connected: LimeSDR XTRX, media=PCIe, addr=/dev/limepcie0, serial=000000000e5dd7bf
Cell pci=1, bw=5 MHz, 1T1R, dl_arfcn=392000 (n2), dl_freq=1960 MHz, dl_ssb_arfcn=391970, ul_freq=1880 MHz

N2: Connection to AMF on 10.53.1.2:38412 completed
==== gNB started ===
Type <h> to view help
Rx| Loss: 0 overrun: 0 rate: 0 MB/s
Tx| Late: 0 underrun: 1 rate: 0 MB/s
Rx| Loss: 0 overrun: 7191 rate: 0 MB/s
Tx| Late: 0 underrun: 261 rate: 0 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:5758720 pkt:22496 o:12935(+12935) l:0(+0) dma:11248/11252(+4) swFIFO:5623
/dev/limepcie0/trx0 Tx0: 3.818 MB/s | TS:3306006 pkt:3689 u:429(+429) l:0(+0) dma:525/527(+2) tsAdvance:-427929/-162505/+93159us, f:2
Rx| Loss: 0 overrun: 16416 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 531 rate: 3.81818 MB/s
Rx| Loss: 0 overrun: 25618 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 801 rate: 3.81818 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:11519744 pkt:45000 o:31307(+18372) l:0(+0) dma:22500/22504(+4) swFIFO:5623
/dev/limepcie0/trx0 Tx0: 3.912 MB/s | TS:6070805 pkt:7469 u:969(+540) l:0(+0) dma:1065/1067(+2) tsAdvance:-952729/-682625/+0us, f:3
Rx| Loss: 0 overrun: 34825 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 1071 rate: 3.91164 MB/s
Rx| Loss: 0 overrun: 44042 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 1341 rate: 3.91164 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:17280768 pkt:67504 o:49694(+18387) l:0(+0) dma:33752/33756(+4) swFIFO:5623
/dev/limepcie0/trx0 Tx0: 4.834 MB/s | TS:9458070 pkt:12110 u:1632(+663) l:0(+0) dma:1729/1730(+1) tsAdvance:-1372840/-1227894/+0us, f:2
Rx| Loss: 0 overrun: 53260 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 1836 rate: 4.83392 MB/s
Rx| Loss: 0 overrun: 62479 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 2399 rate: 4.83392 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:23041792 pkt:90008 o:68107(+18413) l:0(+0) dma:45004/45008(+4) swFIFO:5623
/dev/limepcie0/trx0 Tx0: 8.063 MB/s | TS:15200790 pkt:19915 u:2747(+1115) l:0(+0) dma:2841/2845(+4) tsAdvance:-1380840/-1367479/+0us, f:2
Rx| Loss: 0 overrun: 71713 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 2961 rate: 8.06311 MB/s
Rx| Loss: 0 overrun: 80927 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 3524 rate: 8.06311 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:28802815 pkt:112512 o:86496(+18389) l:0(+0) dma:56256/56260(+4) swFIFO:5622
/dev/limepcie0/trx0 Tx0: 8.241 MB/s | TS:20971926 pkt:27832 u:3878(+1131) l:0(+0) dma:3973/3976(+3) tsAdvance:-1381018/-1372335/+0us, f:3
Rx| Loss: 0 overrun: 90139 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 4086 rate: 8.24096 MB/s
Rx| Loss: 0 overrun: 99356 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 4655 rate: 8.24096 MB/s
Rx| Loss: 0 overrun: 99356 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 4655 rate: 8.24096 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:34563840 pkt:135016 o:104884(+18388) l:0(+0) dma:67508/67512(+4) swFIFO:5623
/dev/limepcie0/trx0 Tx0: 8.179 MB/s | TS:26789910 pkt:35735 u:5007(+1129) l:0(+0) dma:5101/5105(+4) tsAdvance:-1380307/-1368308/+0us, f:2
Rx| Loss: 0 overrun: 108567 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 5218 rate: 8.17912 MB/s
Rx| Loss: 0 overrun: 117777 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 5780 rate: 8.17912 MB/s
/dev/limepcie0/trx0 Rx0: 23.404 MB/s | TS:40324864 pkt:157520 o:123269(+18385) l:0(+0) dma:78760/78764(+4) swFIFO:5623
/dev/limepcie0/trx0 Tx0: 8.241 MB/s | TS:32561429 pkt:43652 u:6138(+1131) l:0(+0) dma:6233/6236(+3) tsAdvance:-1375262/-1366319/+0us, f:2
Rx| Loss: 0 overrun: 126992 rate: 23.4042 MB/s
Tx| Late: 0 underrun: 6343 rate: 8.24096 MB/s
^CStopping...
Logfile stored in /tmp/gnb.log
double free or corruption (!prev)
Stack trace (most recent call last) in thread 3343:
#10   Object "/usr/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1", at 0xffffffffffffffff, in 
#9    Source "../sysdeps/unix/sysv/linux/aarch64/clone.S", line 79, in thread_start [0x7fb224bf5b]
#8    Source "./nptl/pthread_create.c", line 442, in start_thread [0x7fb21e202f]
#7    Object "/usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.30", at 0x7fb24ce9db, in 
#6    Object "/home/lime/develop/srsRAN_Project/build/apps/gnb/gnb", at 0x557a1d84bf, in std::thread::_State_impl<std::thread::_Invoker<std::tuple<srsran::unique_thread::make_thread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, srsran::unique_function<void (), 32ul, false>, srsran::os_thread_realtime_priority, srsran::os_sched_affinity_bitmask const&)::{lambda()#1}> > >::_M_run()
#5    Object "/home/lime/develop/srsRAN_Project/build/apps/gnb/gnb", at 0x557a1ccc17, in srsran::general_task_worker<(srsran::concurrent_queue_policy)3, (srsran::concurrent_queue_wait_policy)0>::make_blocking_pop_task()::{lambda()#1}::operator()() const
#4    Object "/home/lime/develop/srsRAN_Project/build/apps/gnb/gnb", at 0x55794908df, in srsran::lower_phy_baseband_processor::dl_process(unsigned long)
#3    Object "/home/lime/develop/srsRAN_Project/build/apps/gnb/gnb", at 0x557a1c5837, in srsran::general_task_worker_executor<(srsran::concurrent_queue_policy)3, (srsran::concurrent_queue_wait_policy)0>::execute(srsran::unique_function<void (), 64ul, false>)
#2    Object "/home/lime/develop/srsRAN_Project/build/apps/gnb/gnb", at 0x5579490ddf, in srsran::task_details::smallbuffer_table_t<srsran::lower_phy_baseband_processor::dl_process(unsigned long)::{lambda()#1}, void>::call(void*) const
#1    Object "/home/lime/develop/srsRAN_Project/build/apps/gnb/gnb", at 0x55794c992f, in srsran::radio_limesuiteng_tx_stream::transmit(srsran::baseband_gateway_buffer_reader const&, srsran::baseband_gateway_transmitter_metadata const&)
#0    Object "/usr/local/lib/liblimesuiteng.so.0.3-1", at 0x7fb299faf8, in LimePlugin_Write_complex32f(LimePluginContext*, lime::POD_complex_t<float> const* const*, int, int, lime::StreamMeta&)
Segmentation fault (Address not mapped to object [(nil)])
./start_srsran_gnb.sh: line 22:  3330 Segmentation fault      sudo ./gnb -c ~/develop/5G/gnb.yml

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions