ruby native wrap c library segfault

时间:2016-11-16 08:19:54

标签: c++ c ruby ruby-native-extensions

我正试图包裹一个小library I've written in c,我想我正在努力让它运转起来。该库有一些非常可靠的测试,我通过valgrind运行它来消除任何内存泄漏和明显的问题。它本身就非常稳固。

但是,当我尝试使用ruby将其包装时,会出现段错误。包裹图书馆的Here's an example project。当运行该项目中的测试时,对库的调用会发生段错误。运行它会导致核心中止,我已经加载到gdb中进行调试,但我不确定是什么问题。核心转储说问题是on this line,但我不知道是什么导致它,因为给出的信息非常稀疏,如果我在c land中运行测试,代码运行良好。

核心转储所说的行是segfaulting

assert( yypParser->yytos!=0 );

您可以通过从根目录运行rake来重现它,从而最终生成由测试加载的共享对象的进程。我希望有更多c经验的人可以看看,并可能指出我正确的方向。

如果需要更多信息,请与我们联系。

来自核心转储的

代码段

#0  0x00007f150caa2c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007f150caa6028 in __GI_abort () at abort.c:89
#2  0x00007f150dba8d8d in die () at error.c:407
#3  rb_bug_context (ctx=ctx@entry=0x7f150f3b1b80, fmt=fmt@entry=0x7f150dbe2f6a "Segmentation fault at %p") at error.c:437
#4  0x00007f150daa45ce in sigsegv (sig=<optimized out>, info=0x7f150f3b1cb0, ctx=0x7f150f3b1b80) at signal.c:890
#5  <signal handler called>
#6  0x00007f150b96b02b in Parse (yyp=0xf9925e0, yymajor=20, yyminor=..., state=0x7ffe17b6a3a0) at parser.c:1919
#7  0x00007f150b96b8e8 in numerize (data=data@entry=0x7f150b96c1aa "one", state=state@entry=0x7ffe17b6a3a0) at ../../../../ext/example_project/fast_numerizer/fast_numerizer.c:102
#8  0x00007f150b960e0b in example_project_c_code_function () at ../../../../ext/example_project/./example_project.c:11

0 个答案:

没有答案