SIGFPE in OAI UE noS1
Run OAI UE in noS1 mode with OAI eNB in noS1. Got SIGFPE when doing "ping -f" in both directions (UE -> eNB and eNB -> UE).
Transcript of the UE output.
./lte-softmodem-nos1 -d -U -C2650004029 -r 25 --ue-scan-carrier --ue-txgain 80
. . // some messages . . [PHY][I][pucch_power_cntl] [UE 0][PDSCH 9f53] frame 7965, subframe 3: Po_PUCCH 124 dBm : Po_NOMINAL_PUCCH -108 dBm, PL 61 dB, g_pucch -88 dB
Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7fffd6bed700 (LWP 16935)] 0x00000000004dff15 in ulsch_encoding (a=a@entry=0xefcc10 <ulsch_input_buffer> "#J\037\022\275\n", phy_vars_ue=phy_vars_ue@entry=0x7ffff0504010, harq_pid=harq_pid@entry=7 '\a', eNB_id=eNB_id@entry=0 '\000', tmode=, control_only_flag=control_only_flag@entry=0 '\000', Nbundled=0 '\000') at /home/openairinterface5g/openair1/PHY/LTE_TRANSPORT/ulsch_coding.c:764
764 y[q+(Q_m*((rCmux) + columnset[j]))] = ulsch->q_RI[(q+(Q_mi))%len_RI];
(gdb) where
#0 0x00000000004dff15 in ulsch_encoding (a=a@entry=0xefcc10 <ulsch_input_buffer> "#J\037\022\275\n", phy_vars_ue=phy_vars_ue@entry=0x7ffff0504010, harq_pid=harq_pid@entry=7 '\a', eNB_id=eNB_id@entry=0 '\000', tmode=, control_only_flag=control_only_flag@entry=0 '\000', Nbundled=0 '\000') at /home/openairinterface5g/openair1/PHY/LTE_TRANSPORT/ulsch_coding.c:764
#1 (closed) 0x0000000000476d1e in phy_procedures_UE_TX (phy_vars_ue=phy_vars_ue@entry=0x7ffff0504010, eNB_id=eNB_id@entry=0 '\000', abstraction_flag=abstraction_flag@entry=0 '\000', mode=normal_txrx, r_type=r_type@entry=no_relay) at /home/openairinterface5g/openair1/SCHED/phy_procedures_lte_ue.c:941
#2 (closed) 0x000000000044825a in UE_thread_tx (arg=0x7ffff0504010) at /home/openairinterface5g/targets/RT/USER/lte-ue.c:702
#3 (closed) 0x00007ffff7bc26aa in start_thread (arg=0x7fffd6bed700) at pthread_create.c:333
#4 (closed) 0x00007ffff57c4eed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 (gdb) info registers
rax 0x0 0
rbx 0x7fffeac7f040 140737132359744
rcx 0x92d7ef 9623535
rdx 0x0 0
rsi 0x0 0
rdi 0x47 71
rbp 0x7fffd6bd43a0 0x7fffd6bd43a0
rsp 0x7fffd6bd4330 0x7fffd6bd4330
r8 0x0 0
r9 0x92d7ef 9623535
r10 0x0 0
r11 0x0 0
r12 0xc 12
r13 0x1 1
r14 0x7ffff0504010 140737225179152
r15 0x2 2
rip 0x4dff15 0x4dff15 <ulsch_encoding+3685>
eflags 0x10202 [ IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) p q
$1 = 0
(gdb) p Q_m
$2 = 2 '\002'
(gdb) p r
$3 = 71
(gdb) p Cmux
$4 = 12
(gdb) p j
$5 = 0
(gdb) p q+(Q_m*((r*Cmux) + columnset[j]))
$6 = 1706
(gdb) p y[q+(Q_m*((r*Cmux) + columnset[j]))]
$7 = 2 '\002'
(gdb) p ulsch->q_RI
value has been optimized out
(gdb) p len_RI
$8 =
(gdb) p q+(Q_m*i)
$9 = 0
(gdb) p len_RI
$10 =
(gdb) p (q+(Q_m*i))%len_RI
value has been optimized out
(gdb) p i
$11 = 0
(gdb) p ulsch->O_RI
value has been optimized out
(gdb) p ulsch
$12 =
(gdb) p *ulsch
value has been optimized out
(gdb) p control_only_flag
$13 = 0 '\000'
(gdb) p Qprime_RI
$14 = 2
/////////////////////////////////////////////////////////////////////////////////
I wonder if len_RI could be 0 ?
Since it is set at line 603:
if (ulsch->O_RI == 1) { ... }
If ulsch->O_RI) is 0, then it is not set !! Then len_RI has default value which is 0