Skip to main content link. Accesskey S
  • Log In
  • Help
  • IBM Logo
  • IBM Notes and Domino Application Development wiki
  • All Wikis
  • All Forums
  • Home
  • Product Documentation
  • Community Articles
  • Learning Center
  • IBM Redbooks
Community Articles Product Documentation Learning Center IBM Redbooks This category Redbooks Wiki: Best Practices for Domino 8.0 Web Application Development Redbooks Wiki: Building Domino Web Applications using Domino 8.5.1 Redbooks Wiki: Creating Plugins for Lotus Notes, Sametime, and Symphony Redbooks Wiki: Lotus Domino Development Best Practices Custom Search Scope...
Search
Community Articles > Troubleshooting > Mapping agent code to NSD crash stack on AIX
  • New Article
  • Share Show Menu▼
  • Subscribe Show Menu▼

About the Original Author

Simon ODoherty
Contribution Summary:
  • Articles authored: 3
  • Articles edited: 2
  • Comments Posted: 1

Recent articles by this author

Mapping agent code to NSD crash stack on AIX

This document will explain how to map an AIX NSD crash stack to actual code that was a cause of the crash. It will not guarantee a root cause, but will assist in debugging your application to find the root cause. The documentation assumes you understand how to read an NSD.

Mapping agent code to NSD crash stack on Windows

This document will explain how to map a windows NSD crash stack to actual code that was a cause of the crash. It will not guarantee a root cause, but will assist in debugging your application to find the root cause. The documentation assumes you understand how to read an NSD.

Mapping agent code to crash stacks

The objective of this group of documentation is to show how to map an NSD crash stack to application code within an agent. This can be helpful when you are trying to debug an application but want to lower the scope of debugging to save time.

Community articleMapping agent code to NSD crash stack on AIX

Added by Simon ODoherty | Edited by IBM contributor Simon O'Doherty on May 18, 2010 | Version 4
  • Edit
  • More Actions Show Menu▼
Rate this article 1 starsRate this article 2 starsRate this article 3 starsRate this article 4 starsRate this article 5 stars
expanded Abstract
collapsed Abstract
This document will explain how to map an AIX NSD crash stack to actual code that was a cause of the crash. It will not guarantee a root cause, but will assist in debugging your application to find the root cause. The documentation assumes you understand how to read an NSD.
Tags: nsd
This document has been broken down into the coding areas related to a crash.
 
LotusScript
1. CrashStack will contain: LSITHREAD::RUN.
2. Go down the lines with "::" until you reach LSITHREAD::RUN
3. In method descriptions the following prefixes can be ignored if not used as part of a word.L A N D (may be more. These are internal flags on methods). For example: ANDatabase::ANDRevokeACL means Database::RevokeACL
4. From the lower stack line work down until your at a DispatchMethod or AdtCallBack (this can vary).

Example Stack
[1] 0xd012aac0_cond_wait_global(??, ??, ??) + 0x38c
[2] 0xd012b7a8_cond_wait(??, ??, ??) + 0x34
[3] 0xd012c390pthread_cond_wait(??, ??) + 0x18c
[4] 0xd1f61380WaitForThreadSem(??, ??) + 0xe4
[5] 0xd1f65738WaitOnNativeSemaphore(??, ??, ??, ??) + 0xd8
[6] 0xd1f6211cOSLockWriteFRWSemInt(??, ??, ??) + 0x2a8
[7] 0xd1f68244OSWaitFairEvent(??, ??) + 0x10
[8] 0xd20753c4newLkLock(DBCONTEXT_STRUCT*,LK_ID_STRUCT*,unsigned long,unsigned long,LK_INFO*,char*)(??, ??, ??, ??, ??, ??) + 0x13e4
[9] 0xd2073f44_LkLock(??, ??, ??, ??, ??, ??) + 0x10
[10] 0xd206459cLockDbReadSemCtx(??, ??) + 0x1d4
[11] 0xd20630fcLockDbROCond(??, ??, ??) + 0x108
[12] 0xd2002e88NSFDbPurgeInfoGet(??, ??, ??) + 0x30
[13] 0xd233f7d4GetDatabaseModifiedTime(??, ??) + 0xf4
[14] 0xd28a3564ReadEntries(??, ??, ??, ??, ??, ??, ??, ??) + 0x3c8
[15] 0xd2643590NIFReadEntries(??, ??, ??, ??, ??, ??, ??, ??) + 0x1bc
[16] 0xd20f03bcFindDesignNote(0x35c035c, 0x32796358, 0x80008, 0x0, 0x1, 0xd57e62ec, 0xffff0020, 0x0) + 0x3a0
[17] 0xd20f09c8NIFFindDesignNoteExt(??, ??, ??, ??, ??, ??) + 0x94
[18] 0xd5671a5cANDatabase::ANDFindView(unsigned char*,unsigned long)(0x3004ea78, 0xc, 0x0) + 0x110
[19] 0xd568098cANDatabase::LANDFindView(LSADTMSGMETHOD*)(??, ??) + 0x3c
[20] 0xd567f320ANDatabase::ANDispatchMethod(LSADTMSGMETHOD*)(??, ??) + 0x52c
[21] 0xd562cd38ANCLASSCONTROL(??, ??, ??, ??) + 0xe5c
[22] 0xd57e2868 _tag_NotesADTControl::ClassControl(LSsApiInstance*,LSIADTMSG,LSADTINSTDESC*,void*)(??, ??, ??, ??, ??) + 0x20
[23] 0xd29120b4 LSsInstance::AdtCallBack(short(*)(LSsInstance*,LSIADTMSG,LSADTINSTDESC*,void*),LSIADTMSG,LSADTINSTDESC*,void*,tagLSREGNAMETYPE)(??, ??, ??, ??,??, ??) + 0x224
[24] 0xd2966d18LScObjCli::ProdMethodCall(unsigned long,const _GUID&,unsigned short,LSsValue*)(??, ??, ??, ??, ??) + 0x38
[25] 0xd29780e0LSsThread::AdtDoProdCallout(LSsValue*,unsigned short,LSsExtCallout*)(??, ??, ??, ??) + 0xe4
[26] 0xd299bcb0LSsThread::NRun()(??) + 0xba4
[27] 0xd299e55cLSsThread::Run()(??) + 0x114


