About Duffbert...

Duffbert's Random Musings is a blog where I talk about whatever happens to be running through my head at any given moment... I'm Thomas Duff, and you can find out more about me here...

Email Me!

Search This Site!

Custom Search

I'm published!

Co-author of the book IBM Lotus Sametime 8 Essentials: A User's Guide
SametimeBookCoverImage.jpg

Purchase on Amazon

Co-author of the book IBM Sametime 8.5.2 Administration Guide
SametimeAdminBookCoverImage.jpg

Purchase on Amazon

MiscLinks

Visitor Count...



View My Stats

« Comcast wants to buy Disney... | Main| Book Review - The Fool's Run by John Camp »

Memory Leak in LotusScript/Java View Collections Results in Server Crash

Category Software Development

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

Gravatar Image1 - This memory leak is not small, and in fact, if you have an application with heavy http traffic which uses view collections this memory leaks crashes domino server once every few days or few hours, depending on http traffic. Does anybody has a solution to this problem, other than scheduled restarts of the server ?

Gravatar Image2 - We are also seeing some funny things with HTTP memory and server crashes. Does anyone have more information on this?

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Want to support this blog or just say thanks?

When you shop Amazon, start your shopping experience here.

When you do that, all your purchases during that session earn me an affiliate commission via the Amazon Affiliate program. You don't have to buy the book I linked you to (although I wouldn't complain!). Simply use that as your starting point.

Thanks!

Thomas "Duffbert" Duff

Ads of Relevance...