srsRAN_4G icon indicating copy to clipboard operation
srsRAN_4G copied to clipboard

5G SA: Assertion failed in `./lib/src/rlc/rlc_am_nr.cc:1825`

Open TallGuy74 opened this issue 2 years ago • 43 comments

Issue Description

Assertion failed in ./lib/src/rlc/rlc_am_nr.cc:1825.

Setup Details

5G SA connection between two USRP B210's (with a 30 dB attenuation on the line).

Expected Behavior

No assertion.

Actual Behaviour

srsLog error - The backend queue size is about to reach its maximum capacity of 8192 elements, new log entries will get discarded. Consider increasing the queue capacity.
RF status: O=0, U=1, L=0
[INFO] [UHD RF] Tx while waiting for EOB, timed out... 1432.22 >= 1432.22. Starting new burst... RF status: O=0, U=1, L=0
[INFO] [UHD RF] Tx while waiting for EOB, timed out... 1434.32 >= 1434.32. Starting new burst... RF status: O=0, U=3, L=2
./lib/src/rlc/rlc_am_nr.cc:1825: Assertion Failure: Error: rx_highest_status assigned outside rx window --- command='srsue ue-uhd.conf' version=22.04.0 signal=6 date='13/06/2022 15:09:16' --- srsue(+0x273791) [0x55b3be1e5791] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f19f6480d60] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f19f6480ce1] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f19f646a537] srsue(+0xdea42) [0x55b3be050a42]
srsue(+0x3d5681) [0x55b3be347681]
srsue(+0xdee2b) [0x55b3be050e2b]
srsue(+0xd93db) [0x55b3be04b3db]
srsue(+0xd822d) [0x55b3be04a22d] srsue(+0x7ce45) [0x55b3bdfeee45]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f19f6c5cea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f19f6542def] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---
--- command='srsue ue-uhd.conf' version=22.04.0 signal=11 date='13/06/2022 15:09:16' --- srsue(+0x273791) [0x55b3be1e5791] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f19f6480d60]
srsue(+0xa284b) [0x55b3be01484b]
srsue(+0xa0ec7) [0x55b3be012ec7]
srsue(+0xa10b4) [0x55b3be0130b4]
srsue(+0xa50a9) [0x55b3be0170a9]
srsue(+0x27af89) [0x55b3be1ecf89]
srsue(+0x7ce45) [0x558e57f76e45] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f9105850ea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f9105136def] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---
terminate called without an active exception --- command='srsue ue-uhd.conf' version=22.04.0 signal=6 date='13/06/2022 14:30:46' --- srsue(+0x273791) [0x558e5816d791] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f9105074d60] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f9105074ce1] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f910505e537] /lib/x86_64-linux-gnu/libstdc++.so.6(+0x9a7ec) [0x7f91053f67ec] /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5966) [0x7f9105401966] /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa59d1) [0x7f91054019d1] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x17e71) [0x7f9104eebe71] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x1803a) [0x7f9104eec03a] /lib/x86_64-linux-gnu/libc.so.6(+0x3e4d7) [0x7f91050774d7] /lib/x86_64-linux-gnu/libc.so.6(+0x3e67a) [0x7f910507767a] srsue(+0x2737c7) [0x558e5816d7c7] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f9105074d60] srsue(+0x20d235) [0x558e58107235] srsue(+0xf2938) [0x558e57fec938] srsue(+0xfbbcd) [0x558e57ff5bcd] srsue(+0x7ce45) [0x558e57f76e45] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f9105850ea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f9105136def] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---

Steps to reproduce the problem

  1. Start Open5GS
  2. Start srsenb with the supplied configuration files
  3. Start srsue with the supplied configuration files
  4. Start iperf3 -s -Z on the gNB machine
  5. Start iperf3 -c 10.45.0.1 -Z --bidir -u -b 30.5m -t 3600 on the UE machine

Additional Information

enb-uhd.conf.txt rr.conf.txt ue-uhd.conf.txt

TallGuy74 avatar Jun 13 '22 15:06 TallGuy74

Thanks for reporting. Could you give https://github.com/srsran/srsRAN/tree/agpl_next a try please? We've fixed a few RLC issues there already

andrepuschmann avatar Jun 13 '22 15:06 andrepuschmann

Upgraded to agpl_next, and got the same/similar assertion:

Random Access Transmission: prach_occasion=0, preamble_index=0, ra-rnti=0xf, tti=7691
Random Access Complete.     c-rnti=0x4601, ta=1                                                       
RRC Connected                                      
RRC NR reconfiguration successful.          
PDU Session Establishment successful. IP: 10.45.0.2                                    
RRC NR reconfiguration successful.       
./lib/src/rlc/rlc_am_nr.cc:1854: Assertion Failure: Error: rx_highest_status assigned outside rx window
--- command='srsue ue-uhd.conf' version=22.04.0 signal=6 date='14/06/2022 08:02:08' ---
        srsue(+0x272fd1) [0x560f2f35ffd1]                                                             
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fb358d15d60]     
        /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7fb358d15ce1]
        /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7fb358cff537]  
        srsue(+0xdef12) [0x560f2f1cbf12]                                                              
        srsue(+0x3d5f91) [0x560f2f4c2f91]                                                             
        srsue(+0xdf2fb) [0x560f2f1cc2fb]                                                              
        srsue(+0xd98ab) [0x560f2f1c68ab]                                                              
        srsue(+0xd86fd) [0x560f2f1c56fd] 
        srsue(+0x7d315) [0x560f2f16a315]                                                              
        /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7fb3594f1ea7]
        /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7fb358dd7def]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