From the first line that has "::" is normally where the LS starts. Until the "LSsThread::RUN".

[18] 0xd5671a5cANDatabase::ANDFindView(unsigned char*,unsigned long)(0x3004ea78, 0xc, 0x0) + 0x110
[19] 0xd568098cANDatabase::LANDFindView(LSADTMSGMETHOD*)(??, ??) + 0x3c
[20] 0xd567f320ANDatabase::ANDispatchMethod(LSADTMSGMETHOD*)(??, ??) + 0x52c
[21] 0xd562cd38ANCLASSCONTROL(??, ??, ??, ??) + 0xe5c
[22] 0xd57e2868 _tag_NotesADTControl::ClassControl(LSsApiInstance*,LSIADTMSG,LSADTINSTDESC*,void*)(??, ??, ??, ??, ??) + 0x20
[23] 0xd29120b4 LSsInstance::AdtCallBack(short(*)(LSsInstance*,LSIADTMSG,LSADTINSTDESC*,void*),LSIADTMSG,LSADTINSTDESC*,void*,tagLSREGNAMETYPE)(??, ??, ??, ??,??, ??) + 0x224
[24] 0xd2966d18LScObjCli::ProdMethodCall(unsigned long,const _GUID&,unsigned short,LSsValue*)(??, ??, ??, ??, ??) + 0x38
[25] 0xd29780e0LSsThread::AdtDoProdCallout(LSsValue*,unsigned short,LSsExtCallout*)(??, ??, ??, ??) + 0xe4
[26] 0xd299bcb0LSsThread::NRun()(??) + 0xba4
[27] 0xd299e55cLSsThread::Run()(??) + 0x114


Clean out data not needed.
Database::FindView
Database::FindView
Database::DispatchMethod


There is no "FindView" in LotusScript so you look for the next logical method. In this case it would be "getView" So the code being executed would be:


notesDatabase.GetView( viewName )

  • Edit
  • More Actions Show Menu▼


expanded Attachments (0)
collapsed Attachments (0)
Edit the article to add or modify attachments.
expanded Versions (4)
collapsed Versions (4)
Version Comparison     
VersionDateChanged by              Summary of changes
This version (4)May 18, 2010 8:47:46 AMSimon O'Doherty  IBM contributor
3May 13, 2010 8:56:53 AMSimon O'Doherty  IBM contributor
2May 13, 2010 8:54:22 AMSimon O'Doherty  IBM contributor
1May 12, 2010 5:34:56 AMSimon ODoherty  IBM contributor
expanded Comments (0)
collapsed Comments (0)
Copy and paste this wiki markup to link to this article from another article in this wiki.
Go ElsewhereStay ConnectedHelpAbout
  • IBM Collaboration Solutions wikis
  • IBM developerWorks
  • IBM Software support
  • Twitter LinkIBMSocialBizUX on Twitter
  • FacebookIBMSocialBizUX on Facebook
  • ForumsLotus product forums
  • BlogsIBM Social Business UX blog
  • Community LinkIBM Collaboration Solutions
  • Wiki Help
  • Forgot user name/password
  • Wiki design feedback
  • Content feedback
  • About the wiki
  • About IBM
  • Privacy
  • Accessibility
  • IBM Terms of use
  • Wiki terms of use