# Core dump with marshal

**URL:** <https://www.ruby-forum.com/t/core-dump-with-marshal/176625>\
**Category:** Development\
**Created:** [October 3, 2009, 12:57pm UTC](https://www.ruby-forum.com/t/core-dump-with-marshal/176625 "2009-10-03T12:57:42Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [October 3, 2009, 12:57pm UTC](https://www.ruby-forum.com/t/core-dump-with-marshal/176625/1 "2009-10-03T12:57:42Z")

</div>

e$B0J2\<$N$h$&$K$9$k$He(B SEGV e$B$7$^$9!#e(B

1.9 e$B$Ge(B Marshal.dump:

class C  
def marshal\_dump  
$block.call(:marshal\_dump)  
end

```
def dump_each(&block)
  $block = block
  Marshal.dump(self)
end

```

end

o = C.new  
e = o.enum\_for(:dump\_each)  
p e.next  
GC.start

1.9 e$B$Ge(B Marshal.load:

class C  
def marshal\_dump  
nil  
end

```
def marshal_load(obj)
  $block.call(:marshal_load)
end

def C.load_each(m, &block)
  $block = block
  Marshal.load(m)
end

```

end

o = C.new  
m = Marshal.dump(o)  
e = C.enum\_for(:load\_each, m)  
p e.next  
GC.start

1.8 e$B$Ge(B Marshal.dump:

class C  
def marshal\_dump  
loop { Thread.pass }  
end  
end

o = C.new  
Thread.new { Marshal.dump(o) }  
GC.start

1.8 e$B$Ge(B Marshal.load:

class C  
def marshal\_dump  
nil  
end

```
def marshal_load(obj)
  loop { Thread.pass }
end

```

end

o = C.new  
m = Marshal.dump(o)  
Thread.new { Marshal.load(m) }  
GC.start

* * *

% ./ruby -ve ’  
class C  
def marshal\_dump  
$block.call(:marshal\_dump)  
end

def dump\_each(&block)  
$block = block  
Marshal.dump(self)  
end  
end

o = C.new  
e = o.enum\_for(:dump\_each)  
p e.next  
GC.start  
’  
ruby 1.9.2dev (2009-10-03 trunk 25205) [i686-linux]  
:marshal\_dump  
-e:16: [BUG] Segmentation fault  
ruby 1.9.2dev (2009-10-03 trunk 25205) [i686-linux]

## – control frame ---------- c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :start c:0003 p:0078 s:0008 b:0008 l:0026b4 d:001e9c EVAL -e:16 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:0026b4 d:0026b4 TOP

-e:16:in `<main>' -e:16:in `start’

## – C level backtrace information

./ruby(rb\_vm\_bugreport+0x6c) [0x815079e]  
./ruby [0x8182e0d]  
./ruby(rb\_bug+0x36) [0x8182e68]  
./ruby [0x80eadea]  
[0xb7f6c410]  
./ruby [0x8064412]  
./ruby(st\_foreach+0x1d8) [0x80f36ae]  
./ruby [0x806444c]  
./ruby(rb\_mark\_set+0x28) [0x8064476]  
./ruby [0x807fea5]  
./ruby [0x8064d0d]  
./ruby [0x80647f3]  
./ruby [0x806420f]  
./ruby [0x8064357]  
./ruby(rb\_gc\_mark\_locations+0x27) [0x8064380]  
./ruby [0x8156be5]  
./ruby [0x8156cec]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby(rb\_gc\_mark+0x28) [0x806481d]  
./ruby [0x8180b6d]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby [0x806420f]  
./ruby [0x8064357]  
./ruby(rb\_gc\_mark\_locations+0x27) [0x8064380]  
./ruby [0x814c04c]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby(rb\_gc\_mark+0x28) [0x806481d]  
./ruby [0x805fd2e]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x1d8) [0x80f36ae]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby(rb\_gc\_mark+0x28) [0x806481d]  
./ruby [0x8065d9e]  
./ruby(rb\_gc+0x1f) [0x8066b99]  
./ruby(rb\_gc\_start+0xb) [0x8065f65]  
./ruby [0x8146386]  
./ruby [0x814621f]  
./ruby [0x814575e]  
./ruby [0x8141432]  
./ruby [0x814dd99]  
./ruby(rb\_iseq\_eval\_main+0x2b) [0x814e40c]  
./ruby(ruby\_exec\_node+0x9a) [0x805e35b]  
./ruby(ruby\_run\_node+0x64) [0x805e3fc]  
./ruby(main+0x74) [0x805cf48]  
/lib/i686/cmov/libc.so.6(\_\_libc\_start\_main+0xe5) [0xb7d8c455]  
./ruby [0x805ce41]

[NOTE]  
You may have encountered a bug in the Ruby interpreter or extension  
libraries.  
Bug reports are welcome.  
For details: [http://www.ruby-lang.org/bugreport.html](http://www.ruby-lang.org/bugreport.html)

* * *

% ./ruby -ve ’  
class C  
def marshal\_dump  
nil  
end

def marshal\_load(obj)  
$block.call(:marshal\_load)  
end

def C.load\_each(m, &block)  
$block = block  
Marshal.load(m)  
end  
end

o = C.new  
m = Marshal.dump(o)  
e = C.enum\_for(:load\_each, m)  
p e.next  
GC.start  
’  
ruby 1.9.2dev (2009-10-03 trunk 25205) [i686-linux]  
:marshal\_load  
-e:21: [BUG] Segmentation fault  
ruby 1.9.2dev (2009-10-03 trunk 25205) [i686-linux]

## – control frame ---------- c:0004 p:---- s:0012 b:0012 l:000011 d:000011 CFUNC :start c:0003 p:0106 s:0009 b:0009 l:001b24 d:0014c8 EVAL -e:21 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:001b24 d:001b24 TOP

-e:21:in `<main>' -e:21:in `start’

## – C level backtrace information

./ruby(rb\_vm\_bugreport+0x6c) [0x815079e]  
./ruby [0x8182e0d]  
./ruby(rb\_bug+0x36) [0x8182e68]  
./ruby [0x80eadea]  
[0xb7fc4410]  
./ruby [0x80643e6]  
./ruby(rb\_mark\_tbl+0x28) [0x80646ab]  
./ruby [0x8082367]  
./ruby [0x8064d0d]  
./ruby [0x80647f3]  
./ruby [0x806420f]  
./ruby [0x8064357]  
./ruby(rb\_gc\_mark\_locations+0x27) [0x8064380]  
./ruby [0x8156be5]  
./ruby [0x8156cec]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby(rb\_gc\_mark+0x28) [0x806481d]  
./ruby [0x8180b6d]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby [0x806420f]  
./ruby [0x8064357]  
./ruby(rb\_gc\_mark\_locations+0x27) [0x8064380]  
./ruby [0x814c04c]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby(rb\_gc\_mark+0x28) [0x806481d]  
./ruby [0x805fd2e]  
./ruby [0x8064ce9]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x1d8) [0x80f36ae]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x80643ac]  
./ruby(st\_foreach+0x6b) [0x80f3541]  
./ruby [0x80643e6]  
./ruby [0x8064b26]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby [0x8064ac8]  
./ruby [0x80647f3]  
./ruby(rb\_gc\_mark+0x28) [0x806481d]  
./ruby [0x8065d9e]  
./ruby(rb\_gc+0x1f) [0x8066b99]  
./ruby(rb\_gc\_start+0xb) [0x8065f65]  
./ruby [0x8146386]  
./ruby [0x814621f]  
./ruby [0x814575e]  
./ruby [0x8141432]  
./ruby [0x814dd99]  
./ruby(rb\_iseq\_eval\_main+0x2b) [0x814e40c]  
./ruby(ruby\_exec\_node+0x9a) [0x805e35b]  
./ruby(ruby\_run\_node+0x64) [0x805e3fc]  
./ruby(main+0x74) [0x805cf48]  
/lib/i686/cmov/libc.so.6(\_\_libc\_start\_main+0xe5) [0xb7de4455]  
./ruby [0x805ce41]

[NOTE]  
You may have encountered a bug in the Ruby interpreter or extension  
libraries.  
Bug reports are welcome.  
For details: [http://www.ruby-lang.org/bugreport.html](http://www.ruby-lang.org/bugreport.html)

* * *

% ./ruby -ve ’  
class C  
def marshal\_dump  
loop { Thread.pass }  
end  
end  
o = C.new  
Thread.new { Marshal.dump(o) }  
GC.start  
’  
ruby 1.8.8dev (2009-10-02 revision 25186) [i686-linux]  
zsh: segmentation fault ./ruby -ve

% ./ruby -ve ’  
class C  
def marshal\_dump  
nil  
end

def marshal\_load(obj)  
loop { Thread.pass }  
end  
end

o = C.new  
m = Marshal.dump(o)  
Thread.new { Marshal.load(m) }  
GC.start  
’  
ruby 1.8.8dev (2009-10-02 revision 25186) [i686-linux]  
zsh: segmentation fault ./ruby -ve