--- command='srsue ue-uhd.conf' version=22.04.0 signal=11 date='14/06/2022 08:02:08' ---                                                                                                            [4/1877]
        srsue(+0x272fd1) [0x560f2f35ffd1]                                                             
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fb358d15d60]
        srsue(+0xa2d1b) [0x560f2f18fd1b]           
        srsue(+0xa1397) [0x560f2f18e397]                                                              
        srsue(+0xa1584) [0x560f2f18e584]
        srsue(+0xa5579) [0x560f2f192579]
        srsue(+0x27a7c9) [0x560f2f3677c9]
        srsue(+0x7d315) [0x560f2f16a315]
        /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7fb3594f1ea7]
        /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7fb358dd7def]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
--- command='srsue ue-uhd.conf' version=22.04.0 signal=11 date='14/06/2022 08:02:08' ---
        srsue(+0x272fd1) [0x560f2f35ffd1]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fb358d15d60]
        srsue(+0x20c4b5) [0x560f2f2f94b5]
        srsue(+0xf2e08) [0x560f2f1dfe08]
        srsue(+0xfc09d) [0x560f2f1e909d]
        srsue(+0x7d315) [0x560f2f16a315]
        /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7fb3594f1ea7]
        /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7fb358dd7def]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
terminate called without an active exception
--- command='srsue ue-uhd.conf' version=22.04.0 signal=6 date='14/06/2022 08:02:08' ---
        srsue(+0x272fd1) [0x560f2f35ffd1]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fb358d15d60]
        /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7fb358d15ce1]
        /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7fb358cff537]
        /lib/x86_64-linux-gnu/libstdc++.so.6(+0x9a7ec) [0x7fb3590977ec]
        /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5966) [0x7fb3590a2966]
        /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa59d1) [0x7fb3590a29d1]
        /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x17e71) [0x7fb358b8ce71]
        /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x1803a) [0x7fb358b8d03a]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3e4d7) [0x7fb358d184d7]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3e67a) [0x7fb358d1867a]
        srsue(+0x273007) [0x560f2f360007]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fb358d15d60]
        srsue(+0x20c4b5) [0x560f2f2f94b5]
        srsue(+0xf2e08) [0x560f2f1dfe08]
        srsue(+0xfc09d) [0x560f2f1e909d]
        srsue(+0x7d315) [0x560f2f16a315]
        /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7fb3594f1ea7]
        /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7fb358dd7def]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
--- command='srsue ue-uhd.conf' version=22.04.0 signal=11 date='14/06/2022 08:02:08' ---

The assertion came a lot faster though.

Machine 1: Start Open5GS and srsenb (22.04 without updates) Machine 2: Start srsue (agpl_next) Machine 1: start iperf3 -s Machine 2: start iperf3 -c 10.45.0.1 -Z --bidir -u -b 30.5m

The assertion came in the first second.

TallGuy74 avatar Jun 14 '22 08:06 TallGuy74

Running agpl_next on both gNB and UE seems to fix the problem, but I'll keep testing for a while.

TallGuy74 avatar Jun 14 '22 08:06 TallGuy74

The assertion is gone for 5G SA, and the resilience of the LTE connection (2x2 MIMO with PRB=100) is a lot better. Before it would crap out after a while and not recover, now it recovers relatively quickly and goes back to 147 Mbps DL and 48 Mbps UL.

TallGuy74 avatar Jun 14 '22 08:06 TallGuy74

Thanks for confirming the fixes for NR. They were expected. However, for LTE I don't recall any significant changes to the code base. Are you sure you compared 22.04 and the recent agpl_next branch with each other?

andrepuschmann avatar Jun 15 '22 07:06 andrepuschmann

It's mostly annecdotal, it seemed to be more stable. I've now had a couple runs where it would stop completely, one where I had an MME failure (reason 0x9 I think?), and some other things. When it works, it has a nice throughput of 147 Mbps DL and 48.9 Mbps UL. I'm not sure why the LTE connection fails, the CPUs are mostly idle(ish).

TallGuy74 avatar Jun 15 '22 07:06 TallGuy74

I'm still seeing this error if I use two x300's to connect. I haven't found the correct gains yet to use with the same bandwidth as the b210's. It seems to be occur when the bandwidth used for iperf3's client is bigger than the bandwidth it can transfer; it occurs more often when I use --bidir, and not so much when I use one direction at a time.

TallGuy74 avatar Jun 29 '22 15:06 TallGuy74

If you can reproduce it with the agpl_next branch with RLC logs in info that would be helpful for us. Thanks

andrepuschmann avatar Jun 30 '22 08:06 andrepuschmann

This is a session with two X300's connected with 10 Gbps ethernet to two i9 12900K machines. 5G SA, the two X300's are connected from RXA1-> TXA2, TXA1 -> RXA2, RXB1 -> TXB2, TXB1 -> RXB2; there is a 60 dB attenuation on each line (2 x 30 dB connected serially). I get a throughput of about 6-7 Mbps upstream and 16.5 mbps downstream. On my B210's I get 30.5 Mbps downstream and 18.5 upstream with a similar setup (with 30 dB attenuation on the line, and a different gain setting for ue and enb).

Configuration files used for UE: ue-x300.conf.txt Configuration files used for gNB: enb-x300.conf.txt rb.conf.txt rr.conf.txt

