valgrind and embedded ruby

H

Heiko Leberer

Hi all,

I'm currently testing an environment with embedding ruby and found an
issue when allocating a large amount of ruby string objects in external
C calls. Im not sure, whether I misunderstood the correct usage.

The Ruby version used is 1.8.4, own compile on red hat EL update 5.

The C environment is:
---------------------------------
#include "ruby.h"


int main (int argc, char *argv[])
{
VALUE cModule;
VALUE message;

ruby_init();
cModule = rb_define_module("CModule");

rb_require("MemCheck.rb");

for (long long l=0; l<1000LL; l++) {
// convert C string to Ruby object
message = rb_str_new2("C says Hello to Ruby."
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ");

rb_funcall(cModule, rb_intern("sendToRuby"), 1, message);
}

return 0;
}
-------------------------
The Ruby script:
-------------------------
print("This is Ruby, required MemCheck.rb\n");

module CModule
def CModule.sendToRuby(msgFromC)
end
end
--------------------------

If I use valgrind to check for memory leaks, all is OK. If I now change
the loop count from 1000LL to 10000LL, valgrind throws errors:

==7903== Conditional jump or move depends on uninitialised value(s)
==7903== at 0x806C904: gc_mark_children (gc.c:758)
==7903== by 0x806C88F: gc_mark (gc.c:731)
==7903== by 0x806C6C2: mark_locations_array (gc.c:626)
==7903== by 0x806C6EF: rb_gc_mark_locations (gc.c:639)

(in total 496 errors from 39 contexts)

Has anybody seen this behavior? Where am I wrong?

Any help is appreciated, best regards

Heiko
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top