Skip to Main Content

Java HotSpot Virtual Machine

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Facing an error "*** glibc detected *** free(): invalid next size (fast)"

843829Feb 23 2010 — edited Feb 23 2010
Developer environment: CentOS 4.7, Kdevelop 3.1.1, gcc 3.4.6

I run a java test client that loads a C++ shared library using JNI. There are three components in my application,
a. Java client
b. C++ shared library which acts as a JNI wrapper. (I will call it "wrapperlibrary")
c. C++ shared library containing business objects. (I will call it "businesslibrary")

When I run the client I face an error very frequently which is, "*** glibc detected *** free(): invalid next size (fast): 0x080eeef8 ***”. This error comes for around 10 - 11 times and then the application runs.

In my java client, I first load the required C++ libraries in a static ctor as follows,
System.Load("/root/Desktop/libs/businesslibrary");
System.out.println("business library loaded");
System.Load("/root/Desktop/libs/wrapperlibrary");
System.out.println("wrapper library loaded");

The statement "business library loaded" gets printed on the console but after it the error *** glibc... comes.

In the project settings of wrapperlibrary, the businesslibrary is specified as a dependant library. So, even if I omit the call to

load businesslibrary and just write,
System.Load("/root/Desktop/libs/wrapperlibrary");
System.out.println("wrapper library loaded");

then firstly the businesslibrary gets loaded(seen through global variable creation logging) and then the wrapperlibrary gets loaded. The control returns back to java client and the statement "wrapper library loaded" is printed on console. After this there is a call to native method. But the control never reaches this native method's implementation. Rather before that the error *** glibc... again comes. Also if I insert a call to static method of another java class before native method call such as,

static
{
System.Load("/root/Desktop/libs/wrapperlibrary");
System.out.println("wrapper library loaded");

System.out.println(Try.temp()); //where temp is a static method of Try class which returns a string.

native method call;
--
--

}

then output of Try.temp() never gets printed.

Kindly suggest what could be the possible reasons for problem in both these approaches and how to proceed.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 23 2010
Added on Feb 23 2010
1 comment
531 views