Commit c7a16bf
committed
RRC: fix DC crasher on interleaved leg handovers (orphaned NR-leg entities)
Root cause of the long-standing test_numerology MultiCell-CBR-DL crasher
("second establishment path during interleaved leg handovers" noted in
361b471; also failed under v1.4.3-1.4.5, never baselined). Traced with
per-UE event logging: ue[4] (LTE 1029 / NR 2053), crash at t=10.05s.
Two defects, both on the teardown side:
1. HandoverController: orphaned NR-leg entities at the DC secondary.
Data-driven flow establishment (Binder::establishUnidirectionalDataConnection)
provisions NR-leg entities (MAC connection, RLC entities, bypass PDCP) for
the UE at the master's secondary gNB regardless of whether the UE's NR leg
is attached to it. If the LTE leg then hands over while the NR leg is
detached, deleteOldBuffers() cleaned only the master -- the secondary's
per-UE state was orphaned (t=5.075 provisioning, t=6.05 orphaning in the
trace). When the UE later returned to that master, re-establishment of the
same DRBs collided with the leftovers: duplicate-CID ASSERT in
LteMacBase::createOutgoingConnection (debug) / duplicate rlc-um-tx module
error (release) at t=10.05s. Fix: deleteOldBuffers() now also cleans the
old serving node's secondary (via the NR leg's controller) when the NR leg
is detached; the attached case was already handled by the forced-detachment
path. Also pass the servingNodeId argument through to the UE-side
deleteQueues()/deleteLocalPdcpEntities() calls instead of the member
(identical for all pre-existing call sites, required for the new cross-leg
call where the NR leg's member is NODEID_NONE).
2. BearerManagement::deleteLocalPdcpEntities() wiped ALL PDCP entities at any
UE, but at an NR UE this single module holds the entities of BOTH legs
(keyed by peer node). An NR-leg detach thus also deleted the LTE leg's PDCP
RX entities, leaving the LTE RLC RX entities forwarding to a dangling gate:
"Gate 'out' not connected" in UmRxEntity at t=15.03s (exposed only after
fix 1 let the run get past 10.05s). Fix: keyed (per-node) deletion at eNBs
and NR-capable UEs, wipe-all only at plain LTE UEs -- exactly the
pre-flattening per-class semantics (LtePdcpEnb/NrPdcpUe keyed with the
"delete connections related to the given master nodeB only" comment,
LtePdcpUe wipe-all).
Verified: test_numerology MultiCell-CBR-DL and MultiCell-CBR-UL now run the
full 50s in both debug and release with zero errors.
Fingerprints: full suite re-run has zero errors and exactly two justified
moves, re-recorded here:
- test_numerology/MultiCell-CBR-DL: interval extended 5s -> 20s (deferred from
1886a06, blocked on this crasher); all ingredients move with the longer
window, which now covers the interleaved DC handovers.
- dualConnectivity_multicell/SplitBearer-CBR-DL: tplx/tilx/sz moved, ~tNl
byte-identical -- the keyed PDCP cleanup changes the entity-deletion event
trajectory around handovers, while the application packet stream is
unchanged. All other rows (incl. all other DC, handover, D2D, and MEC
configs) byte-identical.1 parent 1886a06 commit c7a16bf
3 files changed
Lines changed: 28 additions & 8 deletions
File tree
- src/simu5g/stack/rrc
- tests/fingerprint
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
390 | 390 | | |
391 | 391 | | |
392 | 392 | | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
393 | 401 | | |
394 | 402 | | |
395 | | - | |
| 403 | + | |
396 | 404 | | |
397 | 405 | | |
398 | 406 | | |
| |||
401 | 409 | | |
402 | 410 | | |
403 | 411 | | |
404 | | - | |
| 412 | + | |
405 | 413 | | |
406 | 414 | | |
407 | 415 | | |
| |||
410 | 418 | | |
411 | 419 | | |
412 | 420 | | |
413 | | - | |
| 421 | + | |
414 | 422 | | |
415 | 423 | | |
416 | 424 | | |
| |||
419 | 427 | | |
420 | 428 | | |
421 | 429 | | |
422 | | - | |
| 430 | + | |
423 | 431 | | |
424 | 432 | | |
425 | 433 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
490 | 490 | | |
491 | 491 | | |
492 | 492 | | |
493 | | - | |
| 493 | + | |
494 | 494 | | |
495 | 495 | | |
496 | 496 | | |
| |||
515 | 515 | | |
516 | 516 | | |
517 | 517 | | |
518 | | - | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
519 | 531 | | |
520 | 532 | | |
521 | 533 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
75 | | - | |
| 75 | + | |
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
0 commit comments