PDU Session Establishment successful. IP: 10.45.0.2 RRC NR reconfiguration successful. RF status: O=0, U=1, L=0 RF status: O=0, U=1, L=0 srsLog error - The backend queue size is about to reach its maximum capacity of 8192 elements, new log entries will get discarded. Consider increasing the queue capacity. RF status: O=0, U=11, L=0 RF status: O=0, U=11, L=0 RF status: O=0, U=9, L=0 RF status: O=0, U=8, L=0 RF status: O=0, U=10, L=0 ./lib/src/rlc/rlc_am_nr.cc:1854: Assertion Failure: Error: rx_highest_status assigned outside rx window --- command='srsue ue-x300.conf' version=22.04.0 signal=6 date='30/06/2022 07:42:50' --- srsue(+0x272fd1) [0x5614adc6efd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fa72e6c5d60] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7fa72e6c5ce1] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7fa72e6af537] srsue(+0xdef12) [0x5614adadaf12] srsue(+0x3d5f91) [0x5614addd1f91] srsue(+0xdf2fb) [0x5614adadb2fb] srsue(+0xd98ab) [0x5614adad58ab] srsue(+0xd86fd) [0x5614adad46fd] srsue(+0x7d315) [0x5614ada79315] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7fa72eea1ea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7fa72e787def] srsRAN crashed. Please send this backtrace to the developers ... --- exiting --- --- command='srsue ue-x300.conf' version=22.04.0 signal=11 date='30/06/2022 07:42:50' --- srsue(+0x272fd1) [0x5614adc6efd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fa72e6c5d60] srsue(+0x20c4b5) [0x5614adc084b5] srsue(+0xf2e08) [0x5614adaeee08] srsue(+0xfc09d) [0x5614adaf809d] srsue(+0x7d315) [0x5614ada79315] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7fa72eea1ea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7fa72e787def] srsRAN crashed. Please send this backtrace to the developers ... --- exiting --- terminate called without an active exception --- command='srsue ue-x300.conf' version=22.04.0 signal=6 date='30/06/2022 07:42:50' --- srsue(+0x272fd1) [0x5614adc6efd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7fa72e6c5d60] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7fa72e6c5ce1] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7fa72e6af537] /lib/x86_64-linux-gnu/libstdc++.so.6(+0x9a7ec) [0x7fa72ea477ec] /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5966) [0x7fa72ea52966] /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa59d1) [0x7fa72ea529d1] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x15f11) [0x7fa72e55bf11] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x15f9a) [0x7fa72e55bf9a] /lib/x86_64-linux-gnu/libc.so.6(__cxa_finalize+0xc6) [0x7fa72e6c8ac6] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0xc343) [0x7fa72e552343] srsRAN crashed. Please send this backtrace to the developers ... --- exiting --- corrupted double-linked list Segmentation fault

This is with the agpl_next branch from commit 6a3b9257e33948977bedab71ce75e6746d843de2

@andrepuschmann I have the logs available and saved, but they are too large to upload here; I have all_level = info, phy_lib_level = none.

Would you prefer all_level = none and rlc_level = info?

TallGuy74 avatar Jun 30 '22 08:06 TallGuy74

reproduced with all_level = none and rlc_level = info.

bvermeulen@gbodoue02:~$ sudo UHD_IMAGES_DIR=/usr/share/uhd/images srsue ue-x300.conf                                                                                                                        
Active RF plugins: libsrsran_rf_uhd.so libsrsran_rf_soapy.so libsrsran_rf_blade.so libsrsran_rf_zmq.so                                                                                                      
Inactive RF plugins:                                                                                                                                                                                        
Reading configuration file ue-x300.conf...                                                                                                                                                                  
                                                                                                      
Built in RelWithDebInfo mode using 22.04.0.                                                           
                                                                                                      
Opening 1 channels in RF device=UHD with args=type=x300,addr=192.168.40.2,sampling_rate=23.04e6,lo_freq_offset_hz=23.04e6
Supported RF device list: UHD soapy bladeRF zmq file                                                  
[INFO] [UHD] linux; GNU C++ version 10.2.1 20210110; Boost_107400; UHD_4.1.0.5-3molex1                
[INFO] [LOGGING] Fastpath logging disabled at runtime.                                                
Opening USRP channels=1, args: type=x300,addr=192.168.40.2,lo_freq_offset_hz=23.04e6,master_clock_rate=184.32e6
[INFO] [UHD RF] RF UHD Generic instance constructed                                                   
[INFO] [X300] X300 initialization sequence...                                                         
[INFO] [X300] Maximum frame size: 8000 bytes.                                                         
[INFO] [X300] Radio 1x clock: 184.32 MHz                                                              
Waiting PHY to initialize ... done!                                                                   
Attaching UE...                                                                                       
Random Access Transmission: prach_occasion=0, preamble_index=0, ra-rnti=0xf, tti=651          
Random Access Complete.     c-rnti=0x4601, ta=1                                                       
RRC Connected                                                                                         
RRC NR reconfiguration successful.                                                                    
PDU Session Establishment successful. IP: 10.45.0.2                                                   
RRC NR reconfiguration successful.                                                                    
srsLog error - The backend queue size is about to reach its maximum capacity of 8192 elements, new log entries will get discarded.
Consider increasing the queue capacity.                                                                                                                                                            
RF status: O=0, U=7, L=0                           
RF status: O=0, U=5, L=16
RF status: O=0, U=5, L=0                           
RF status: O=0, U=5, L=16
RF status: O=0, U=5, L=16
RF status: O=0, U=3, L=32
RF status: O=0, U=6, L=16
./lib/src/rlc/rlc_am_nr.cc:1854: Assertion Failure: Error: rx_highest_status assigned outside rx window
--- command='srsue ue-x300.conf' version=22.04.0 signal=6 date='30/06/2022 08:57:15' ---
        srsue(+0x272fd1) [0x55daa6ba7fd1]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f3a2d804d60]
        /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f3a2d804ce1]
        /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f3a2d7ee537]
        srsue(+0xdef12) [0x55daa6a13f12]
        srsue(+0x3d5f91) [0x55daa6d0af91]
        srsue(+0xdf2fb) [0x55daa6a142fb]
        srsue(+0xd98ab) [0x55daa6a0e8ab]
        srsue(+0xd86fd) [0x55daa6a0d6fd]
        srsue(+0x7d315) [0x55daa69b2315]
        /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f3a2dfe0ea7]
        /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f3a2d8c6def]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
