IBM Support

LO52803: C API CALL DESIGNREFRESH CALLED FROM LOTUSSCRIPT CAUSES PANIC ON 64-BIT DOMINO SERVER

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as duplicate of another APAR.

Error description

  • When DesignRefresh is called from LotusScript, it causes server
    panic. This
    behavior is observed on 64-bit Domino architecture, however, the
    same Domino
    version and architecture on Windows Server 2003 (x64) works.
    
    I recreated the problem and found that the call stack appears to
    be
    misaligned.
    
    
    Actual call made from LotusScirpt:
    
    DesignRefresh("", hDb, 0, 0, 0)
    
    NSD shows:
    
    DesignRefresh(0x110176050, 0x0, 0x0, 0x0, 0x0)
    
    The 32-bit handle pushed on stack for DesignRefresh translated
    into a NULL
    value. Note that DesignRefresh signature is:
    
    STATUS LNPUBLIC DesignRefresh(
     char *Server,
     DBHANDLE  hDB,
     DWORD  dwFlags,
     ABORTCHECKPROC  AbortCheck,
     OSSIGMSGPROC  MessageProc);
    
    
    
    
    A similar issue was reported in ADEE7JRLJQ but it applies to
    Windows 64-bit (8
    byte) long handle which caused stack alignment issues.
    
    Steps to recreate the problem:
    
    Create a scheduled agent with this code:
    
    
    Declare Function AIX_NSFDbOpen Lib "libnotes_r.a" Alias
    "NSFDbOpen" (Byval
    DbPath As Lmbcs String, rethDb As Long) As Integer
    
    Declare Function AIX_NSFDbClose Lib "libnotes_r.a" Alias
    "NSFDbClose" (Byval
    rethDb As Long) As Integer
    
    Declare Function AIX_DesignRefresh Lib "libnotes_r.a" Alias
    "DesignRefresh"
    (Byval Server As String, Byval hDB As Long, Byval Flags As Long,
    Byval ABORT As
    Long, Byval OSSIGNAL As Long) As Integer
    
    Sub Initialize
    
    Dim hdb As Long
    Dim dbpath As String
    Dim sess As New notessession
    Dim db As NotesDatabase
    
    Set db=sess.CurrentDatabase
    
    dbpath = db.Server + "!!<database>.nsf"
    
    APIStatus = AIX_NSFDbOpen(dbpath, hDB)
    If APIStatus <> 0 Then
    Print "Open didn't work with Return Code = " & cstr(APIStatus)
    End
    Else
    Print "Opened database " + dbpath + " successfully with handle =
    " +
    cstr(hdb)
    End If
    
    'Commenting out the RD since it crashes the server everytime
    'APIStatus = AIX_DesignRefresh(db.server, hDB, 0, 0&, 0&)
    
    'If APIStatus <> 0 Then
    ' Print "DesignRefresh = " & APIStatus
    'End If
    
    APIStatus = AIX_NSFDbClose(hDB)
    
    Print "Closed database with return code = " + cstr(APIStatus)
    
    End sub
    

Local fix

Problem summary

Problem conclusion

Temporary fix

Comments

  • This APAR is associated with SPR# PCHE7S9VAB.
    This APAR is a duplicate of LO40738
    

APAR Information

  • APAR number

    LO52803

  • Reported component name

    DOMINO SERVER

  • Reported component ID

    5724E6200

  • Reported release

    850

  • Status

    CLOSED DUA

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-06-23

  • Closed date

    2010-12-04

  • Last modified date

    2011-01-19

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

Applicable component levels

[{"Business Unit":{"code":"BU055","label":"Cognitive Applications"},"Product":{"code":"SSKTMJ","label":"Lotus Domino"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.5","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
19 January 2011