IBM Support

LO67238: LS2J CRASH WHEN NULL RETURNED BY JAVA METHOD DECLARED AS RETURNING STRING[]

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as fixed if next.

Error description

  • Error Description￘
    Abstract:
    
    LS2J crash when null returned by Java method declared as
    returning String[]
    
    
    Problem Description:
    
    LS2J crashes when a Java method declared as returning array of
    String returns null.
    For example, using this code using the LS2J JavaObject class
         results = myJavaObject.returnNullForStringArray()
    calling this Java method
         public String[] returnNullForStringArray() {
              return null;
         }
    Results in a crash, whether the method is run on the server, or
    the client.
    
    
    Crash from this test case has been reproduced on Domino
    7.0.3FP1 and Domino 8.5.3.
    
    Crash stack from 8.5.3 Server includes
    
    j9vm24._getArrayLength@8+32
    nJAVACON.RF_Array::getValue+49
    nJAVACON.JavaMethodADT::Invoke+548
    nJAVACON.JavaObjectADT::ClassControl+731
    nnotes.LSsInstance::AdtCallBack+269
    nnotes.LScObjCli::ProdMethodCall+61
    nnotes.LSsThread::AdtCallMethodExp+154
    nnotes.LSsThread::NRun+6137
    
    Crash stack from 7.0.3 Server includes
    
    jvm.IBM_GetInterface@4+20422
    nJAVACON.JavaMethodADT::Invoke+487
    nJAVACON.JavaObjectADT::ClassControl+731
    nnotes.LSsInstance::AdtCallBack+269
    nnotes.LScObjCli::ProdMethodCall+61
    nnotes.LSsThread::AdtCallMethodExp+154
    nnotes.LSsThread::NRun+5916
    
    
    Some related cases
    
    A. No crash occurs if the method returns a String[] containing
    1 or more Strings.
    B. No crash occurs if the method is declared to return just
    String, not String[].
    C. An error indication occurs if the method returns an empty
    array of Strings, new String[]{}
    D. A similar crash occurs if String[] function returns null via
    JavaMethod Invoke().
         Set myMethod = myClass.GetMethod(
            "returnNullForStringArray",
            "()[Ljava/lang/String;" )
         results = myMethod.Invoke(myObject)
    

Local fix

  • Local Fix￘
    Have LSJ2 call the original Java method via an intermediate
    Java code subsituting an alternative value, such as new
    String[]{""} when the original method returns null.
    

Problem summary

  • This APAR is closed as FIN. We have deferred the fix to a
     future release.
    

Problem conclusion

Temporary fix

Comments

  • This APAR is associated with SPR# JDAE8RC524.
    This APAR is closed as FIN. We have deferred the fix to a
     future release.
    

APAR Information

  • APAR number

    LO67238

  • Reported component name

    DOMINO SERVER

  • Reported component ID

    5724E6200

  • Reported release

    853

  • Status

    CLOSED FIN

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-02-09

  • Closed date

    2012-04-18

  • Last modified date

    2012-04-18

  • 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

  • R853 PSN

       UP

[{"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.3","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
18 April 2012