--- command='srsue ue-x300.conf' version=22.04.0 signal=11 date='30/06/2022 08:57:15' ---                                                                                                          [62/1769]
        srsue(+0x272fd1) [0x55daa6ba7fd1]                                                                                                                                                                   
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f3a2d804d60]
        srsue(+0x2662d4) [0x55daa6b9b2d4]
        srsue(+0x3a84eb) [0x55daa6cdd4eb]
        srsue(+0x3daae7) [0x55daa6d0fae7]
        srsue(+0x3bbbb1) [0x55daa6cf0bb1]
        srsue(+0x3a3e79) [0x55daa6cd8e79]
        srsue(+0x267b75) [0x55daa6b9cb75]
        srsue(+0x26d5c3) [0x55daa6ba25c3]
        srsue(+0x26daf7) [0x55daa6ba2af7]
        srsue(+0x25cf1b) [0x55daa6b91f1b]
        srsue(+0x9ecf5) [0x55daa69d3cf5]
        srsue(+0xa5789) [0x55daa69da789]
        srsue(+0x27a7c9) [0x55daa6baf7c9]
        srsue(+0x7d315) [0x55daa69b2315]
        /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f3a2dfe0ea7]
        /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f3a2d8c6def]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
terminate called without an active exception                                                                                                                                                       [42/1769]
--- command='srsue ue-x300.conf' version=22.04.0 signal=6 date='30/06/2022 08:57:15' ---
        srsue(+0x272fd1) [0x55daa6ba7fd1]
        /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f3a2d804d60]
        /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f3a2d804ce1]
        /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f3a2d7ee537]
        /lib/x86_64-linux-gnu/libstdc++.so.6(+0x9a7ec) [0x7f3a2db867ec]
        /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5966) [0x7f3a2db91966]
        /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa59d1) [0x7f3a2db919d1]
        /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x15f11) [0x7f3a2d69af11]
        /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x15f9a) [0x7f3a2d69af9a]
        /lib/x86_64-linux-gnu/libc.so.6(__cxa_finalize+0xc6) [0x7f3a2d807ac6]
        /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0xc343) [0x7f3a2d691343]
srsRAN crashed. Please send this backtrace to the developers ...
---  exiting  ---                                  
Segmentation fault                                 

ue-x300-rlc.1.log ue-x300-rlc.2.log ue-x300-rlc.log

I have the srsenb logs available as well with the same log settings if you need them.

TallGuy74 avatar Jun 30 '22 09:06 TallGuy74

