我有一个C / C ++代码,它使用perlcall来调用perl脚本,并使用Perl版本5.8.90。由于5.8.90中的一些内存泄漏/堆损坏,我们计划使用最新版本的perl 5.12.3。
在使用5.12.3版本的libperl.so时,我们的程序在调用“PUSHMARK(SP);”时崩溃了。 我尝试在dbx中调试,但只能得到以下信息 t @ 32(l @ 32)由信号SEGV终止(故障地址没有映射)
如果有任何人发现这个问题,请告诉我。任何找到根本原因的指针都会非常有用。
答案 0 :(得分:1)
我根据我的研究结束了这个帖子。
Ysth - 感谢您提供的信息。实际上,在构建二进制文件时,我没有将新的头文件从5.12.3复制到正确的路径。使用新的头文件后,问题得到了解决。
答案 1 :(得分:-1)
如果您的程序试图访问不在程序地址空间中的内存位置,则可以这样做。
访问的内存要么属于操作系统,要么属于其他进程。
检查您的代码。