[#1207] warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...>

This message was posted to ruby-talk, but I didn't get responce from

22 messages 2003/07/01
[#1208] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/01

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1209] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/02

ts wrote:

[#1210] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/02

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1211] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1212] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/04

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1213] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1214] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/04

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1215] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1237] FTP.new with block — Gavin Sinclair <gsinclair@...>

Hi,

22 messages 2003/07/19
[#1238] Re: [Patch] FTP.new with block — ts <decoux@...> 2003/07/19

>>>>> "G" == Gavin Sinclair <gsinclair@soyabean.com.au> writes:

[#1240] Re: [Patch] FTP.new with block — Mathieu Bouchard <matju@...> 2003/07/19

[#1297] Fix for Bug 1058 — Markus Walser <walser@...>

Hi,

16 messages 2003/07/25

Re: stack problem

From: Mathieu Bouchard <matju@...>
Date: 2003-07-13 04:56:52 UTC
List: ruby-core #1231
On Sat, 12 Jul 2003, Mauricio Fern疣dez wrote:
> You can use Init_stack, see the thread starting at [ruby-talk:74400].

Thanks. If I understood correctly, I have to use it like this?



volatile long bogus_variable = 0; /* just even *try* to optimise me out of
existence! */

sigjmp_buf rescue_segfault;

static void trap_segfault (int patate) {
	fprintf(stderr,"THIS IS INSIDE A SIGHANDLER!\n");
	siglongjmp(rescue_segfault,11);
}

extern "C" void Init_stack(VALUE *addr);

static void bridge_localize_sysstack () {
	volatile long * volatile bp = (volatile long *)&bp; /* get any
stack address */
	fprintf(stderr,"sysstack top is at 0x%08lx\n",(long)bp);
	post("sysstack top is at 0x%08lx\n",(long)bp);
	signal(11,trap_segfault);
	// in this loop, segfault is overridden to mean breaking out of
the for-loop.
	if (!sigsetjmp(rescue_segfault,0)) {
		for (;;) {
			//fprintf(stderr,"sysstack: trying
0x%08lx\n",(long)bp);
			bp+=1;
			bogus_variable += *bp;
		}
	}
	bp-=1;
	signal(11,SIG_DFL); /* can't really restore it. don't know where
it was. */
	fprintf(stderr,"sysstack starts at 0x%08lx\n",(long)bp);
	post("sysstack starts at 0x%08lx\n",(long)bp);
	Init_stack((VALUE *)bp);
}


________________________________________________________________
Mathieu Bouchard                       http://artengine.ca/matju




In This Thread