Failed to store value, maximum exceeded. .. UBE in error *jdeRemoveDataPtr()*

[email protected]

Active Member
we have ube calling same instace after 1000 records.

UBE(1st run)--------process 1000 record ,call itself--------ube(2nd run)

for 1st run it is workig fine but for 2nd run it is giving below error .

has anyone faced this earlier ,

15917/-173816064 WRK:Starting jdeCallObject Mon Mar 13 16:53:00.042727 b5542dsd.c1498
Cleanup Caches for Order 00100/DS/90325172 - PEID=15917, TCID=31585, JOBS-01=31584, JOBS-02=0, JOBS-03=0, JOBS-04=0, JOBS-05=0, JOBS-06=0, JOBS-07=0, JOBS-08=0, JOBS-09=0, JOBS-10=0
Stats:


15917/-173816064 WRK:Starting jdeCallObject Mon Mar 13 16:53:01.084467 jdb_utl1.c2644
JDB9900600 - Failed to store value, maximum exceeded. Probable cause is forgetting to call jdeRemoveDataPtr()

15917/-173816064 WRK:Starting jdeCallObject Mon Mar 13 16:53:01.085169 jdb_utl1.c2644
JDB9900600 - Failed to store value, maximum exceeded. Probable cause is forgetting to call jdeRemoveDataPtr()


INFO: Entering kernel signal handler, process exiting soon: iParam: 1489420381
INFO: Entering kernel signal handler, with signal: iParam: 0000000011
INFO: In kernel signal handler, starting alarm handler: iParam: 1489420382
INFO: Done setting IPC Handle State structures to abandoned, process exiting immediately: iParam: 1489420382

can some help, how to investigate or how shall i trace it
 

BOster

Legendary Poster
So I am going to state the extremely obvious - its going to sound like I just re-worded your post because the answer is in the log message.

You have a resource leak in a BSFN(s) in your UBE or in how your UBE calls these BSFNs. In other words a BSFN some place is calling jdeStoreDataPtr and the same or another BSFN some place else needs to call jdeRemoveDataPtr on the returned handle. This could be a bug in the BSFN(s) or, more likely this is a bug in the UBE or a design error in the UBE process.

jdeStoreDataPtr is a way to pass a C memory pointer from one BSFN to another as handle. It is basically implemented as a fixed sized array with 1000 elements for a given user session. So unlike a generic memory leak, this type of leak will run out of resources very quickly.

You will have to debug the UBE and the called BSFNs to find out a) what is calling jdeStoreDataPtr and b) what should be calling jdeRemoveDataPtr and of course why its not being called. More than likely the UBE calls a BSFN that returns a pointer handle via jdeStoreDataPtr but the UBE never calls the BSFN needed to release the pointer handle or it doesn't correctly pass the returned handle to the BSFN responsible for free'ing it.
 

[email protected]

Active Member
I have used F4211 Get Sales Detail Row to get row and insert into ledger file but forgot to free
VA evt_F42199_GENLNG <- BF idPtrToF4211Record poniter
F4211 Get Sales Detail Row
BF mnDocumentOrderInvoiceE -> BF mnOrderNumber
BF szOrderType -> BF szOrderType
BF szCompanyKeyOrderNo -> BF szKeyCompany
VA evt_LineNumber_LNID -> BF mnLineNumber
"1" -> BF cCallType
"1" -> BF cReturnPtr
VA evt_F42199_GENLNG <- BF idPtrToF4211Record


This allows me to write only 999 lines to the ledger and then throw given the error.
solution:

after

F42119 / F42199 Write Sales History / Ledger
this call i have used B41B0510 free bulk pointer and it works for me.
 
Top