Admin message

Some repository views and data access features for public projects require sign-in. Please log in for full access.

RRC: A3 measId mapping leaves reportConfigId=0 causing the RRCReconfiguration encoding to fail
When a UE attaches to a gNB with multiple neighbour cells configured and default A3 event configuration is used, the generated RRCReconfiguration contains a `MeasIdToAddMod` whose `reportConfigId` is `0`. UPER encoding then fails because the ASN.1 schema constrains the field. gNB log immediately before the crash: ``` [NR_RRC] Preparing A3 Event Measurement Configuration! … [NR_RRC] Failed to encode DL-DCCH message [NR_RRC] UE 1: Failed to generate RRCReconfiguration [Thread 8 "TASK_RRC_GNB" received signal SIGSEGV] 0x… in __libc_free (mem=0xfff01feefe6b) #1 asn_set_empty #2 SET_OF_free (asn_DEF_NR_DRB_ToAddModList) #3 free_RRCReconfiguration_params (rrc_gNB.c) #4 rrc_gNB_generate_dedicatedRRCReconfiguration ``` The root cause is that there are **`continue`** paths that skip the index increment in the producer/consumer pair that maps neighbour cells to A3 reportConfigIds. Producer: `nr_rrc_get_measconfig()` in `openair2/RRC/NR/rrc_gNB.c` ``` int *neigh_a3_id = calloc_or_fail(neighbour_cells->size, sizeof(int)); // zero-filled … int i = 0; FOR_EACH_SEQ_ARR(nr_neighbour_cell_t *, neighbourCell, neighbour_cells) { … if (!a3Event) { if (default_a3_added) { neigh_a3_id[i] = 3; continue; // ← BUG: i not incremented } a3Event = get_a3_configuration(rrc, -1); if (!a3Event) { neigh_a3_id[i] = -1; continue; // ← BUG: i not incremented } default_a3_added = true; neigh_a3_id[i] = 3; } else { neigh_a3_id[i] = i + 4; } … i++; } ``` Consumer: `get_MeasConfig()` in `openair2/RRC/NR/MESSAGES/asn1_msg.c` ``` int i = 0; FOR_EACH_SEQ_ARR(nr_neighbour_cell_t *, neigh_cell, neigh_seq) { NR_ReportConfigId_t reportConfigId = neigh_a3_id[i]; if (reportConfigId == -1) continue; // ← BUG: i not incremented; … i++; } ```
issue