当前位置: 首页 > 面试题库 >

遇到错误“ *** glibc检测到*** free():下一个大小无效(快速)”

姜振濂
2023-03-14
问题内容

请参阅“ MSO问题”(可能的重复项的详细列表)—C内存分配和超限范围,以获取有关紧密相关问题的信息。

开发人员环境:CentOS 4.7,Kdevelop 3.1.1,gcc 3.4.6

我运行一个Java测试客户端,该客户端使用JNI加载C ++共享库。我的应用程序包含三个组件,

  1. Java客户端
  2. C ++共享库,充当JNI包装器。(我将其称为“ wrapperlibrary”)
  3. 包含业务对象的C ++共享库。(我将其称为“业务库”)

运行客户端时,我经常会遇到错误,即*** glibc detected *** free(): invalid next size (fast): 0x080eeef8 ***。该错误发生大约10-11次,然后应用程序运行。

在Java客户端中,我首先将所需的C ++库加载到静态ctor中,如下所示:

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

语句“已加载业务库”被打印在控制台上,但之后出现错误*** glibc...

在wrapperlibrary的项目设置中,将业务库指定为从属库。因此,即使我省略了调用加载业务库并只是编写的调用,

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

然后,首先加载业务库(通过全局变量创建日志查看),然后加载包装库。控件返回到Java客户端,并且在控制台上打印“包装包装器已加载”语句。此后,将调用本机方法。但是控件永远不会到达此本地方法的实现。在此之前,错误*** glibc...再次出现。另外,如果我在本地方法调用之前插入对另一个Java类的静态方法的调用,例如,

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;

 --
 --
}

然后Try.temp()的输出永远不会被打印。

这两种方法均可能是导致问题的原因,我应该如何进行?


问题答案:

可能是Java本身链接到与您的库不同的glibc,也可能是库链接到不同的glibc。
还要检查其中一个库是否链接到glibc的调试版本(使用C++运行时库的Windows上存在该问题)。尝试针对glibc静态链接您的库,或者为了排除将包装器和业务库静态链接到一个库中的可能性。



 类似资料:
  • 我是一个新手,在做这项任务时遇到了障碍。遇到了一个PHP错误 严重性:通知 消息:未定义的属性:CI_加载程序::$db 文件名:views/templateadmin。php 电话号码:311 回溯: 文件:C:\xampp\htdocs\website\application\views\templateadmin。php行:311函数:\u错误\u处理程序 文件:C:\xampp\htdoc

  • 我试图使用MiniKube构建和部署微服务映像到运行在我的开发机器上的单节点Kubernetes集群。我正在使用谷歌的cloud-native微服务演示应用在线精品,以了解Kubernetes、Istio等技术的使用。 我在尝试构建LoadGenerator时收到这些错误。如何解决此问题?

  • 问题内容: 我使用此查询创建了一个表现 在,当我尝试使用插入一些数据时,遇到此错误。 我做错了什么? 问题答案: 不是日期,而是一个字符串。 当使用session参数的值作为格式掩码将Oracle非日期文字插入到列中时,Oracle将对其进行隐式处理( 注意:这是一个session参数,属于客户端;它不是全局设置 )。如果非日期文字与该格式匹配,则它将起作用(如果不匹配,则它将不起作用)-但是,如

  • 我咨询了很多问题,还是找不到解决我问题的办法。 我正在做一个应用程序,其中一些类具有几何图形或点类型的属性,但在做持久性测试时,一切都很顺利,直到我尝试保存一个点。 我想补充一点,我需要使用这种类型的几何图形(导入org.locationtech.jts.geom.point;)我找到的所有解决方案都是使用类型(import com.vividsolutions.jts.geom.point;)

  • 在stanford core nlp我已安装java运行时环境的文件夹中运行命令java-MX4G-CP“*”edu.stanford.nlp.pipeline.StanfordCorenlpServer-port 9000-timeout 15000时,出现以下错误: 无效的最大堆大小:-XMX4G指定的大小超过了可表示的最大大小。错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。

  • 运行以下代码: 给出以下错误: