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.

hwiStackPeak Overrun error

Hi , 

Am getting the following error wen i run my program - 

ti.sysbios.heaps.HeapMem: line 307: out of memory: handle=0xa016aa68, size=4286568952
ti.sysbios.family.c64p.EventCombiner: line 220: E_unpluggedEvent: Event# 119 is unplugged
xdc.runtime.Error.raise: terminating execution

ROV shows 

,ti.sysbios.family.c64p.Hwi,Module,N/A,hwiStackPeak,Overrun!  

After going through several related threads in the forum - i did some debugging procedures and still the error exists . 

* Tried increasing my heap size in Properties >Linker > Basic options > Heap size : 0xFFFF

* also changed my program.stack size in the .cfg . Still the error persist.

Below is my .cfg file 

/*
 *  Copyright 2009 by Texas Instruments Incorporated.
 *
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *
 */

/* THIS FILE WAS GENERATED BY ti.sysbios.genx */

/*
 *  ======== bcp.cfg ========
 *
 */

/* Load all required BIOS/XDC runtime packages */
var Memory                      =   xdc.useModule('xdc.runtime.Memory');
var BIOS                        =   xdc.useModule('ti.sysbios.BIOS');
var HeapMem                     =   xdc.useModule('ti.sysbios.heaps.HeapMem');
var HeapBuf                     =   xdc.useModule('ti.sysbios.heaps.HeapBuf');
var Log                         =   xdc.useModule('xdc.runtime.Log');
var Task                        =   xdc.useModule('ti.sysbios.knl.Task');
var Semaphore                   =   xdc.useModule('ti.sysbios.knl.Semaphore');
var Hwi			                =	xdc.useModule('ti.sysbios.family.c64p.Hwi');
var ECM     					= 	xdc.useModule('ti.sysbios.family.c64p.EventCombiner');
var Timestamp                   =   xdc.useModule('xdc.runtime.Timestamp');
var TimestampProvider           =   xdc.useModule('ti.sysbios.family.c64p.TimestampProvider');
var Clock						= 	xdc.useModule('ti.sysbios.knl.Clock');

//Timestamp.SupportProxy          =   xdc.useModule('xdc.runtime.TimestampStd');
/* Load the CSL package */
var Csl     					= 	xdc.useModule('ti.csl.Settings');

/* Load the CPPI package */
var Cppi                        =   xdc.loadPackage('ti.drv.cppi');     

/* Load the QMSS package */
var Qmss                        =   xdc.loadPackage('ti.drv.qmss');
/* Load the PA package */
var Pa 							= 	xdc.loadPackage('ti.drv.pa');

/* Load the BCP package */
//var Bcp                         =   xdc.loadPackage('ti.drv.bcp');

/* Load the FFTC package */
//var Fftc                        =   xdc.loadPackage('ti.drv.fftc');
  

/* Load the SRIO driver package */
var Srio                        =   xdc.loadPackage('ti.drv.srio');

var System                      =   xdc.useModule('xdc.runtime.System');
SysStd                          =   xdc.useModule('xdc.runtime.SysStd');
var Startup  					=   xdc.useModule('xdc.runtime.Startup');
System.SupportProxy             =   SysStd;

System.extendedFormats = "%f";

/* Create a default system heap using ti.bios.HeapMem. */
var heapMemParams1              =   new HeapMem.Params;
heapMemParams1.size             =   8192 * 70;
heapMemParams1.sectionName      =   "systemHeap";
Program.global.heap0            =   HeapMem.create(heapMemParams1);
Program.stack 					=   16384;

/* This is the default memory heap. */
Memory.defaultHeapInstance      =   Program.global.heap0;

Program.sectMap["systemHeap"]   =   Program.platform.stackMemory;

/****** IPC - Shared Memory Settings ********/
/* IPC packages */
//Startup.firstFxns.$add('&initPlatform');

var Ipc                         =   xdc.useModule('ti.sdo.ipc.Ipc');
var cslSettings = xdc.useModule ('ti.csl.Settings');

var cacheEnabled = true;  
var cacheLineSize = 128;
var procName = null;
var procNameList = [];
var Settings                =   xdc.module('ti.sdo.ipc.family.Settings');
var Cache             		= xdc.useModule('ti.sysbios.family.c66.Cache');
var MessageQ                = xdc.module('ti.sdo.ipc.MessageQ');
var Notify                  = xdc.module('ti.sdo.ipc.Notify');
var Ipc                     = xdc.useModule('ti.sdo.ipc.Ipc');
Notify.SetupProxy           = xdc.module(Settings.getNotifySetupDelegate());
MessageQ.SetupTransportProxy= xdc.module(Settings.getMessageQSetupDelegate());

/* Use shared memory IPC */
Notify.SetupProxy           = xdc.module('ti.sdo.ipc.family.c647x.NotifyCircSetup');
MessageQ.SetupTransportProxy = xdc.module('ti.sdo.ipc.transports.TransportShmNotifySetup');
var ListMP                      =   xdc.useModule('ti.sdo.ipc.ListMP');
var GateMP                      =   xdc.useModule('ti.sdo.ipc.GateMP');
var SharedRegion                =   xdc.useModule('ti.sdo.ipc.SharedRegion');
var HeapMemMP                   =   xdc.useModule('ti.sdo.ipc.heaps.HeapMemMP');

Program.global.NOTIFYSETUP = Notify.SetupProxy.delegate$.$name;
Program.global.TRANSPORTSETUP = MessageQ.SetupTransportProxy.delegate$.$name;

var MultiProc                   =   xdc.useModule('ti.sdo.utils.MultiProc');

var memmap = Program.cpu.memoryMap;


/* Configure the shared memory heap for shared memory allocations required by the
 * CPPI and QMSS Libraries */
SharedRegion.translate = false;

/* Create a shared memory heap */
MultiProc.setConfig(null, ["CORE0"]);

/* Synchronize all processors (this will be done in Ipc_start) */
Ipc.procSync = Ipc.ProcSync_ALL;

/* To avoid wasting shared memory for Notify and MessageQ transports */
for (var i = 0; i < MultiProc.numProcessors; i++) {
    Ipc.setEntryMeta({
        remoteProcId: i,
        setupNotify: false,
        setupMessageQ: false,
    });
}

/* Create a shared memory */
SharedRegion.setEntryMeta(0,
    { base: 0x0C010000,
      len: 0x00100000,
      ownerProcId: 0,
      isValid: true,
      name: "sharemem",
    });





/* Enable BIOS Task Scheduler */
BIOS.taskEnabled			=   true;

/*
 * Enable Event Groups here and registering of ISR for specific GEM INTC is done
 * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs
 */

ECM.eventGroupHwiNum[0] = 7;
ECM.eventGroupHwiNum[1] = 8;
ECM.eventGroupHwiNum[2] = 9;
ECM.eventGroupHwiNum[3] = 10;

/*
 *  @(#) ti.sysbios.genx; 2, 0, 0, 0,275; 4-29-2009 15:45:06; /db/vtree/library/trees/avala/avala-k25x/src/
 */

BIOS.libType = BIOS.LibType_Debug;
BIOS.assertsEnabled = true;
BIOS.logsEnabled = true;
BIOS.rtsGateType = BIOS.GateHwi;
BIOS.clockEnabled = false;
BIOS.customCCOpts = "-mv6600 --abi=eabi -q -mi10 -mo -pdr -pden -pds=238 -pds=880 -pds1110  --program_level_compile -g";
Program.sectMap[".text"] = "DDR3"; 
Program.sectMap[".const"] = "DDR3"; 
Program.sectMap[".qmss"] = "MSMCSRAM"; 
Program.sectMap[".cppi"] = "MSMCSRAM"; 

  • The symptoms sound like memory might be getting corrupted.

    Using the detailed Task ROV view, have you looked at the task stack depths?

    Are they getting close to their limits?

    Does your application do a lot of Memory_alloc() calls? Are you ever freeing the memory?

    The out-of-memory error indicates that 4286568952 bytes of memory are being requested. Is that possible?

    Alan

  • Thanks Alan for responding .

           Using the detailed Task ROV view, have you looked at the task stack depths?Are they getting close to their limits?

    Ya i looked into the stack depths and its hitting the stack peak . Even if i increase the value the stack space is completely used. 

             Does your application do a lot of Memory_alloc() calls? Are you ever freeing the memory?

    They code gets this error the moment i run it .  parameters and array initialization wont  use that much memory right.The requirement of  4286568952 bytes of memory doesn't make any sense .

     

    regards , 

    vinodh 

  • Does the application ever arrive at main()? If not, something is going horribly wrong during the initialization sequence. You'll have to step through the startup code to narrow down where the problem is.

    If it does make it to main(), does it make it to the BIOS_start() call? If not, then something is going horribly wrong within main().

    If it makes it to BIOS_start(), try setting breakpoints at the start of your Task functions and see how far you get.

    Alan