Opened 13 years ago

Closed 10 years ago

Last modified 10 years ago

#206 closed defect (fixed)

HM-4 decoder crashes on ARM

Reported by: alfonso Owned by:
Priority: major Milestone: HM-13.0
Component: HM Version: HM-4.0
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…


HM 4.0 decoder (compiled with GCC 4.5.2 on Linux32 for ARM platform) crashes with anchor streams at the first Inter picture, either with "segmentation fault" or with the following assertion failed message:

TComPrediction.cpp:501: Void TComPrediction::xPredInterBi(TComDataCU*, UInt, Int, Int, TComYuv*&, Int): Assertion `iRefIdx[iRefList] < pcCU->getSlice()->getNumRefIdx(eRefPicList)' failed.

Change History (9)

comment:1 Changed 13 years ago by fbossen

Could you clarify whether the issue occurs for all bit streams or only a subset thereof?
It may be very difficult for others to reproduce the error (and debug it) if this happens only on a specific environment.

comment:2 Changed 13 years ago by alfonso

I have checked all the reference bit streams in configurations ld-he, ld-lc, ra-he, ra-lc, and the issue always occurs. This is the output of the gdb debugger with one stream:

Program received signal SIGSEGV, Segmentation fault.
0x0000d320 in TComPic::getPOC (this=0x3030303)
at TAppDecoder/../../../../source/Lib/TLibCommon/TComPic.h:89
89 Int getPOC() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getPOC(); }

comment:3 Changed 13 years ago by alfonso

We have find that the error was caused by incorrect sign extension on a variable, which caused incorrect access to the reference pictures memory.

A possible workaround is to change the line
source/Lib/TLibCommon/TComMotionInfo.h., ~140
as follows

old version:
Int getRefIdx( Int iIdx ) const { return m_piRefIdx[iIdx] }

new version:
Int getRefIdx( Int iIdx ) const {

if ( m_piRefIdx[iIdx] >> 7 )

return (0xFFFFFF00 | m_piRefIdx[iIdx]);


return (0x00000000 | m_piRefIdx[iIdx]);



comment:4 Changed 13 years ago by fbossen

Looks like a compiler issue to me. Does your compiler define the type 'char' as signed or unsigned?
Have you tried changing the definition of 'Char' to (in TypeDef.h):
typedef signed char Char;

comment:5 Changed 12 years ago by davidf

  • Component set to HM

Updating component after adding WD (Text) tickets

comment:6 Changed 12 years ago by davidf

  • Cc fbossen ksuehring davidf added

comment:7 Changed 12 years ago by davidf

  • Cc jct-vc@… added

comment:8 Changed 10 years ago by fbossen

  • Milestone set to HM-13.0
  • Resolution set to fixed
  • Status changed from new to closed

Fixed in r3771

comment:9 Changed 10 years ago by ksuehring

Ticket #1242 has been marked as a duplicate of this ticket.

Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • Daniele Alfonso (STM)(Reporter, Participant)
  • David Flynn(Subscriber, Participant)
  • Frank Bossen(Subscriber, Participant)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)