I saw at least one instance of mac_sch_pdu_nr::to_string() writing one DL and loads of LCID=0 len=0 from what seems to be a pdu with lots of empty subpdu's. I'll see if I can catch it again and upload the logs (these logs were 100MB per file, which I can't upload here).

TallGuy74 avatar Jul 01 '22 07:07 TallGuy74

I saw a similar backtrace on the enb, but wasn't able to copy it. I'm including the log files here:

enb-uhd.6700.log enb-uhd.6701.log enb-uhd.6702.log enb-uhd.6703.log enb-uhd.6704.log enb-uhd.6705.log enb-uhd.6706.log enb-uhd.6707.log

TallGuy74 avatar Jul 01 '22 08:07 TallGuy74

bvermeulen@gbodoue02:~$ sudo UHD_LOG_FILE=/home/bvermeulen/uhd.log UHD_IMAGES_DIR=/usr/share/uhd/images srsue ue-b210.conf
[sudo] password for bvermeulen:
Active RF plugins: libsrsran_rf_uhd.so libsrsran_rf_soapy.so libsrsran_rf_blade.so libsrsran_rf_zmq.so Inactive RF plugins:
Reading configuration file ue-b210.conf...

Built in RelWithDebInfo mode using 22.04.0.

Opening 1 channels in RF device=UHD with args=type=b200,serial=3166D07,sampling_rate=23.04e6,lo_freq_offset_hz=23.04e6 Supported RF device list: UHD soapy bladeRF zmq file [INFO] [UHD] linux; GNU C++ version 10.2.1 20210110; Boost_107400; UHD_4.1.0.5-3molex1 [INFO] [LOGGING] Fastpath logging disabled at runtime. Opening USRP channels=1, args: type=b200,serial=3166D07,lo_freq_offset_hz=23.04e6,master_clock_rate=23.04e6 [INFO] [UHD RF] RF UHD Generic instance constructed [INFO] [B200] Detected Device: B210
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Detecting internal GPSDO....
[INFO] [GPS] Found an internal GPSDO: GPSTCXO , Firmware Rev 0.929a [INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control... [INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed [INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Asking for clock rate 23.040000 MHz... [INFO] [B200] Actually got clock rate 23.040000 MHz.
Waiting PHY to initialize ... done!
Attaching UE...
Random Access Transmission: prach_occasion=0, preamble_index=0, ra-rnti=0xf, tti=2251 Random Access Complete. c-rnti=0x4601, ta=1
RRC Connected
RRC NR reconfiguration successful.
PDU Session Establishment successful. IP: 10.45.0.2
RRC NR reconfiguration successful.
srsLog error - The backend queue size is about to reach its maximum capacity of 8192 elements, new log entries will get discarded. Consider increasing the queue capacity.
RF status: O=0, U=1, L=0
[INFO] [UHD RF] Tx while waiting for EOB, timed out... 2373.72 >= 2373.72. Starting new burst... RF status: O=0, U=3, L=5
RF status: O=0, U=1, L=0
./lib/src/rlc/rlc_am_nr.cc:1854: Assertion Failure: Error: rx_highest_status assigned outside rx window --- command='srsue ue-b210.conf' version=22.04.0 signal=6 date='01/07/2022 12:21:29' --- srsue(+0x272fd1) [0x55e51ca07fd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f67f289ad60] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f67f289ace1] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f67f2884537] srsue(+0xdef12) [0x55e51c873f12] srsue(+0x3d5f91) [0x55e51cb6af91] srsue(+0xdf2fb) [0x55e51c8742fb] srsue(+0xd98ab) [0x55e51c86e8ab] srsue(+0xd86fd) [0x55e51c86d6fd] srsue(+0x7d315) [0x55e51c812315] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f67f3076ea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67f295cdef] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---
--- command='srsue ue-b210.conf' version=22.04.0 signal=11 date='01/07/2022 12:21:29' --- srsue(+0x272fd1) [0x55e51ca07fd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f67f289ad60] srsue(+0x3a3e73) [0x55e51cb38e73] srsue(+0x267b75) [0x55e51c9fcb75] srsue(+0x26d5c3) [0x55e51ca025c3] srsue(+0x26daf7) [0x55e51ca02af7] srsue(+0x25cf1b) [0x55e51c9f1f1b] srsue(+0x9ecf5) [0x55e51c833cf5] srsue(+0xa5789) [0x55e51c83a789] srsue(+0x27a7c9) [0x55e51ca0f7c9] srsue(+0x7d315) [0x55e51c812315] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8ea7) [0x7f67f3076ea7] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67f295cdef] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---
--- command='srsue ue-b210.conf' version=22.04.0 signal=11 date='01/07/2022 12:21:29' --- srsue(+0x272fd1) [0x55e51ca07fd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f67f289ad60] srsue(+0x99b2e0) [0x55e51d1302e0] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---
terminate called without an active exception --- command='srsue ue-b210.conf' version=22.04.0 signal=6 date='01/07/2022 12:21:29' --- srsue(+0x272fd1) [0x55e51ca07fd1] /lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f67f289ad60] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f67f289ace1] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f67f2884537] /lib/x86_64-linux-gnu/libstdc++.so.6(+0x9a7ec) [0x7f67f2c1c7ec] /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5966) [0x7f67f2c27966] /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa59d1) [0x7f67f2c279d1] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x15f11) [0x7f67f2730f11] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0x15f9a) [0x7f67f2730f9a] /lib/x86_64-linux-gnu/libc.so.6(__cxa_finalize+0xc6) [0x7f67f289dac6] /lib/x86_64-linux-gnu/libsrsran_rf_uhd.so(+0xc343) [0x7f67f2727343] srsRAN crashed. Please send this backtrace to the developers ... --- exiting ---
corrupted double-linked list Segmentation fault
bvermeulen@gbodoue02:~$

The corresponding log files:

ue-b210.2730.log ue-b210.2731.log ue-b210.2732.log ue-b210.2733.log ue-b210.2734.log ue-b210.2735.log

