Project

General

Profile

Bug #676

Updated by Stephen Wood over 1 year ago

 
 I don't know if this is an Analyzer decoder bug or if hcana's TIBlobModule needs to be written differently. 

 PipeliningModule::LoadBank in non multiblock uses FindIDWord to find the end of the bank by looking for a particular pattern.     When it calls TIBlobModule::LoadSlot (from hcana) it sometimes returns a pointer to the end of the bank that is too early.    One of the words in the TIBlobModule is the TI time which can be anything.    So sometimes the TI time matches the pattern that FindIDWord is looking for. 

 A non-problematic bank looks like: 

      <uint32 data_type="0x1" tag="4" num="0"> 
              0x85422301       0xff112001        0x4010002            0x223       0x8bee531b 
              0x8d400006       0xfd4f1110       0xfd4f1110 
       </uint32> 

 The 0xbee531b word is the TI time and 0x8d400006 is the trailer word pattern pattern that FindIdWord matches.    (kBlockTrailer and slot 21). 

 A problematic bank looks like: 

      <uint32 data_type="0x1" tag="4" num="0"> 
              0x85422401       0xff112001        0x4010002            0x224       0x8d6d1fbf 
              0x8d400006       0xfd4f1110       0xfd4f1110 
      </uint32> 

 Here 0x8d6d1fbf is the TI time, but it matches the pattern because FindIdWord only looks at the 10 bits. 

 I can simply ignore the length that is sent to TIBlobModule::LoadSlot, but that seems unsatisfatory. 

 I suppose the same issue could be in FindEventsInBlock for fMultiBlockMode.    If so, maybe not all the events in a block might be found if a payload word matches the block trailer.

Back