[#11073] segfault printing instruction sequence for iterator — <noreply@...>
Bugs item #10527, was opened at 2007-05-02 14:42
Hi,
On Thu, May 10, 2007 at 04:51:18PM +0900, Nobuyoshi Nakada wrote:
Hi,
Hi,
This seems to make valgrind much happier.
On Thu, May 17, 2007 at 11:14:35PM +0900, Paul Brannan wrote:
Hi,
Now 'a' shows up twice in the local table:
Hi,
[#11082] Understanding code: Kernel#require and blocks. — Hugh Sasse <hgs@...>
I'm trying to debug a Rails application which complains about an
On 5/4/07, Hugh Sasse <hgs@dmu.ac.uk> wrote:
On Fri, 4 May 2007, George wrote:
On Fri, May 04, 2007 at 06:18:19PM +0900, Hugh Sasse wrote:
[#11108] pattern for implementation-private constants? — David Flanagan <david@...>
Hi,
I believe there isn't a way, but I don't think it's really necessary. Just
[#11127] Bugs that can be closed — "Jano Svitok" <jan.svitok@...>
I propose closing these bugs as invalid:
[#11145] Rational comparison to 0 fails when denominator is != 1 — <noreply@...>
Bugs item #10739, was opened at 2007-05-10 22:06
Hi,
[#11169] Allow back reference with nest level in Oniguruma for Ruby again — =?ISO-8859-15?Q?Wolfgang_N=E1dasi-Donner?= <wonado@...>
Remark: I posted this text in comp.lang.ruby first, but Matz told me,
Does it make sense or is it required to write this as a RCR?
[#11176] FileUtils.rm_rf misfeature? — johan556@...
Hi!
[#11210] Pathname ascend and descend inclusive parameter — TRANS <transfire@...>
I would like to suggest that Pathname#ascend and Pathname#descend
[#11234] Planning to release 1.8.6 errata — Urabe Shyouhei <shyouhei@...>
Hi all.
On 25/05/07, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
[#11252] Init_stack and ruby_init_stack fail to reinit stack (threads problem?) — <noreply@...>
Bugs item #11134, was opened at 2007-05-25 12:14
Hi,
Nobuyoshi Nakada wrote:
[#11255] ruby_1_8_6 build problem (make install-doc) — johan556@...
Hi!
[#11271] providing better support through rubyforge tracker categories — Ryan Davis <ryand-ruby@...>
I'm going to make more categories for the trackers (bugs and patches)
[#11367] BUG: next in lambda: 1.8.6 differs from 1.8.4 and 1.9.0 — David Flanagan <david@...>
A toplevel next statement in a lambda does not return a value in 1.8.6,
[#11368] $2000 USD Reward for help fixing Segmentation Fault in GC — Brent Roman <brent@...>
Hi Brent,
ruby packer prototype: core dumps ( design review request )
Hello All.
I'm developing a ruby-packer type of thing ( i'll give more details below ),
and have run into a problem where I keep getting core dumps.
I guess I'll lay out the problem area first.
I've isolated the coredump issue to this spot:
rb_funcall( rb_cModule ,
rb_intern("require") , 1 , rb_str_new2("mu/loader") );
VALUE tmp = rb_funcall( config , rb_intern("to_s") , 0 );
If I switch the order of those calls, the process runs fine ( there's other
issues, which I'm trying to debug. could be related ).
Stepping through the debugger, the crash fails in rb_rescue2() in the
JUMP_TAG() macro when prot_tag is dereferenced ( it is null ).
This is proving to be a nasty bug to pin down, and I'm just wondering if
anybody has any comments/suggestions about the situation.
Let me give you an outline of what I'm trying to do:
We have a protocol fuzzer built with ruby. One of the features of our
product is that we give the user the option to download a single executable
P.O.C. to re-produce a crash. Since we're using ( and loving ) ruby, we
need a scheme that will allow us to both give the user that single
executable _and_ protect our I.P. The first iteration of this project is to
simply embed the scripts into the resulting executable, and override
Kernel.require. We call the various Init_* functions for extensions, and
eval() the strings when they are needed. Eventually we're gonna try to use
YARV instructions ( we've even looked into adding an opcode representation
other than SimpledataFormat ).
The sample code is below (no errors -- runs fine). I'm wondering if the
design is just too naive. Does anybody see any problems with our general
approach? I'm sorry if this whole post is a bit vague, i just really don't
know where to start with this one. If there are any requests for more
information, i'd be happy to answer them.
Thanks,
-Adam
#include<ruby.h>
struct test_resource {
char path[1024];
char loaded;
char * src;
} test_resources[] = {
/* ble.rb */
{ "ble" , 0 ,
"require \"foo\"\n"
"puts Foo.new.inspect\n"
} ,
/* foo.rb */
{ "foo" , 0 ,
"require \"bar\"\n"
"class Foo < Bar\n"
" hidden_method :baz\n"
"end\n"
} ,
/* bar.rb */
{ "bar" , 0 ,
"class Bar\n"
" def self.hidden_method(*args)\n"
" args.each do |meth|\n"
" define_method(meth) do \n"
" puts meth\n"
" end\n"
" end\n"
" end\n"
"end"
} ,
{ }
};
static VALUE resource_require_path( VALUE str ) {
char * path ;
VALUE binding, ret ;
struct test_resource * res;
/* Find the source code */
path = StringValueCStr(str);
for( res = &test_resources[0] ; res->path[0] ; res++ )
if(!strcmp(res->path,path))
break;
if(!res->path[0])
rb_bug("can't find path %s",res->path);
if( res->loaded ) return Qtrue;
/* Evaluate the string */
binding = rb_const_get(rb_mKernel,rb_intern("TOPLEVEL_BINDING"));
VALUE argv[4] = {
rb_str_new2( res->src ) ,
binding ,
rb_str_new2( res->path ) ,
INT2FIX(1)
};
ret = rb_funcall2( rb_mKernel , rb_intern("eval") , 4 , argv );
res->loaded = 1;
return ret;
}
static VALUE hooked_require( VALUE self , VALUE str ) {
return resource_require_path( str );
}
/* set the require hook */
static void hook_require() {
rb_define_global_function( "require" , hooked_require , 1 );
}
int main( int argc , char * argv[] ) {
ruby_init();
ruby_script("Test");
ruby_init_loadpath();
hook_require();
resource_require_path( rb_str_new2("ble") );
return 0;
}