ue-b210.2732.log contains a line with hundreds of LCID=0 len=0 elements (subpdu's with 0 size) that I'm fairly sure isn't correct.

I was running iperf3 -s on the gNB machine, and iperf3 -c 10.45.0.1 -Z -u -b 30.5m --bidir -t 3600 on the UE machine.

If you need more logs, I have the 2400 seconds available (from ue-b210.log to ue-b210.2735.log).

TallGuy74 avatar Jul 01 '22 13:07 TallGuy74

Hi @TallGuy74 --

Could you try to replicate the issue with the RLC logs at debug and everything else at none?

I'm trying to understand the issue with the logs you have sent already in the meantime.

alvasMan avatar Jul 01 '22 13:07 alvasMan

@alvasMan Reproduced on the X300 to X300 setup (direct cable connection between RX/TX on both, with a 60 dB attenuation on the line; the configuration files are attached earlier in the issue). I ran iperf3 -s on the gNB machine, and iperf3 -c 10.45.0.1 -Z -u -b 20m --bidir on the UE machine. This crashed within 4 seconds (with this log level).

ue-x300-rlc.1.log ue-x300-rlc.2.log ue-x300-rlc.3.log ue-x300-rlc.4.log ue-x300-rlc.5.log ue-x300-rlc.6.log ue-x300-rlc.7.log ue-x300-rlc.8.log ue-x300-rlc.9.log ue-x300-rlc.10.log ue-x300-rlc.11.log ue-x300-rlc.12.log ue-x300-rlc.13.log ue-x300-rlc.14.log ue-x300-rlc.15.log ue-x300-rlc.16.log ue-x300-rlc.17.log ue-x300-rlc.18.log ue-x300-rlc.19.log ue-x300-rlc.20.log ue-x300-rlc.log

TallGuy74 avatar Jul 04 '22 08:07 TallGuy74

The issue is caused when t-Reassembly timer expires Last sequentially received SN was 407 (Rx_Next=407), see the following lines:

2022-07-04T07:47:31.939306 [RLC-NR ] [D] DRB1: Reassembly timer expired after 50ms
2022-07-04T07:47:31.939307 [RLC-NR ] [E] DRB1: Rx_Highest_Status not inside RX window
2022-07-04T07:47:31.939307 [RLC-NR ] [D] DRB1: RX entity state: Rx_Next=407, Rx_Next_Status_Trigger=2453, Rx_Highest_Status=2455, Rx_Next_Highest=2455

Looking back on the logs, I can see 407 was never received. The the first NACK we send for it seems to be here, on ue-x300-rlc.2.log:

2022-07-04T07:47:28.466705 [RLC-NR ] [D] DRB1: Adding NACK for full SDU. NACK SN=407

So a couple of questions here: 1 - Why did the UE not retx SN=407? 2 - Why did Rx Highest Status grew so big that it's outside of the RX window?

Let's leave 1) for now and focus on 2).

The code to update Rx_Highest_Status when t-Reassembly expires is the following:

      /*
       * 5.2.3.2.4 Actions when t-Reassembly expires:
       * - update RX_Highest_Status to the SN of the first RLC SDU with SN >= RX_Next_Status_Trigger for which not
       *   all bytes have been received;
       * - if RX_Next_Highest> RX_Highest_Status +1: or
       * - if RX_Next_Highest = RX_Highest_Status + 1 and there is at least one missing byte segment of the SDU
       *   associated with SN = RX_Highest_Status before the last byte of all received segments of this SDU:
       *   - start t-Reassembly;
       *   - set RX_Next_Status_Trigger to RX_Next_Highest.
       */
      uint32_t sn_upd = {};
      for (sn_upd = st.rx_next_status_trigger; rx_mod_base_nr(sn_upd) < rx_mod_base_nr(st.rx_next_highest);           
           sn_upd = (sn_upd + 1) % mod_nr) {
        if (not rx_window->has_sn(sn_upd) || (rx_window->has_sn(sn_upd) && not(*rx_window)[sn_upd].fully_received)) {
          break;
        }
      }
      st.rx_highest_status = sn_upd;
      if (not inside_rx_window(st.rx_highest_status)) {
        RlcError("Rx_Highest_Status not inside RX window");
        debug_state();
      }
      srsran_assert(inside_rx_window(st.rx_highest_status), "Error: rx_highest_status assigned outside rx window");

Considering we are using 12 bits SN, thus a window of 2048, the end of the window should be 407+2048=2455. Which is exactly RX_Highest_Status.

This makes sense since we received PDUs up until the end of the RX widow and we don't check for the full window in that loop. I'm currently trying to think what is the best solution for this.

Do you have the the matching logs of the UE, so we can try to figure out the issue on the TX side?

alvasMan avatar Jul 04 '22 14:07 alvasMan

@alvasMan I can reproduce it really easily, so if you want I can get you matching ue and enb logs for this. What log levels would you want to have for the enb?

TallGuy74 avatar Jul 04 '22 14:07 TallGuy74

Currently I'm just focusing on the RLC, those at debug. The rest can be at warning, at least for now. If you can reproduce this easily we can always increase the level of the lower layers later if we need it.

alvasMan avatar Jul 04 '22 14:07 alvasMan

UE logs (multipart zip):

ue-x300.zip ue-x300.z01 ue-x300.z02

ENB logs (multipart zip): enb-x300.1.zip enb-x300.2.zip enb-x300.3.zip enb-x300.zip

both with rlc_level = debug, all_level = none

TallGuy74 avatar Jul 04 '22 15:07 TallGuy74

Could you please just have a quick try at this: rlc_rx_highest.txt

And let me know if the crash stops at least?

alvasMan avatar Jul 04 '22 15:07 alvasMan

That is somewhat expected though. The RX window was getting full, so PDUs will drop when it is full. I can see in the logs you sent that that seems to be the issue:

./ue-x300-rlc.100.log:2022-07-05T07:00:51.377687 [RLC-NR ] [I] DRB1: SN=515 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.377688 [RLC-NR ] [I] DRB1: SN=516 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.377689 [RLC-NR ] [I] DRB1: SN=517 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.377690 [RLC-NR ] [I] DRB1: SN=518 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.399444 [RLC-NR ] [I] DRB1: SN=518 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.404157 [RLC-NR ] [I] DRB1: SN=521 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.406471 [RLC-NR ] [I] DRB1: SN=524 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.406472 [RLC-NR ] [I] DRB1: SN=525 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.406473 [RLC-NR ] [I] DRB1: SN=526 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.406474 [RLC-NR ] [I] DRB1: SN=527 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.408302 [RLC-NR ] [I] DRB1: SN=527 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.408303 [RLC-NR ] [I] DRB1: SN=528 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.408304 [RLC-NR ] [I] DRB1: SN=529 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.428371 [RLC-NR ] [I] DRB1: SN=541 outside rx window [2337:4385] - discarding
./ue-x300-rlc.100.log:2022-07-05T07:00:51.428373 [RLC-NR ] [I] DRB1: SN=542 outside rx window [2337:4385] - discarding

Currently investigating what is causing this.

alvasMan avatar Jul 05 '22 13:07 alvasMan

It even stops passing data if I stop iperf3 and start it up again after a little while. I'd expect the dropped PDUs to impact my throughput (as those will probably be retransmitted?), but not drop to 0.

TallGuy74 avatar Jul 05 '22 14:07 TallGuy74

It even stops passing data if I stop iperf3 and start it up again after a little while. I'd expect the dropped PDUs to impact my throughput (as those will probably be re-transmitted?), but not drop to 0.

Sorry, perhaps I was not clear.

I did not mean to say that there was no bug here. I meant to say that I expected such a data stall bug, since the RLC stopped re-transmitting packets in the previous logs you sent.

I had a look at the most recent logs you sent, and basically the TX window is getting overrun. See the following entry, where a NACK is not being processed, even though there was no ACK to remove that SN:

2022-07-05T07:00:41.371339 [RLC-NR ] [I] DRB2: TX window does not contain NACK_SN. SDU SN=2337, Tx_Next_Ack=2337, Tx_Next=312

There is currently no check for the TX window getting overrun in the agpl_next branch, can you try adding it by doing the following:

diff --git a/lib/src/rlc/rlc_am_nr.cc b/lib/src/rlc/rlc_am_nr.cc
index 99b0d5bcc..191d2fe08 100644
--- a/lib/src/rlc/rlc_am_nr.cc
+++ b/lib/src/rlc/rlc_am_nr.cc
@@ -184,6 +184,13 @@ uint32_t rlc_am_nr_tx::build_new_pdu(uint8_t* payload, uint32_t nof_bytes)
     RlcInfo("Not enough bytes for payload plus header. nof_bytes=%d", nof_bytes);
     return 0;
   }
