This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMX chain stuck in exexute state

Hi Ti experts,

I am building an OMX chain as depicted below, the OMX chain includes capture, concatenation of 2 DEI components, DSP with 3 inputs and display. The example is getting to execute state, displays a few frames (4-5) and then stuck, i suspect that there is a synchronization problem because the DSP receives one input from the first DEI directly and other two inputs after the second DEI thus causing synchronization problems.

I am already familiar with connecting 2 DEI in concatenation as can be seen here http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/154259.aspx#576792 

I am also familiar with adding DSP OMX component to shared region 2 (where all other OMX components allocates their buffers) as explained in http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/144078.aspx#521166 

Also succeeded in implementation and running of OMX chain with 2 DSP inputs as depicted below:

Can anyone please help?

Thanks,
Gabi 

  • Hi TI experts,

    In order to to create a more balanced OMX chain i have created the OMX chain as depicted below:

    This OMX chain also shows 4-5 frames and stuck.

    listed below, the loggerSMDump output which indicates that there is a fatal error of unhandled exception. Can anyone please help?

    Thanks,
    Gabi 

    
    
    N:VPSS  P:2 #:01458 T:00000011|ebe3e63d S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_CmdEventHandler> @line<437> 
    N:VPSS P:2 #:01459 T:00000011|ebe44129 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_CmdEventHandler> @line<468> with error<0:ErrorNone>
    N:VPSS P:2 #:01460 T:00000011|ec3ceae7 S:Capture Driver Started!!
    N:VPSS P:2 #:01461 T:00000011|ec3d68b3 S:Priming the buffers to the Capture Driver
    N:VPSS P:2 #:01462 T:00000011|ec3dac11 S:Priming the buffers to the Capture Driver
    N:VPSS P:2 #:01463 T:00000011|ec3dec55 S:Priming the buffers to the Capture Driver
    N:VPSS P:2 #:01464 T:00000011|ec3e2ccb S:Priming the buffers to the Capture Driver
    N:VPSS P:2 #:01465 T:00000011|ec3e6d0f S:Priming the buffers to the Capture Driver
    N:VPSS P:2 #:01466 T:00000011|ec3ead65 S:Priming the buffers to the Capture Driver
    N:VPSS P:2 #:01467 T:00000011|ec3ee9b7 S:Module<OMX.TI.VPSSM3.VFCC> Entering<OMX_BASE_CB_ReturnEventNotify> @line<100>
    N:VPSS P:2 #:01468 T:00000011|ec3f4651 S:Module<OMX.TI.VPSSM3.VFCC> @<OMX_BASE_CB_ReturnEventNotify> @line<115> msg<Notify client for state transition>
    N:VPSS P:2 #:01469 T:00000011|ec3fbf11 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_CB_ReturnEventNotify> @line<221> with error<0:ErrorNone>
    N:VPSS P:2 #:01470 T:00000011|ec402501 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_PROCESS_CmdEvent> @line<786> with error<0:ErrorNone>
    N:VPSS P:2 #:01471 T:00000011|ec408b61 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_CmdEventHandler> @line<468> with error<0:ErrorNone>
    N:VPSS P:2 #:01472 T:00000011|ec40f779 S:Module<OMX.TI.VPSSM3.VFCC> Entering<OMX_BASE_CmdCompleteEventHandler> @line<485>
    N:VPSS P:2 #:01473 T:00000011|ec414cc7 S:Module<OMX.TI.VPSSM3.VFCC> Entering<OMX_BASE_PROCESS_CmdCompleteEvent> @line<811>
    N:VPSS P:2 #:01474 T:00000011|ec41a0c9 S:Module<OMX.TI.VPSSM3.VFCC> @<OMX_BASE_PROCESS_CmdCompleteEvent> @line<823> msg<Processing OMX_CommandStateSet>
    N:VPSS P:2 #:01475 T:00000011|ec450e4f S:Module<OMX.TI.VPSSM3.VFCC> Entering<OMX_BASE_DIO_Control> @line<446>
    N:VPSS P:2 #:01476 T:00000011|ec467267 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_DIO_Control> @line<452> with error<0:ErrorNone>
    N:VPSS P:2 #:01477 T:00000011|ec46e037 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_PROCESS_CmdCompleteEvent> @line<932> with error<0:ErrorNone>
    N:VPSS P:2 #:01478 T:00000011|ec474551 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_CmdCompleteEventHandler> @line<498> with error<0:ErrorNone>
    N:VPSS P:2 #:01479 T:00000011|ec47ac73 S:Module<OMX.TI.VPSSM3.VFCC> Entering<OMX_BASE_CmdEventHandler> @line<437>
    N:VPSS P:2 #:01480 T:00000011|ec4806ff S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_CmdEventHandler> @line<468> with error<0:ErrorNone>
    N:VPSS P:2 #:01481 T:00000011|ec8246fb S:Module<OMX.TI.VPSSM3.VFCC> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01482 T:00000011|ec8385f5 S:Module<OMX.TI.VPSSM3.VFCC> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01483 T:00000011|ec8496fb S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01484 T:00000011|ec84fff9 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01485 T:00000011|ec85ed7b S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01486 T:00000011|ec865621 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01487 T:00000011|ec8831eb S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01488 T:00000011|ec88c755 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01489 T:00000011|eca02dc1 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01490 T:00000011|eca1237d S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01491 T:00000011|eca56371 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01492 T:00000011|eca5d00d S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01493 T:00000011|ecbb36eb S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Entering<OMX_BASE_GetParameter> @line<664>
    N:VPSS P:2 #:01494 T:00000011|ecbbb677 S:Module<OMX.TI.VPSSM3.VFPC.DEIMDUALOUT> Leaving<OMX_BASE_GetParameter> @line<827> with error<0:ErrorNone>
    N:VPSS P:2 #:01495 T:00000012|059521d9 S:FATAL ERROR: ErrorCode:0x1. Unhandled Exception:
    N:VPSS P:2 #:01496 T:00000012|05956f5f S:Exception occurred in ThreadType_Task
    N:VPSS P:2 #:01497 T:00000012|0595a357 S:handle: 0x9ef85130.
    N:VPSS P:2 #:01498 T:00000012|0595d3c9 S:stack base: 0x9ef78928.
    N:VPSS P:2 #:01499 T:00000012|05960627 S:stack size: 0xc800.
    N:VPSS P:2 #:01500 T:00000012|059635f3 S:R0 = 0x00000000 R8 = 0x00000001
    N:VPSS P:2 #:01501 T:00000012|0596708b S:R1 = 0x80808080 R9 = 0x7f000000
    N:VPSS P:2 #:01502 T:00000012|0596a9d5 S:R2 = 0x9f29ebd0 R10 = 0x00000000
    N:VPSS P:2 #:01503 T:00000012|0596e443 S:R3 = 0x7f000000 R11 = 0x00000000
    N:VPSS P:2 #:01504 T:00000012|05971d6f S:R4 = 0x9f2e0648 R12 = 0x9ef84b88
    N:VPSS P:2 #:01505 T:00000012|059758ff S:R5 = 0x34fef0d0 SP(R13) = 0x9ef84b78
    N:VPSS P:2 #:01506 T:00000012|059793dd S:R6 = 0x00000002 LR(R14) = 0x9f55eb01
    N:VPSS P:2 #:01507 T:00000012|0597d01b S:R7 = 0x9f2e05f8 PC(R15) = 0x9f55eb92
    N:VPSS P:2 #:01508 T:00000012|05980c03 S:PSR = 0x31000000
    N:VPSS P:2 #:01509 T:00000012|05983b47 S:ICSR = 0x00400803
    N:VPSS P:2 #:01510 T:00000012|059869f5 S:MMFSR = 0x00
    N:VPSS P:2 #:01511 T:00000012|059893e3 S:BFSR = 0x82
    N:VPSS P:2 #:01512 T:00000012|0598bd59 S:UFSR = 0x0000
    N:VPSS P:2 #:01513 T:00000012|0598ea17 S:HFSR = 0x40000000
    N:VPSS P:2 #:01514 T:00000012|0599180f S:DFSR = 0x00000000
    N:VPSS P:2 #:01515 T:00000012|059946fd S:MMAR = 0x34fef0dc
    N:VPSS P:2 #:01516 T:00000012|05997563 S:BFAR = 0x34fef0dc
    N:VPSS P:2 #:01517 T:00000012|0599a487 S:AFSR = 0x00000000
    N:VPSS P:2 #:01518 T:00000012|0599d155 S:FATAL ERROR: ErrorCode:0x1. Terminating Execution...
  • Just so that we are on the same page, you are creating a third DEI component by doing a GetHandle twice on one of the DEI string names? Since each of the DEIs give one output as 422ILE and another as 420SP, your DSP component can handle multiple inputs of different color format?

    If you have access to an emulator (XDS100,510,560V2), you can recreate the fatal instruction which caused this crash. Connect to the VPSS core in CCS via the emulator. You should see that the PC of the core points to Abort. Load symbols from the VPSS M3 executable and open a 'expressions' window in CCS. Plug in the values of PC, LR and SP from the print you have posted. 

    You should see a call stack in the debug window. Please paste an image of the call stack that you see.

    Archith

  • Archith John Bency said:

    Just so that we are on the same page, you are creating a third DEI component by doing a GetHandle twice on one of the DEI string names? Since each of the DEIs give one output as 422ILE and another as 420SP, your DSP component can handle multiple inputs of different color format?

    Yes, i am creating a third DEI components by doing a GetHandle on one of the DEI string names. The DEI has 420 input and first output of 420 and second output of 422, DEI2 has 422 input and 2 422 outputs and DEI3 has 420 input and 422 output, thus DSP receive 3 inputs with the same format, the image size is the difference here each DEI output gives me a different image size.

    Archith John Bency said:

    If you have access to an emulator (XDS100,510,560V2), you can recreate the fatal instruction which caused this crash. Connect to the VPSS core in CCS via the emulator. You should see that the PC of the core points to Abort. Load symbols from the VPSS M3 executable and open a 'expressions' window in CCS. Plug in the values of PC, LR and SP from the print you have posted. 

    You should see a call stack in the debug window. Please paste an image of the call stack that you see.

    please see below (i rerun the example with the loggerSMDump and for some reason SP had a different value than what i have posted above so i used the new one, LR and PC had the same values):

  • Thanks for the screenshot. The call stack points to a line number and file name. But unfortunately as this binary is generated with compiler optimizations enabled, the line number does not mean much. Let me see on how to make a debug library available where it would be easier to localize to a C code issue. Can you specify the version of OMX here (i.e. the number in omx_xx_yy_zz_aa in your EZSDK folder). Also, do you have access to the omx source code? Then I can guide you on how to generate debug compiled binaries.

    In the meantime, in the disassembly window, it seems a LDR instruction from an invalid address lead to this issue. Can you see what address this is and try to trace it back ?

    Archith

  • Archith,

    Thank you very much for your answer.

    I am using omx_05_02_00_15.
    I don't know if i have access to OMX source code, i have access to what TI give in EZSDK. 

    Archith John Bency said:

    In the meantime, in the disassembly window, it seems a LDR instruction from an invalid address lead to this issue. Can you see what address this is and try to trace it back ?

     

    i don't know what you mean when you say "Can you see what address this is and try to trace it back ?" but i have added a larger view of the disassembly window, hope it would help.

    Thanks,
    Gabi 

  • Hi Archith,

    Would it be helpful in the debug process if i add the src files of the DSP and OMX chain (ilclient)?

    Gabi

  • I have attached a package with debug compiles xem3 binaries for omx_5_02_00_30.

    Sorry for the delay.

    Archith0333.omx_5_2_0_30_debug.zip

  • Hi Archith,

    Thank you very much for your help. Unfortunately with the debug versions of M3 you have sent me the OMX chain doesn't get stuck.
    What should i do next?

    Gabi 

  • To whom ever read this thread, case closed due to my bug.