Table B distributed with libecbufr was misrepresented as version 14

Bug #591772 reported by Yves Pelletier
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
libECBUFR
Fix Committed
High
vanh souvanlasy

Bug Description

The version of Tables B and D currently distributed with libecbufr contains WMO descriptors up to and including version 13 of Tables. But it is misrepresented in the Table's changelog as version 14. This will be corrected shortly with a new upload to the 0.8.2 and 0.8.3 branches. An update will be posted here when that is done.

It is very important to note that the bit width of descriptors 0-14-028, 0-14-029 and 0-14-030 is not the same between Table B version 14 and Table B version 13. These descriptors are 16 bits in version 13, and 20 bits in version 14. Therefore, if you come across BUFR synop data containing these descriptors, even as "MISSING", proper decoding of these messages imperatively requires using the appropriate version of Table B. Otherwise the decoder will use improper offsets when reading the values of all subsequent descriptors and spout bad values.

Changed in libecbufr:
importance: Undecided → High
assignee: nobody → Yves Pelletier (yves-pelletier)
status: New → In Progress
Revision history for this message
vanh souvanlasy (vanh-souvanlasy) wrote :

Fix was commited to trunk rev. 108.

Changed in libecbufr:
milestone: none → 0.8.2b4
Revision history for this message
vanh souvanlasy (vanh-souvanlasy) wrote :

It is still a problem since only 1 version of the Tables is in distribution, now 14. Not hanbling msg version 13 properly.
As a temporary solution, maybe both version should be included in the distribution,
to be loaded and use accordingly by decoder.

Revision history for this message
cpb (chris-beauregard) wrote :

If you use the "standard" CMC table naming conventions, you can try to incorporate the logic from find_best_cmc_table_filename() in the decode_cmc_table.c example into the decoder... it's not perfect, but it's an imperfect world... For encoding, you could do the same thing but require the user provide a table version as a command-line option (or use the latest table... find_best_cmc_table_filename() supports that too).

summary: - Current Table B distributed with libecbufr is misrepresented as version
- 14
+ Table B distributed with libecbufr was misrepresented as version 14
Revision history for this message
vanh souvanlasy (vanh-souvanlasy) wrote :

bufr_decoder now load Table B and D version 13 along with version 14 and used selectively
depending on message to decode, committed to trunk in rev. 124

Revision history for this message
vanh souvanlasy (vanh-souvanlasy) wrote :

Both version 13 and 14 are now included and used according, fixed with rev 124

Changed in libecbufr:
status: In Progress → Fix Committed
Revision history for this message
vanh souvanlasy (vanh-souvanlasy) wrote :

The problem now is that Tables used for decoding is always the latest when no matching version was found, and this
is not good, the best is to have the closest version to message to be decoded. i.e. decoding message version 12 with
Tables version 13 is better than using Tables version 14, which may cause decoding problem because some descriptor bit width have changed in version 14.

Changed in libecbufr:
assignee: Yves Pelletier (yves-pelletier) → vanh souvanlasy (vanh-souvanlasy)
milestone: 0.8.2b4 → 0.8.2b6
status: Fix Committed → Incomplete
status: Incomplete → In Progress
Revision history for this message
vanh souvanlasy (vanh-souvanlasy) wrote :

Now use closest Tables version instead of latest. Commited to rev. 150 of trunk and to 0.8.2 branch rev.109

Changed in libecbufr:
status: In Progress → Fix Committed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.