JNI lib crash, with a change in a .c file which is not included inthe Makefile

Discussion in 'C++' started by aqura, Sep 9, 2011.

  1. aqura

    aqura Guest

    We are facing an unusual problem, our JNI lib crashes at load time. we
    use CentOS 5.4/G++ and VS2005 for development.

    scenario: we are currently working on an enhancement in our product
    and wanted to pass the new information back to the Java server code
    using JNI. our C/C++ code works fine and we have tested it by running
    for around 6 hours or so in our dev environment. we have updated two
    result structure(which were already present) with one long value each
    to pass on the result of our new enhancement.

    when we updated the JNI code to pass on the result to Java code, we
    found that Java server is crashing while loading JNI, we did debugging
    and found that JNI lib crashes, even, when we do not have our changes
    in JNI lib code base.

    in our further debugging we found that, JNI Makefile includes a .c
    file(aa.c), which has a couple of our changes for the new enhancement;
    we started with commenting our changes in this aa.c file one by one
    and found that the crash happens only when we have BBB.cpp::method1()
    call(which we have added, as part of our new enhancement).

    The unusual part is, this .c file(aa.c) is not needed in the JNI lib
    and we do not have any methods of aa.c called from JNI lib; Now we
    have removed aa.c from the JNI Makefile and compile just fine, but
    still crashes when we have BBB.cpp::method1() call, if we remove this
    method1() call then it works fine.

    we are not sure, why/how it is linking to a file which is not
    included, in the Makefile and crashing.

    this is the error log we see

    AgentServer#0 started: OK 12750 [Connection#Cnx:#0.0.1026:0 -
    Session#c0s1] ERROR com.xx.xxx.xxxx - Unable to load JNI BBBController
    Library java.lang.UnsatisfiedLinkError: /opt/XXXXX/lib/libjnixxx.so:
    Can't load IA 32-bit .so on a IA 32-bit platform at
    java.lang.ClassLoader$NativeLibrary.load(Native Method) at
    java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751) at
    java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676) at
    java.lang.Runtime.loadLibrary0(Runtime.java:822) at
    java.lang.System.loadLibrary(System.java:993)

    Please suggest, any idea's would be appreciated.

    Thanks in advance,

    Aqura
     
    aqura, Sep 9, 2011
    #1
    1. Advertising

  2. aqura

    jacob navia Guest

    Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    Le 09/09/11 10:44, aqura a écrit :
    > We are facing an unusual problem, our JNI lib crashes at load time. we
    >

    [snip]

    > Please suggest, any idea's would be appreciated.
    >
    > Thanks in advance,
    >
    > Aqura


    1) This is a difficult problem, try to hire a consultant to do that for
    you...

    2) But anyway: Did you change the compiler version between the old
    version and the new one? This looks like a binary incompatibility.

    3) What do you mean by "crashes at load time"? A segmentation fault
    or just an error message?

    If it is an error message it is probably 100% a compiler version
    issue. Restore your old compiler and recompile.
     
    jacob navia, Sep 9, 2011
    #2
    1. Advertising

  3. aqura

    aqura Guest

    Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    On Sep 9, 2:17 pm, jacob navia <> wrote:
    > Le 09/09/11 10:44, aqura a crit :> We are facing an unusual problem, our JNI lib crashes at load time. we
    >
    > [snip]
    >
    > > Please suggest, any idea's would be appreciated.

    >
    > > Thanks in advance,

    >
    > > Aqura

    >
    > 1) This is a difficult problem, try to hire a consultant to do that for
    > you...
    >
    > 2) But anyway: Did you change the compiler version between the old
    > version and the new one? This looks like a binary incompatibility.
    >
    > 3) What do you mean by "crashes at load time"? A segmentation fault
    >     or just an error message?
    >
    >     If it is an error message it is probably 100% a compiler version
    > issue. Restore your old compiler and recompile.


    Hello Jacob,

    Thanks for replying.

    we are getting

    ERROR com.xx.xxx.xxxx - Unable to load JNI BBBController
    Library java.lang.UnsatisfiedLinkError: /opt/XXXXX/lib/libjnixxx.so:
    Can't load IA 32-bit .so on a IA 32-bit platform at

    it is an Error message, which causes application running on TOMCAT to
    stop.

    Aqura
     
    aqura, Sep 9, 2011
    #3
  4. aqura

    jacob navia Guest

    Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    Le 09/09/11 12:41, aqura a écrit :
    >>
    >> 3) What do you mean by "crashes at load time"? A segmentation fault
    >> or just an error message?
    >>
    >> If it is an error message it is probably 100% a compiler version
    >> issue. Restore your old compiler and recompile.

    >
    > Hello Jacob,
    >
    > Thanks for replying.
    >
    > we are getting
    >
    > ERROR com.xx.xxx.xxxx - Unable to load JNI BBBController
    > Library java.lang.UnsatisfiedLinkError: /opt/XXXXX/lib/libjnixxx.so:
    > Can't load IA 32-bit .so on a IA 32-bit platform at
    >
    > it is an Error message, which causes application running on TOMCAT to
    > stop.



    (1)
    For System.loadLibrary() use the short name only, i.e. no path prefix
    or dll extension, and make sure the file is in java.library.path or
    your search PATH. For example:

    System.loadLibrary("sampleDLL2");

    For System.load(), specify the full path and filename. For example:
    System.load("C:/sampleDLL2.dll");

    Did you check those things?
     
    jacob navia, Sep 9, 2011
    #4
  5. aqura

    aqura Guest

    Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    On Sep 9, 4:52 pm, jacob navia <> wrote:
    > Le 09/09/11 12:41, aqura a écrit :
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    > >> 3) What do you mean by "crashes at load time"? A segmentation fault
    > >>      or just an error message?

    >
    > >>      If it is an error message it is probably 100% a compiler version
    > >> issue. Restore your old compiler and recompile.

    >
    > > Hello Jacob,

    >
    > > Thanks for replying.

    >
    > > we are getting

    >
    > > ERROR com.xx.xxx.xxxx - Unable to load JNI BBBController
    > > Library java.lang.UnsatisfiedLinkError: /opt/XXXXX/lib/libjnixxx.so:
    > > Can't load IA 32-bit .so on a IA 32-bit platform at

    >
    > > it is an Error message, which causes application running on TOMCAT to
    > > stop.

    >
    > (1)
    > For System.loadLibrary() use the short name only, i.e. no path prefix
    > or dll extension, and make sure the file is in java.library.path or
    > your search PATH. For example:
    >
    > System.loadLibrary("sampleDLL2");
    >
    > For System.load(), specify the full path and filename. For example:
    > System.load("C:/sampleDLL2.dll");
    >
    > Did you check those things?


    Hi Jacob,

    This is a existing source code, where everything was working fine.
    the source code, we have taken from the repository and just build it,
    without making any changes
    and we see the crash.
    if we leave the original binary, the server runs fine.

    Aqura
     
    aqura, Sep 9, 2011
    #5
  6. aqura

    Edek Guest

    Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    On 09/09/2011 10:44 AM, aqura wrote:
    > We are facing an unusual problem, our JNI lib crashes at load time. we
    > use CentOS 5.4/G++ and VS2005 for development.
    >


    [...]

    > to pass on the result of our new enhancement.
    >

    [...]

    > call(which we have added, as part of our new enhancement).

    [...]

    I just love the word 'enhancement' used in this
    context.

    >
    > this is the error log we see
    >
    > AgentServer#0 started: OK 12750 [Connection#Cnx:#0.0.1026:0 -
    > Session#c0s1] ERROR com.xx.xxx.xxxx - Unable to load JNI BBBController
    > Library java.lang.UnsatisfiedLinkError: /opt/XXXXX/lib/libjnixxx.so:
    > Can't load IA 32-bit .so on a IA 32-bit platform at
    > java.lang.ClassLoader$NativeLibrary.load(Native Method) at
    > java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751) at
    > java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676) at
    > java.lang.Runtime.loadLibrary0(Runtime.java:822) at
    > java.lang.System.loadLibrary(System.java:993)


    - ldd the lib in question, with same path as Java does it
    - make sure there is no uncaught exception
    - make sure you compile against the right headers
    - google
    - try getting obtaining the same result with a simple test,
    things to try are countless (exception, unclean build (Makefiles),
    JNI API misuse, .so depended on another DSO together with placing
    them on different paths and with different -Djava.library.path
    settings, DSO with unresolved symbols like using newer another DSO's
    headers than the other DSO itself, using relative paths, or absolute
    paths, full lib name, or just a short name, checking -rpaths and
    sonames, and the list goes on)

    HTH

    Edek
     
    Edek, Sep 9, 2011
    #6
  7. aqura

    jacob navia Guest

    Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    Le 09/09/11 16:05, Edek a écrit :
    - ldd the lib in question, with same path as Java does it
    > - make sure there is no uncaught exception
    > - make sure you compile against the right headers
    > - google
    > - try getting obtaining the same result with a simple test,
    > things to try are countless (exception, unclean build (Makefiles),
    > JNI API misuse, .so depended on another DSO together with placing
    > them on different paths and with different -Djava.library.path
    > settings, DSO with unresolved symbols like using newer another DSO's
    > headers than the other DSO itself, using relative paths, or absolute
    > paths, full lib name, or just a short name, checking -rpaths and
    > sonames, and the list goes on)
    >
    > HTH
    >
    > Edek
    >


    Yes, the list is endless. I thinkthat has to be done by an expert
    at their site. Hint: I am not that expert, this looks like those
    nightmarish problems to solve to me :)
     
    jacob navia, Sep 9, 2011
    #7
  8. Re: JNI lib crash, with a change in a .c file which is not includedin the Makefile

    On 9/9/2011 4:44 AM, aqura wrote:
    > We are facing an unusual problem, our JNI lib crashes at load time. we
    > use CentOS 5.4/G++ and VS2005 for development.
    > [..]
    > this is the error log we see
    >
    > AgentServer#0 started: OK 12750 [Connection#Cnx:#0.0.1026:0 -
    > Session#c0s1] ERROR com.xx.xxx.xxxx - Unable to load JNI BBBController
    > Library java.lang.UnsatisfiedLinkError: /opt/XXXXX/lib/libjnixxx.so:
    > Can't load IA 32-bit .so on a IA 32-bit platform at
    > java.lang.ClassLoader$NativeLibrary.load(Native Method) at
    > java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751) at
    > java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676) at
    > java.lang.Runtime.loadLibrary0(Runtime.java:822) at
    > java.lang.System.loadLibrary(System.java:993)
    >
    > Please suggest, any idea's would be appreciated.


    Try asking in 'gnu.g++.help' newsgroup. Java newsgroup might be useful
    as well. Seems like your question really not about the C++ *language*,
    is it?

    V
    --
    I do not respond to top-posted replies, please don't ask
     
    Victor Bazarov, Sep 9, 2011
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Sébastien de Mapias
    Replies:
    16
    Views:
    491
    Army1987
    Feb 14, 2008
  2. Jethrie-JDuprez in the news
    Replies:
    4
    Views:
    1,391
    Mayeul
    Apr 26, 2009
  3. Hidekazu IWAKI
    Replies:
    0
    Views:
    527
    Hidekazu IWAKI
    Dec 15, 2009
  4. Zeynel
    Replies:
    1
    Views:
    564
    alex23
    Dec 6, 2010
  5. Thomas Jollans
    Replies:
    15
    Views:
    416
    Steven D'Aprano
    Jul 16, 2011
Loading...

Share This Page