[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

ruby and rdebug

barjunk

3/31/2008 4:07:00 AM

I'm running a ruby script like so:

ruby test.rb

and because it has some problems it eventually crashes with

'stack level too deep (SystemStackError)'.

This is a problem I'm looking into, however, if I run the program like
this:

rdebug test.rb

It doesn't crash in the same place. In fact, I haven't been able to
get it to crash at all.

What sort of things could cause this to take place? This happens in
1.8.4 and the latest 1.8.6.

I haven't finished trying to find the reason why my ruby program
crashes in the first place, but it just seems odd that it wouldn't
also crash when using rdebug.

Ideas, suggestions?

Mike B.
9 Answers

Chiyuan Zhang

3/31/2008 12:14:00 PM

0

It seems to be recursion level too deep. Have you tried to
run ruby in gdb and get a backtrace when the program faulted?
gdb /usr/bin/ruby test.rb

2008/3/31, barjunk <barjunk@attglobal.net>:
> I'm running a ruby script like so:
>
> ruby test.rb
>
> and because it has some problems it eventually crashes with
>
> 'stack level too deep (SystemStackError)'.
>
> This is a problem I'm looking into, however, if I run the program like
> this:
>
> rdebug test.rb
>
> It doesn't crash in the same place. In fact, I haven't been able to
> get it to crash at all.
>
> What sort of things could cause this to take place? This happens in
> 1.8.4 and the latest 1.8.6.
>
> I haven't finished trying to find the reason why my ruby program
> crashes in the first place, but it just seems odd that it wouldn't
> also crash when using rdebug.
>
> Ideas, suggestions?
>
> Mike B.
>
>

Marc Heiler

3/31/2008 12:30:00 PM

0

> 'stack level too deep (SystemStackError)'

I remember that usually when I have that method, there is some recursion
at work (and my fault for invoking it)

The silliest one I ever had was like this:

N = "\n" # use N for newline

variable = N
variable << ' foo'
variable << ' bar'


I am not sure this is exactly what I made wrong, but you basically see
that I somehow appended string data to the constant and then had a huge
string that was growing and growing as it was passed through multiple
methods (I am really not sure that this was the exact error, but I am
100% sure i assigned wrongly somewhere and then had the string grow
hugely)
--
Posted via http://www.ruby-....

barjunk

3/31/2008 4:46:00 PM

0

On Mar 31, 4:14 am, Chiyuan Zhang <plus...@gmail.com> wrote:
> It seems to be recursion level too deep. Have you tried to
> run ruby in gdb and get a backtrace when the program faulted?
> gdb /usr/bin/ruby test.rb
>
> 2008/3/31, barjunk <barj...@attglobal.net>:
>
> > I'm running a ruby script like so:
>
> > ruby test.rb
>
> > and because it has some problems it eventually crashes with
>
> > 'stack level too deep (SystemStackError)'.
>
> > This is a problem I'm looking into, however, if I run the program like
> > this:
>
> > rdebug test.rb
>
> > It doesn't crash in the same place. In fact, I haven't been able to
> > get it to crash at all.
>
> > What sort of things could cause this to take place? This happens in
> > 1.8.4 and the latest 1.8.6.
>
> > I haven't finished trying to find the reason why my ruby program
> > crashes in the first place, but it just seems odd that it wouldn't
> > also crash when using rdebug.
>
> > Ideas, suggestions?
>
> > Mike B.

Thanks. I have used gdb to trace the problem...I'm still working on
that. However, the curious part is that the error doesn't occur when
using rdebug....which is the part I'm currently trying to understand.

Mike B.

barjunk

4/2/2008 3:04:00 AM

0

On Mar 31, 8:46 am, barjunk <barj...@attglobal.net> wrote:
> On Mar 31, 4:14 am, Chiyuan Zhang <plus...@gmail.com> wrote:
>
>
>
> > It seems to be recursion level too deep. Have you tried to
> > run ruby in gdb and get a backtrace when the program faulted?
> > gdb /usr/bin/ruby test.rb
>
> > 2008/3/31, barjunk <barj...@attglobal.net>:
>
> > > I'm running a ruby script like so:
>
> > > ruby test.rb
>
> > > and because it has some problems it eventually crashes with
>
> > > 'stack level too deep (SystemStackError)'.
>
> > > This is a problem I'm looking into, however, if I run the program like
> > > this:
>
> > > rdebug test.rb
>
> > > It doesn't crash in the same place. In fact, I haven't been able to
> > > get it to crash at all.
>
> > > What sort of things could cause this to take place? This happens in
> > > 1.8.4 and the latest 1.8.6.
>
> > > I haven't finished trying to find the reason why my ruby program
> > > crashes in the first place, but it just seems odd that it wouldn't
> > > also crash when using rdebug.
>
> > > Ideas, suggestions?
>
> > > Mike B.
>
> Thanks. I have used gdb to trace the problem...I'm still working on
> that. However, the curious part is that the error doesn't occur when
> using rdebug....which is the part I'm currently trying to understand.
>
> Mike B.

Further testing shows that using rdebug still fails, it just takes a
few more iterations before it does. It is still wierd that it would
fail in a different spot.

Mike B.

barjunk

4/2/2008 7:38:00 AM

0

On Apr 1, 7:04 pm, barjunk <barj...@attglobal.net> wrote:
> On Mar 31, 8:46 am, barjunk <barj...@attglobal.net> wrote:
>
>
>
> > On Mar 31, 4:14 am, Chiyuan Zhang <plus...@gmail.com> wrote:
>
> > > It seems to be recursion level too deep. Have you tried to
> > > run ruby in gdb and get a backtrace when the program faulted?
> > > gdb /usr/bin/ruby test.rb
>
> > > 2008/3/31, barjunk <barj...@attglobal.net>:
>
> > > > I'm running a ruby script like so:
>
> > > > ruby test.rb
>
> > > > and because it has some problems it eventually crashes with
>
> > > > 'stack level too deep (SystemStackError)'.
>
> > > > This is a problem I'm looking into, however, if I run the program like
> > > > this:
>
> > > > rdebug test.rb
>
> > > > It doesn't crash in the same place. In fact, I haven't been able to
> > > > get it to crash at all.
>
> > > > What sort of things could cause this to take place? This happens in
> > > > 1.8.4 and the latest 1.8.6.
>
> > > > I haven't finished trying to find the reason why my ruby program
> > > > crashes in the first place, but it just seems odd that it wouldn't
> > > > also crash when using rdebug.
>
> > > > Ideas, suggestions?
>
> > > > Mike B.
>
> > Thanks. I have used gdb to trace the problem...I'm still working on
> > that. However, the curious part is that the error doesn't occur when
> > using rdebug....which is the part I'm currently trying to understand.
>
> > Mike B.
>
> Further testing shows that using rdebug still fails, it just takes a
> few more iterations before it does. It is still wierd that it would
> fail in a different spot.
>
> Mike B.

Well I never figured out why rdebug behaved differently, but after
removing all my references to rb_warn from my extension...I couldn't
get it to crash.

So for some reason I don't understand at the moment, rb_warn was
causing the errors.

Mike B.

Gerardo Santana Gómez Garrido

4/2/2008 1:46:00 PM

0

On 4/2/08, barjunk <barjunk@attglobal.net> wrote:

> Well I never figured out why rdebug behaved differently, but after
> removing all my references to rb_warn from my extension...I couldn't
> get it to crash.

Oh, it's an extension. I didn't read that before.

>
> So for some reason I don't understand at the moment, rb_warn was
> causing the errors.

Beware, because that can be deceiving. It has all the symptoms of
memory corruption. Being a C extension, it's probably that you have a
lost pointer, or writing on a memory location that you shouldn't.

--
Gerardo Santana

barjunk

4/2/2008 8:06:00 PM

0

On Apr 2, 5:46 am, Gerardo Santana Gómez Garrido
<gerardo.sant...@gmail.com> wrote:
> On 4/2/08, barjunk <barj...@attglobal.net> wrote:
>
> > Well I never figured out why rdebug behaved differently, but after
> > removing all my references to rb_warn from my extension...I couldn't
> > get it to crash.
>
> Oh, it's an extension. I didn't read that before.
>
>
>
> > So for some reason I don't understand at the moment, rb_warn was
> > causing the errors.
>
> Beware, because that can be deceiving. It has all the symptoms of
> memory corruption. Being a C extension, it's probably that you have a
> lost pointer, or writing on a memory location that you shouldn't.
>
> --
> Gerardo Santana

I'm not sure what you are saying is deceiving? Can you elaborate some
more?

Mike B.

Gerardo Santana Gómez Garrido

4/3/2008 1:06:00 AM

0

When you notice that a program crashes at random locations, it's
highly probable that it's a problem of memory corruption.

This corruption may occur when you write beyond the limits of a
variable (usually a buffer, hence "buffer overflow"). The problem may
go unnoticed at run time, until the corruption reaches an unhandled
condition or the intent to overwrite the program itself.

--
Gerardo Santana

barjunk

4/3/2008 5:34:00 AM

0

On Apr 2, 5:05 pm, Gerardo Santana Gómez Garrido
<gerardo.sant...@gmail.com> wrote:
> When you notice that a program crashes at random locations, it's
> highly probable that it's a problem of memory corruption.
>
> This corruption may occur when you write beyond the limits of a
> variable (usually a buffer, hence "buffer overflow"). The problem may
> go unnoticed at run time, until the corruption reaches an unhandled
> condition or the intent to overwrite the program itself.
>
> --
> Gerardo Santana

Thanks for clarifying. In this particular case the crashes weren't
really random...but I still think there were issues with pointers and
such.

Anyway, I appreciate the feedback.

Mike B.