Opened 13 years ago

Closed 11 years ago

Last modified 11 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@…

Description

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]);

}
else
{

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 13 years ago by davidf

  • Component set to HM

Updating component after adding WD (Text) tickets

comment:6 Changed 13 years ago by davidf

  • Cc fbossen ksuehring davidf added

comment:7 Changed 13 years ago by davidf

  • Cc jct-vc@… added

comment:8 Changed 11 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 11 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)