+
+  // do not build any more PDUs if window is already full
+  if (tx_window->full()) {
+    RlcInfo("Cannot build data PDU - Tx window full.");
+    return 0;
+  }
+
   // Read new SDU from TX queue
   unique_byte_buffer_t tx_sdu;
   RlcDebug("Reading from RLC SDU queue. Queue size %d", tx_sdu_queue.size());
(END)

Let me know if that helps with the data stall.

alvasMan avatar Jul 06 '22 12:07 alvasMan

@alvasMan: The data stall is still there:

UE logs: ue-x300-txwindow.z01 ue-x300-txwindow.zip

ENB logs: enb-x300-txwindow.zip

Some more information:

In this situation I have X300-1 connected to the ENB machine, and X300-2 connected to the UE machine. If I connect X300-1 to the UE machine, and X300-2 to the ENB machine, I have no problem and I get ~30 Mbps DL and ~19 Mbps UL. The physical connection stays the same, I only change the 10 Gbps ethernet connection from one PC to the other and vice-versa.

I really don't know why it does that, if you have any idea on what could cause this phenomenon, that would help immensely.

I am keeping the setup in the fault sensitive configuration so we can continue testing this for now.

TallGuy74 avatar Jul 06 '22 13:07 TallGuy74

The X300's don't have a GPSDO module installed, and according to Ettus this could cause the problem that I am seeing with the setup working if reversed.

TallGuy74 avatar Jul 07 '22 14:07 TallGuy74

The X300's don't have a GPSDO module installed, and according to Ettus this could cause the problem that I am seeing with the setup working if reversed.

Yes, that's quite possible. The X300 have quite good local oscillators already (compared to the B210). But having a GPSDO or external reference if definitely better.

andrepuschmann avatar Jul 07 '22 14:07 andrepuschmann

I had a look at the logs that you sent me and I spotted two issues.

1 - When t-PollRetransmit expired, the re-transmitted PDU was being dropped because of a check if the PDU was inside the RX window at the RX. This was done before checking if p bit was set and thus it was not triggering the status report and causing the data stall. 2 - I saw at least one instance of a status report being dropped at the TX, because the ACK_SN > TX_NEXT. This is actually possible to happen, if we get a NACK for an SDU segment of an SDU that has not finished transmitting all its segments. Probably this was not causing you data stall, but nasty corner case none the less.

Could you try the following for issue 1):

diff --git a/lib/src/rlc/rlc_am_nr.cc b/lib/src/rlc/rlc_am_nr.cc
index 6acd14acc4..da27b25875 100644
--- a/lib/src/rlc/rlc_am_nr.cc
+++ b/lib/src/rlc/rlc_am_nr.cc
@@ -1425,21 +1425,25 @@ void rlc_am_nr_rx::handle_data_pdu(uint8_t* payload, uint32_t nof_bytes)
   RlcHexInfo(payload, nof_bytes, "Rx data PDU SN=%d (%d B)", header.sn, nof_bytes);
   log_rlc_am_nr_pdu_header_to_string(logger.debug, header, rb_name);
 
-  // Check whether SDU is within Rx Window
-  if (!inside_rx_window(header.sn)) {
-    RlcInfo("SN=%d outside rx window [%d:%d] - discarding", header.sn, st.rx_next, st.rx_next + rx_window_size());
-    return;
-  }
-
   // Trigger polling if poll bit is set.
-  // We do this before discarding duplicate SDUs/SDU segments
+  // We do this before checking if the PDU is inside the RX window,
+  // as the RX window may have advanced without the TX having received the ACKs
+  // This can cause a data stall, whereby the TX keeps retransmiting
+  // a PDU outside of the Rx window.
+  // Also, we do this before discarding duplicate SDUs/SDU segments
   // Because t-PollRetransmit may transmit a PDU that was already
   // received.
