Memory Leak in LotusScript/Java View Collections Results in Server Crash
This one hasn't bitten me yet, but it has the potential... just came out today from the KnowledgeBase...
Memory Leak in LotusScript/Java View Collections Results in Server Crash
Document Number:
1140402
Problem
There is a small memory leak in LotusScript and Java view collections that results in Domino HTTP/AMgr "C++ run time" abnormal termination.
Content
In Domino Release 5.x or Notes Domino 6.x, a customer may see an abnormal termination of HTTP or Agent Manager that results in "C++ Run Time Error". A RIP or NSD is not produced.
Diagnostics collected indicate that the
crash occurs while executing an agent either scheduled, or via the web.
When using MSVC or WinDBG to collect call stacks, one sees the following
call stack, or one similar to it - note the function LSBEnew() is where
the exception occurs.
LSBEnew(unsigned long 552) line 396
operator new(unsigned int 552) line
299 + 9 bytes
ANViewEntry::ANGetPropObject(unsigned
short 1991) line 602 + 10 bytes
ANViewEntry::ANGetProp(LSADTINSTDESC
* 0x086c24fc, LSADTMSGPROP * 0x086c2568) line 645 + 16 bytes
ANCLASSCONTROL(LSsApiInstance * 0x0cab36b8,
LSIADTMSG LSI_ADTMSG_PROP_GET, LSADTINSTDESC * 0x086c24fc, void * 0x086c2568)
line 1275
_tag_NotesADTControl::ClassControl(_tag_NotesADTControl
* const 0x140efe0c, LSsApiInstance * 0x0cab36b8, LSIADTMSG LSI_ADTMSG_PROP_GET,
LSADTINSTDESC * 0x086c24fc, void * 0x086c2568) line 56
LSsInstance::AdtCallBack(LSsInstance
* const 0x0cab36b8, short (LSsInstance *, LSIADTMSG, LSADTINSTDESC *, void
*)* 0x08343a00 ANCLASSCONTROL(LSsApiInstance *, LSIADTMSG, LSADTINSTDESC
*, void *), LSIADTMSG LSI_ADTMSG_PROP_GET, LSADTINSTDESC * 0x0a656664,
void * 0x086c2568, tagLSREGNAMETYPE LSI_REGNAME_LMBCS) line 1619 + 28 bytes
LScObjCli::GetPropertyData(LScObjCli
* const 0x0a656628, unsigned long 1991, unsigned short 521, unsigned short
192, LSsModule * 0x0e2b5c08, LSsValue * 0x0dd24ce8, int 0) line 260 + 39
bytes
LScObjCli::GetProperty(LScObjCli * const
0x0a656628, LSsModule * 0x0e2b5c08, unsigned short 32852, LSsValue * 0x0dd24ce8,
int 0) line 427
LSsThread::AdtGetPropVal(LSsThread *
const 0x0dd248b8, LSsModule * 0x0e2b5c08, unsigned short 32852, LScObjCli
* 0x0a656628, LSsValue * 0x0dd24ce8, int 0) line 295
LSsThread::NRun(LSsThread * const 0x0dd248b8)
line 567
LSsThread::Run(LSsThread * const 0x0dd248b8)
line 1772 + 9 bytes
LSsThread::ExecuteProc(LSsThread * const
0x0dd248b8, LSsModule * 0x0e2b5c08, unsigned short 3860, unsigned short
0, LSsValue * 0x00000000, unsigned short 256) line 487
LSsInstance::Run(LSsInstance * const
0x0cab36b8, LSsModule * 0x0e2b5c08, unsigned short 3860, unsigned short
0, LSsValue * 0x00000000, unsigned short 0) line 531 + 45 bytes
LSIThread::Run(LSIThread * const 0x03c29e74,
unsigned long 0, int 1) line 89 + 73 bytes
LSIThread::RunToCompletion(LSIThread
* const 0x03c29e74, unsigned long 0, int 1) line 142 + 20 bytes
CLSIDocument::RunScript(CLSIDocument
* const 0x03c280f4, void * 0x0000018e, short 1, char * 0x01a2f720 `string',
short 0, unsigned long 0, execsecctx * 0x00000000) line 311 + 18 bytes
CRawActionLotusScript::Run(CRawActionLotusScript
* const 0x03c20134, CDefActionCtx * 0x03c260f4, void * 0x00000246, unsigned
long * 0x086c2e20) line 2174 + 70 bytes
CRawAction::Run(CRawAction * const 0x03c21a74,
CDefActionCtx * 0x03c260f4, void * 0x00000246, unsigned long * 0x086c2e74)
line 1041 + 24 bytes
CRawAction::Execute(CRawAction * const
0x03c21a74, CDefActionCtx * 0x03c260f4) line 760 + 21 bytes
CAssistant::RunAlone(CAssistant * const
0x03c2b0f4, CDefActionCtx * 0x03c260f4) line 4476 + 19 bytes
CAssistant::Run(CAssistant * const 0x03c2b0f4,
tagASSISTRUNCTXSTRUCT * 0x086c39e4) line 4259 + 16 bytes
AgentRun(void * 0x03c2b0f4, void * 0x03c260f4,
void * 0x00000000, unsigned long 16) line 825 + 13 bytes
NAgent::Run() line 223 + 30 bytes
NFormula::ExtensionProc(unsigned short
237, unsigned short 2, unsigned long * 0x086d8910, void * * 0x086d8ab4,
void * * 0x086d8904, unsigned long * 0x086d8908) line 2380
INotesCompExtProc(void * 0x09d880f8,
void * 0x086da57c, unsigned short 237, void * 0x00000246, unsigned short
2, unsigned long * 0x086d8910, void * * 0x086d8ab4, void * * 0x086d8904,
unsigned long * 0x086d8908) line 1345 + 34 bytes
ProcessCOMPEXT(COMPUTE * 0x09d880f8)
line 79 + 71 bytes
ComputeEvaluate(COMPUTE * 0x09d880f8,
unsigned short 4, unsigned short 0, int 0) line 302
ComputeMainFormula(COMPUTE * 0x09d880f8,
int 0, int * 0x086da430, int * 0x00000000, int * 0x00000000, int * 0x00000000,
unsigned long * 0x00000000, UNIVERSALNOTEID_tag * 0x00000000) line 256
+ 23 bytes
NSFComputeEvaluate(void * 0x09d880f8,
void * 0x00000246, void * * 0x086da2ec, unsigned short * 0x086da238, int
* 0x086da430, int * 0x00000000, int * 0x00000000) line 118 + 29 bytes
NFormula::Evaluate(NValue & {...},
int * 0x086da430) line 376 + 39 bytes
NFormula::Evaluate() line 472 + 22 bytes
NDocNote::HandleSaveAgent(BasicSafeAryPtr<unsigned
char> & {...}, int & 0) line 1640
NDocNote::SaveDoc(BasicSafeAryPtr<unsigned
char> & {...}, int & 0) line 2038 + 19 bytes
CmdHandlerBase::WriteDoc(Cmd & {...},
NDocNote & {...}) line 329 + 16 bytes
CmdHandlerBase::HandleOpenFormCmd(OpenFormCmd
* 0x08854a10, Cmd * 0x00000000) line 167 + 22 bytes
CmdHandlerBase::PrivHandle(Cmd * 0x08854a10,
Cmd * 0x00000000) line 113 + 19 bytes
CmdHandler::PrivHandle(Cmd * 0x08854a10)
line 73 + 16 bytes
CmdHandler::Handler(Cmd * 0x08854a10,
void * 0x03cc2748) line 117 + 15 bytes
Cmd::Execute() line 1040 + 20 bytes
InotesHTTPProcessRequest(_InotesHTTPrequest
* 0x086f75f8) line 1346 + 11 bytes
InotesProcessReq(_HTRequest * 0x086f5fb0)
line 579 + 9 bytes
HTAA_checkAuthorization(_HTRequest *
0x086f5fb0, void * 0x086f2ee0) line 1056 + 9 bytes
RedirectionOntheFly(_HTRequest * 0x086f5fb0,
void * 0x086f2ee0) line 1078 + 13 bytes
HTHandle(void * 0x086f2ee0) line 847
+ 13 bytes
HTSession(_ROTS {...}, void * 0x086f2ee0)
line 532 + 9 bytes
HotThread(void * 0x03d70554) line 970
+ 28 bytes
MSVCRT! 7800a27b()
KERNEL32! 77e8758a()
This crash is the result of a slow/small
memory leak when using view collections in either LotusScript or Java.
Eventually, the LSXBE module will exhaust its available pool, and will
encounter an exception when calling LSBEnew(). Due to a defect, this exception
is not caught, but instead falls to the OS, resulting in an unhandled exception
that manifests itself as a "C++ run time error".
This issue has been reported to Lotus
software Quality Engineering, and will be addressed in a future maintentance
release of Domino Release 6. Both the underlying memory leak and the defect
in handling the out of memory exception will be addressed.



Comments
Posted by nick At 07:54:58 On 06/05/2006 | - Website - |
Posted by Peyton At 11:51:07 On 31/05/2007 | - Website - |