[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Re: Bug segmentation fault

Gavin Kistner

10/27/2006 4:08:00 PM

From: list-bounce@example.com
> I am trying to display the contents of large array (over 1000 rows)
> using arrayName.collect {|x| puts x.inspect}
> However the following occurs:
>
> [Bug] Segmentation fault
> ruby 1.8.5 (20006-08-25) [i386-mswin32]

I have no idea if it will make a different, but do you realize that by
calling collect you are creating an array whose entries are the return
value of puts (which is always nil). An array of over 1000 nil entries.

I think you probably want either:
arrayName.each{ |x| puts x.inspect }
or
puts arrayName.collect{ |x| x.inspect }


2 Answers

Daniel Berger

10/27/2006 4:22:00 PM

0

Gavin Kistner wrote:
> From: list-bounce@example.com
> > I am trying to display the contents of large array (over 1000 rows)
> > using arrayName.collect {|x| puts x.inspect}
> > However the following occurs:
> >
> > [Bug] Segmentation fault
> > ruby 1.8.5 (20006-08-25) [i386-mswin32]
>
> I have no idea if it will make a different, but do you realize that by
> calling collect you are creating an array whose entries are the return
> value of puts (which is always nil). An array of over 1000 nil entries.
>
> I think you probably want either:
> arrayName.each{ |x| puts x.inspect }
> or
> puts arrayName.collect{ |x| x.inspect }

True, but it shouldn't segfault in any case. I'm curious what the
objects of arrayName look like. I was not able to duplicate this
problem with a 10000 element array of simple objects.

Regards,

Dan

Robert Klemme

10/27/2006 4:55:00 PM

0

Daniel Berger wrote:
> Gavin Kistner wrote:
>> From: list-bounce@example.com
>>> I am trying to display the contents of large array (over 1000 rows)
>>> using arrayName.collect {|x| puts x.inspect}
>>> However the following occurs:
>>>
>>> [Bug] Segmentation fault
>>> ruby 1.8.5 (20006-08-25) [i386-mswin32]
>> I have no idea if it will make a different, but do you realize that by
>> calling collect you are creating an array whose entries are the return
>> value of puts (which is always nil). An array of over 1000 nil entries.
>>
>> I think you probably want either:
>> arrayName.each{ |x| puts x.inspect }
>> or
>> puts arrayName.collect{ |x| x.inspect }

This is also a nice alternative to try:

require 'pp'
pp arrayName

And, btw, in Ruby we conventionally use underscores instead of camelCase
so array_name is preferred. Of course that is a pretty meaningless
identifier so that should probably named differently altogether. :)

> True, but it shouldn't segfault in any case. I'm curious what the
> objects of arrayName look like. I was not able to duplicate this
> problem with a 10000 element array of simple objects.

Yeah, OP what objects do you have in that array? Are you using some
kind of C extension? Is this a recursive data structure?

Regards

robert