-  if (header.p) {
+  if (header.p != 0U) {
     RlcInfo("status packet requested through polling bit");
     do_status = true;
   }
 
+  // Check whether SDU is within Rx Window
+  if (!inside_rx_window(header.sn)) {
+    RlcInfo("SN=%d outside rx window [%d:%d] - discarding", header.sn, st.rx_next, st.rx_next + rx_window_size());
+    return;
+  }
+
   // Section 5.2.3.2.2, discard duplicate PDUs
   if (rx_window->has_sn(header.sn) && (*rx_window)[header.sn].fully_received) {
     RlcInfo("discarding duplicate SN=%d", header.sn);

And this for issue 2):

diff --git a/lib/src/rlc/rlc_am_nr.cc b/lib/src/rlc/rlc_am_nr.cc
index df58921572..6acd14acc4 100644
--- a/lib/src/rlc/rlc_am_nr.cc
+++ b/lib/src/rlc/rlc_am_nr.cc
@@ -794,7 +794,7 @@ void rlc_am_nr_tx::handle_control_pdu(uint8_t* payload, uint32_t nof_bytes)
     info_state();
     return;
   }
-  if (tx_mod_base_nr(status.ack_sn) > tx_mod_base_nr(st.tx_next)) {
+  if (tx_mod_base_nr(status.ack_sn) > tx_mod_base_nr(st.tx_next + 1)) {
     RlcWarning("Received ACK with SN larger than TX_NEXT, ignoring status report.  SN=%d, TX_NEXT_ACK=%d, TX_NEXT=%d",
                status.ack_sn,
                st.tx_next_ack,

alvasMan avatar Jul 07 '22 14:07 alvasMan

Strange... I see the following loop at the end of the logs:

@UE

2022-07-07T15:34:49.980721 [RLC-NR ] [I] DRB1: status packet requested through polling bit
2022-07-07T15:34:49.980721 [RLC-NR ] [I] DRB1: SN=2013 outside rx window [2018:4066] - discarding
...
2022-07-07T15:34:49.981540 [RLC-NR ] [D] DRB1: buffer state - do_status=yes
2022-07-07T15:34:49.981541 [RLC-NR ] [D] DRB1: Generating status PDU
2022-07-07T15:34:49.981542 [RLC-NR ] [D] DRB1: Adding NACKs for segmented SDU. NACK SN=2018
2022-07-07T15:34:49.981542 [RLC-NR ] [D] DRB1: Final segment missing. NACK_SN=2018. SO_start=1351, SO_end=65535

@eNB

2022-07-07T15:34:48.615912 [RLC-NR ] [I] RX status PDU: ACK_SN = 4061, N_nack = 69, NACK_SN = [2018 1351:1236 r4][2050 594:486 r4][2176 1237:1022 r7][2185 916:808 r4][2191 702:588 r4][2197 482:831 r65][2287 1355:1140 r7][2296 1034:926 r4][2302 820:712 r4][2308 593:1470 r50][2363 1257:935 r10][2398 1459:1244 r7][2407 1138:1030 r4][2413 924:816 r4][2419 710:1146 r62][2486 933:718 r7][2501 398:290 r4][2510 79:1134 r12][2530 814:120 r54][2591 1030:922 r4][2603 602:494 r4][2617 1298:1190 r4][2623 1084:869 r7][2641 409:868 r47][2696 293:80 r7][2728 602:387 r7][2751 1232:382 r57][2813 170:1440 r6][2842 585:477 r4][2851 264:51 r7][2862 1275:746 r48][2918 372:52 r10][2929 1430:1322 r4][2941 1002:894 r4][2947 788:680 r4][2962 253:146 r4][2970 1418:1353 r83][3058 1140:925 r7][3079 391:1283 r56][3137 1177:855 r10][3193 631:97 r48][3248 1261:1046 r7][3278 192:85 r4][3301 821:66 r54][3359 1337:1122 r7][3397 1432:1217 r7][3415 790:239 r48][3470 1405:1190 r7][3494 549:441 r4][3503 229:347 r68][3576 136:29 r4][3584 1045:937 r4][3602 403:41 r4][3634 387:1356 r53][3692 1143:928 r7][3701 822:714 r4][3739 917:809 r4][3748 596:1405 r50][3803 1192:870 r10][3821 550:442 r4][3859 646:1087 r53][3914 726:618 r4][3920 512:297 r7][3934 1463:1355 r4][3964 393:1080 r53][4025 505:290 r7][4034 185:78 r4][4042 1349:986 r4][4048 880:772 r4]
2022-07-07T15:34:48.615912 [RLC-NR ] [I] DRB2: Received ACK with SN outside of TX_WINDOW, ignoring status report. ACK_SN=4061, TX_NEXT_ACK=2013.

Do you have the following snippet applied? On both the eNB and UE? Could you just double check if both the eNB and the UE have all the patches I've sent you please?

    if (not valid_ack_sn(status.ack_sn)) {
      RlcInfo("Received ACK with SN outside of TX_WINDOW, ignoring status report. ACK_SN=%d,   TX_NEXT_ACK=%d.",
              status.ack_sn,
              st.tx_next_ack);
      info_state();
      return;
    }

2013 + 2048 = 4061, so that ACK_SN should have been accepted.

alvasMan avatar Jul 08 '22 15:07 alvasMan