The way the packet-nr-rrc.c dissector is adding many fields for the same bytes in the packet isn't playing well with the "start_idle_count" logic that was added to new_field_info() in proto.c
When I add a debugging printf like this:
diff --git a/epan/proto.c b/epan/proto.c
index 12758f9d00..c91fc441c5 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -6833,6 +6833,8 @@ new_field_info(proto_tree *tree, header_field_info *hfinfo, tvbuff_t *tvb,
fi->hfinfo = hfinfo;
fi->start = start;
fi->start += (tvb)?tvb_raw_offset(tvb):0;
+ printf("%s start=%d max_start=%d idle=%d\n", fi->hfinfo->abbrev, fi->start, PTREE_DATA(tree)->max_start,
+ PTREE_DATA(tree)->start_idle_count);
// If our start offset hasn't advanced after adding many items it probably
// means we're in a large or infinite loop.
if (fi->start > 0) {
Even though the "start" field *is* changing over time, the "start_idle_count" keeps increasing:
per.optional_field_bit start=0 max_start=16409 idle=0
per.optional_field_bit start=1 max_start=16409 idle=0
per.optional_field_bit start=1 max_start=16409 idle=1
per.optional_field_bit start=1 max_start=16409 idle=2
per.extension_present_bit start=1 max_start=16409 idle=3
per.enum_index start=1 max_start=16409 idle=4
nr-rrc.accessStratumRelease start=1 max_start=16409 idle=5
nr-rrc.pdcp_Parameters_element start=1 max_start=16409 idle=6
per.extension_bit start=1 max_start=16409 idle=7
per.optional_field_bit start=2 max_start=16409 idle=8
per.optional_field_bit start=2 max_start=16409 idle=9
per.optional_field_bit start=2 max_start=16409 idle=10
per.optional_field_bit start=2 max_start=16409 idle=11
per.optional_field_bit start=2 max_start=16409 idle=12
per.optional_field_bit start=2 max_start=16409 idle=13
nr-rrc.supportedROHC_Profiles_element start=2 max_start=16409 idle=14
nr-rrc.profile0x0000 start=2 max_start=16409 idle=15
nr-rrc.profile0x0001 start=2 max_start=16409 idle=16
nr-rrc.profile0x0002 start=3 max_start=16409 idle=17
nr-rrc.profile0x0003 start=3 max_start=16409 idle=18
and it keeps growing:
er.enum_index start=3593 max_start=16409 idle=16405
nr-rrc.ca_BandwidthClassDL_NR start=3593 max_start=16409 idle=16406
text start=3594 max_start=16409 idle=16407
per.choice_index start=3594 max_start=16409 idle=16408
nr-rrc.BandParameters start=3594 max_start=16409 idle=16409
nr-rrc.nr_element start=3594 max_start=16409 idle=16410
per.optional_field_bit start=3594 max_start=16409 idle=16411
per.optional_field_bit start=3594 max_start=16409 idle=16412
nr-rrc.bandNR start=3594 max_start=16409 idle=16413
per.extension_present_bit start=3595 max_start=16409 idle=16414
and growing
r-rrc.FeatureSetDownlinkPerCC_Id start=15678 max_start=16409 idle=90026
per.enum_index start=15679 max_start=16409 idle=90027
nr-rrc.scellWithoutSSB start=15679 max_start=16409 idle=90028
per.enum_index start=15679 max_start=16409 idle=90029
I don't know the "start_idle_count" logic, and couldn't quite figure it out through a brief reading. It feels like it's counting wrong here, though.
Maybe he'll be able to figure out if it's doing the wrong thing in this case, *or* if the packet-nr-rrc.c dissector needs to be adjusted.
Gilbert