鉴于您最近编辑中的更新屏幕截图,XS 模块中似乎存在一个错误,溢出缓冲区,这就是堆栈回溯所抱怨的。您可以在屏幕截图中看到回溯:
/lib64/libc.so.6(__fortify_fail+0x37)[0x7fb026838637]
/lib64/libc.so.6(+0xf8690)[0x7fb026836690]
/home/ex2-user/j_authority/_Inline/lib/auto/author_da35/author_da35.so(profiles_c+0x27fd)[0x7fb008a529ad]
/home/ex2-user/j_authority/_Inline/lib/auto/author_da35/author_da35.so(XS_author_profiles_c+0x32a)[0x7fb008a55afa]
因此,当 Fortify 检测到堆栈溢出时,您似乎正处于此 XS 模块的中间。这表明某个函数内部的函数局部数组会author_da35
溢出。例如,如果它调整了一些需要 32 位指针的结构的大小,但您在 64 位机器上运行,则可能会发生这种情况。(看起来你是。)或者,它可能只是分配了一个固定大小的结构,而你的数据集需要更大的东西。
环顾四周,一些其他类型的问题可能会触发“缓冲区溢出”,例如打开太多文件,但这似乎不太可能发生。
无论如何,这似乎是模块中的一个错误。
如果您不熟悉 XS,简短的描述是它是一种允许 perl 调用本机编译代码的机制。Perl 本身是解释型的,但它的 XS API 允许您将 perl 代码与 C 或 C++ 等编译语言进行接口。如果您对 XS 感兴趣,请提供几个链接:
至于解决您的问题,您需要实际更正profiles_c
. author_da35
希望您与该模块的作者关系良好。:-)
您可以通过谷歌搜索了解有关 Fortify 的更多信息FORTIFY_SOURCE
。