# Segfault in 1.8.1p3

**URL:** <https://rubytalk.org/t/segfault-in-1-8-1p3/9259>\
**Category:** ruby-talk\
**Created:** [9 December 2003 13:24 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259 "2003-12-09T13:24:24Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [9 December 2003 13:24 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/1 "2003-12-09T13:24:24Z")

</div>

Unfortunately, I don’t have much information at this point, but here’s  
what I do have:

[2003-12-08 12:55:39] INFO WEBrick::HTTPServer#start: pid=22231  
port=2222  
/usr/lib/ruby/1.8/timeout.rb:47: [BUG] Segmentation fault  
ruby 1.8.1 (2003-12-05) [i386-linux]

timeout.rb line 47 seems innocuous enough; it simply kills the timeout  
thread if it is still running. Any ideas?

If I discover anything else, I’ll let you know (although, of course, it  
only happens under load :-/ ).

Thanks,

Nathaniel

\<:((\>\<

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [9 December 2003 21:07 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/2 "2003-12-09T21:07:11Z")

</div>

The segfault occurs at inconsistent times (sometimes almost twice in a  
row, sometimes it’ll go hours), and in inconsistent places (I’ve had it  
segfault in timeout.rb and in various WEBrick files).

I’ve managed to coax a backtrace out of it:

(gdb) bt  
#0 0x409db64c in ?? ()  
#1 0x400e81e1 in siglongjmp () from /lib/libc.so.6  
#2 0x400e814c in siglongjmp () from /lib/libc.so.6  
#3 0x40022426 in longjmp () from /lib/libpthread.so.0  
#4 0x080668b6 in rb\_thread\_restore\_context (th=0x811d618, exit=1) at  
eval.c:8526  
#5 0x08067afe in rb\_thread\_schedule () at eval.c:8930  
#6 0x08068051 in rb\_thread\_select (max=23, read=0xbffe5700,  
write=0x0, except=0x0,  
timeout=0xbffe5568) at eval.c:9105  
#7 0x0807e08d in rb\_f\_select (argc=4, argv=0xbffe59a0,  
obj=1075936204) at io.c:3321  
#8 0x0806b213 in call\_cfunc (func=0x807d9f4 \<rb\_f\_select\>,  
recv=1075936204, len=-1, argc=4,  
argv=0xbffe59a0) at eval.c:4903  
#9 0x0805dfb3 in rb\_call0 (klass=1075936184, recv=1075936204,  
id=3721, oid=3721, argc=4,  
argv=0xbffe59a0, body=0x40217a28, nosuper=0) at eval.c:5037  
#10 0x0805eaf8 in rb\_call (klass=1075936184, recv=1075936204,  
mid=3721, argc=4,  
argv=0xbffe59a0, scope=0) at eval.c:5258  
#11 0x080587aa in rb\_eval (self=1083839784, n=0x405cfae4) at  
eval.c:3053  
#12 0x080572d0 in rb\_eval (self=1083839784, n=0x405ce07c) at  
eval.c:2728  
#13 0x0805e5af in rb\_call0 (klass=1076576852, recv=1083839784,  
id=41257, oid=41257, argc=0,  
argv=0x0, body=0x405ce07c, nosuper=0) at eval.c:5165  
#14 0x0805eaf8 in rb\_call (klass=1076576852, recv=1083839784,  
mid=41257, argc=0, argv=0x0,  
scope=2) at eval.c:5258  
#15 0x08058a9c in rb\_eval (self=1083839784, n=0x405d8428) at  
eval.c:3074  
#16 0x080572f6 in rb\_eval (self=1083839784, n=0x405d7bb8) at  
eval.c:2732  
#17 0x08057ab9 in rb\_eval (self=1083839784, n=0x405d67b8) at  
eval.c:2860  
#18 0x0805e5af in rb\_call0 (klass=1076576852, recv=1083839784,  
id=40937, oid=40937, argc=0,  
argv=0xbffe7724, body=0x405d67b8, nosuper=0) at eval.c:5165  
#19 0x0805eaf8 in rb\_call (klass=1076576852, recv=1083839784,  
mid=40937, argc=1,  
argv=0xbffe7720, scope=1) at eval.c:5258  
#20 0x08058a64 in rb\_eval (self=1083839784, n=0x405d5610) at  
eval.c:3068  
#21 0x08058575 in rb\_eval (self=1083839784, n=0x405d5598) at  
eval.c:3047  
#22 0x0805e5af in rb\_call0 (klass=1076576852, recv=1083839784,  
id=7321, oid=7321, argc=0,  
argv=0x0, body=0x405d5598, nosuper=0) at eval.c:5165  
#23 0x0805eaf8 in rb\_call (klass=1076576852, recv=1083839784,  
mid=7321, argc=0, argv=0x0,  
scope=0) at eval.c:5258  
#24 0x080587aa in rb\_eval (self=1080956984, n=0x406057e8) at  
eval.c:3053  
#25 0x08059753 in rb\_eval (self=1080956984, n=0x40604f50) at  
eval.c:3236  
#26 0x0805e5af in rb\_call0 (klass=1080956924, recv=1080956984,  
id=40913, oid=40913, argc=0,  
argv=0xbffe8f74, body=0x40604f50, nosuper=0) at eval.c:5165  
#27 0x0805eaf8 in rb\_call (klass=1080956924, recv=1080956984,  
mid=40913, argc=1,  
argv=0xbffe8f70, scope=1) at eval.c:5258  
#28 0x08058a64 in rb\_eval (self=1080956984, n=0x406075d4) at  
eval.c:3068  
#29 0x08057966 in rb\_eval (self=1080956984, n=0x40607570) at  
eval.c:2832  
#30 0x08059705 in rb\_eval (self=1080956984, n=0x40606fe4) at  
eval.c:3230  
#31 0x0805e5af in rb\_call0 (klass=1080956924, recv=1080956984,  
id=40249, oid=40249, argc=0,  
argv=0xbffea0f4, body=0x40606fe4, nosuper=0) at eval.c:5165  
#32 0x0805eaf8 in rb\_call (klass=1080956924, recv=1080956984,  
mid=40249, argc=1,  
argv=0xbffea0f0, scope=0) at eval.c:5258  
#33 0x080587aa in rb\_eval (self=1083840624, n=0x4066c2b8) at  
eval.c:3053  
#34 0x08059753 in rb\_eval (self=1083840624, n=0x4066c240) at  
eval.c:3236  
#35 0x08057135 in rb\_eval (self=1083840624, n=0x4066e540) at  
eval.c:2697  
#36 0x0805e5af in rb\_call0 (klass=1076273488, recv=1083840624,  
id=32153, oid=32153, argc=0,  
argv=0xbffeb288, body=0x4066e540, nosuper=0) at eval.c:5165  
#37 0x0805eaf8 in rb\_call (klass=1076273488, recv=1083840624,  
mid=32153, argc=2,  
argv=0xbffeb280, scope=1) at eval.c:5258  
#38 0x08058a64 in rb\_eval (self=1083840624, n=0x4066da64) at  
eval.c:3068  
#39 0x08063c49 in block\_pass (self=1083840624, node=0x4066dadc) at  
eval.c:7326  
#40 0x080573e4 in rb\_eval (self=1083840624, n=0x4066dadc) at  
eval.c:2759  
#41 0x08058126 in rb\_eval (self=1083840624, n=0x4066d9c4) at  
eval.c:2997  
#42 0x0805c200 in rb\_yield\_0 (val=1083840624, self=1083840624,  
klass=0, flags=0, avalue=0)  
at eval.c:4270  
#43 0x08057a10 in rb\_eval (self=1083840624, n=0x40685ce0) at  
eval.c:2849  
#44 0x08058126 in rb\_eval (self=1083840624, n=0x40685c7c) at  
eval.c:2997  
#45 0x08057cdb in rb\_eval (self=1083840624, n=0x40685754) at  
eval.c:2909  
#46 0x0805e5af in rb\_call0 (klass=1076273488, recv=1083840624,  
id=5001, oid=5001, argc=0,  
argv=0x0, body=0x40685754, nosuper=0) at eval.c:5165  
#47 0x0805eaf8 in rb\_call (klass=1076273488, recv=1083840624,  
mid=5001, argc=0, argv=0x0,  
scope=1) at eval.c:5258  
#48 0x08058a64 in rb\_eval (self=1083840624, n=0x4066d8c0) at  
eval.c:3068  
#49 0x08057578 in rb\_eval (self=1083840624, n=0x4066e540) at  
eval.c:2773  
#50 0x0805e5af in rb\_call0 (klass=1076273488, recv=1083840624,  
id=32153, oid=32153, argc=0,  
argv=0xbffee294, body=0x4066e540, nosuper=0) at eval.c:5165  
#51 0x0805eaf8 in rb\_call (klass=1076273488, recv=1083840624,  
mid=32153, argc=1,  
argv=0xbffee290, scope=1) at eval.c:5258  
#52 0x08058a64 in rb\_eval (self=1083840624, n=0x4067c424) at  
eval.c:3068  
#53 0x08059753 in rb\_eval (self=1083840624, n=0x4067c30c) at  
eval.c:3236  
#54 0x0805e5af in rb\_call0 (klass=1076273488, recv=1083840624,  
id=30737, oid=30737, argc=0,  
argv=0xbffeeed4, body=0x4067c30c, nosuper=0) at eval.c:5165  
#55 0x0805eaf8 in rb\_call (klass=1076273488, recv=1083840624,  
mid=30737, argc=1,  
argv=0xbffeeed0, scope=0) at eval.c:5258  
#56 0x080587aa in rb\_eval (self=1084288984, n=0x406b34b0) at  
eval.c:3053  
#57 0x0805c200 in rb\_yield\_0 (val=1084068484, self=1084288984,  
klass=0, flags=1, avalue=2)  
at eval.c:4270  
#58 0x08063580 in proc\_invoke (proc=1084288084, args=1083840724,  
self=6, klass=0)  
at eval.c:7155  
#59 0x08063743 in proc\_call (proc=1084288084, args=1083840724) at  
eval.c:7197  
#60 0x0806b1f4 in call\_cfunc (func=0x806372c \<proc\_call\>,  
recv=1084288084, len=-2, argc=1,  
argv=0xbffef920) at eval.c:4900  
#61 0x0805dfb3 in rb\_call0 (klass=1075914684, recv=1084288084,  
id=331, oid=331, argc=1,  
argv=0xbffef920, body=0x402126e0, nosuper=0) at eval.c:5037  
#62 0x0805eaf8 in rb\_call (klass=1075914684, recv=1084288084,  
mid=331, argc=1,  
argv=0xbffef920, scope=0) at eval.c:5258  
#63 0x080587aa in rb\_eval (self=1084288984, n=0x406b187c) at  
eval.c:3053  
#64 0x08057ab9 in rb\_eval (self=1084288984, n=0x406b04e0) at  
eval.c:2860  
#65 0x0805c200 in rb\_yield\_0 (val=1084068484, self=1084288984,  
klass=0, flags=1, avalue=2)  
at eval.c:4270  
#66 0x08063580 in proc\_invoke (proc=1084287904, args=1083840844,  
self=6, klass=0)  
at eval.c:7155  
#67 0x08063743 in proc\_call (proc=1084287904, args=1083840844) at  
eval.c:7197  
#68 0x0806b1f4 in call\_cfunc (func=0x806372c \<proc\_call\>,  
recv=1084287904, len=-2, argc=1,  
argv=0xbfff08a0) at eval.c:4900  
#69 0x0805dfb3 in rb\_call0 (klass=1075914684, recv=1084287904,  
id=5185, oid=5185, argc=1,  
argv=0xbfff08a0, body=0x40212730, nosuper=0) at eval.c:5037  
#70 0x0805eaf8 in rb\_call (klass=1075914684, recv=1084287904,  
mid=5185, argc=1,  
argv=0xbfff08a0, scope=0) at eval.c:5258  
#71 0x080587aa in rb\_eval (self=1084287864, n=0x406cd93c) at  
eval.c:3053  
#72 0x0805e5af in rb\_call0 (klass=1084288884, recv=1084287864,  
id=31993, oid=31993, argc=0,  
argv=0xbfff0fb8, body=0x406cd93c, nosuper=0) at eval.c:5165  
#73 0x0805eaf8 in rb\_call (klass=1084288884, recv=1084287864,  
mid=31993, argc=2,  
argv=0xbfff0fb0, scope=0) at eval.c:5258  
#74 0x080587aa in rb\_eval (self=1084147884, n=0x406ab698) at  
eval.c:3053  
#75 0x08057e43 in rb\_eval (self=1084147884, n=0x406ab60c) at  
eval.c:2936  
#76 0x0805c200 in rb\_yield\_0 (val=1084287864, self=1084147884,  
klass=0, flags=0, avalue=0)  
at eval.c:4270  
#77 0x0805c4b6 in rb\_yield (val=1084287864) at eval.c:4323  
#78 0x080e0e7a in find\_i (i=1084287864, memo=0x409d9540) at enum.c:67  
#79 0x0805c1df in rb\_yield\_0 (val=1084287864, self=1075972664,  
klass=0, flags=0, avalue=0)  
at eval.c:4267  
#80 0x0805c4b6 in rb\_yield (val=1084287864) at eval.c:4323  
#81 0x080d415f in rb\_ary\_each (ary=1084287724) at array.c:816  
#82 0x0806b22d in call\_cfunc (func=0x80d4128 \<rb\_ary\_each\>,  
recv=1084287724, len=0, argc=0,  
argv=0x0) at eval.c:4906  
#83 0x0805dfb3 in rb\_call0 (klass=1075947264, recv=1084287724,  
id=3825, oid=3825, argc=0,  
argv=0x0, body=0x4021a2dc, nosuper=0) at eval.c:5037  
#84 0x0805eaf8 in rb\_call (klass=1075947264, recv=1084287724,  
mid=3825, argc=0, argv=0x0,  
scope=1) at eval.c:5258  
#85 0x0805ece6 in rb\_funcall (recv=1084287724, mid=3825, n=0) at  
eval.c:5323  
#86 0x080e0d59 in rb\_each (obj=1084287724) at enum.c:24  
#87 0x0805cc7e in rb\_iterate (it\_proc=0x80e0d40 \<rb\_each\>,  
data1=1084287724,  
bl\_proc=0x80e0e68 \<find\_i\>, data2=1084069184) at eval.c:4539  
#88 0x080e0ef7 in enum\_find (argc=0, argv=0x0, obj=1084287724) at  
enum.c:85  
#89 0x0806b213 in call\_cfunc (func=0x80e0eac \<enum\_find\>,  
recv=1084287724, len=-1, argc=0,  
argv=0x0) at eval.c:4903  
#90 0x0805dfb3 in rb\_call0 (klass=1075971844, recv=1084287724,  
id=3705, oid=3705, argc=0,  
argv=0x0, body=0x40220600, nosuper=0) at eval.c:5037  
#91 0x0805eaf8 in rb\_call (klass=1075971844, recv=1084287724,  
mid=3705, argc=0, argv=0x0,  
scope=0) at eval.c:5258  
#92 0x080587aa in rb\_eval (self=1084147884, n=0x406ab83c) at  
eval.c:3053  
#93 0x08057578 in rb\_eval (self=1084147884, n=0x406ab56c) at  
eval.c:2773  
#94 0x08059753 in rb\_eval (self=1084147884, n=0x406ac570) at  
eval.c:3236  
#95 0x0805e5af in rb\_call0 (klass=1084288984, recv=1084147884,  
id=24929, oid=24929, argc=0,  
argv=0xbfff34a8, body=0x406ac570, nosuper=0) at eval.c:5165  
#96 0x0805eaf8 in rb\_call (klass=1084288984, recv=1084147884,  
mid=24929, argc=2,  
argv=0xbfff34a0, scope=0) at eval.c:5258  
#97 0x080587aa in rb\_eval (self=1083855504, n=0x402a9c14) at  
eval.c:3053  
#98 0x08059753 in rb\_eval (self=1083855504, n=0x402aa204) at  
eval.c:3236  
#99 0x0805e5af in rb\_call0 (klass=1080152184, recv=1083855504,  
id=24833, oid=24833, argc=0,  
argv=0xbfff4108, body=0x402aa204, nosuper=0) at eval.c:5165  
#100 0x0805eaf8 in rb\_call (klass=1080152184, recv=1083855504,  
mid=24833, argc=2,  
argv=0xbfff4100, scope=1) at eval.c:5258  
#101 0x08058a64 in rb\_eval (self=1083855504, n=0x402b0564) at  
eval.c:3068  
#102 0x0805e5af in rb\_call0 (klass=1080152184, recv=1083855504,  
id=24809, oid=24809, argc=0,  
argv=0xbfff4828, body=0x402b0564, nosuper=0) at eval.c:5165  
#103 0x0805eaf8 in rb\_call (klass=1080152184, recv=1083855504,  
mid=24809, argc=2,  
argv=0xbfff4820, scope=1) at eval.c:5258  
#104 0x08058a64 in rb\_eval (self=1083855504, n=0x402b2e18) at  
eval.c:3068  
#105 0x0805e5af in rb\_call0 (klass=1080152184, recv=1083855504,  
id=24801, oid=24801, argc=0,  
argv=0xbfff516c, body=0x402b2e18, nosuper=0) at eval.c:5165  
#106 0x0805eaf8 in rb\_call (klass=1080152184, recv=1083855504,  
mid=24801, argc=2,  
argv=0xbfff5164, scope=1) at eval.c:5258  
#107 0x0805ec23 in rb\_f\_send (argc=2, argv=0xbfff5164,  
recv=1083855504) at eval.c:5288  
#108 0x0806b213 in call\_cfunc (func=0x805eb94 \<rb\_f\_send\>,  
recv=1083855504, len=-1, argc=3,  
argv=0xbfff5160) at eval.c:4903  
#109 0x0805dfb3 in rb\_call0 (klass=1075977384, recv=1083855504,  
id=3881, oid=3881, argc=3,  
argv=0xbfff5160, body=0x4021fdb8, nosuper=0) at eval.c:5037  
#110 0x0805eaf8 in rb\_call (klass=1075977384, recv=1083855504,  
mid=3881, argc=3,  
argv=0xbfff5160, scope=1) at eval.c:5258  
#111 0x08058a64 in rb\_eval (self=1083855504, n=0x40643afc) at  
eval.c:3068  
#112 0x0805e5af in rb\_call0 (klass=1080306364, recv=1083855504,  
id=30929, oid=30929, argc=0,  
argv=0xbfff5878, body=0x40643afc, nosuper=0) at eval.c:5165  
#113 0x0805eaf8 in rb\_call (klass=1080306364, recv=1083855504,  
mid=30929, argc=2,  
argv=0xbfff5870, scope=0) at eval.c:5258  
#114 0x080587aa in rb\_eval (self=1084286384, n=0x40647d50) at  
eval.c:3053  
#115 0x0805e5af in rb\_call0 (klass=1080132744, recv=1084286384,  
id=30929, oid=30929, argc=0,  
argv=0xbfff5fc8, body=0x40647d50, nosuper=0) at eval.c:5165  
#116 0x0805eaf8 in rb\_call (klass=1080132744, recv=1084286384,  
mid=30929, argc=2,  
argv=0xbfff5fc0, scope=1) at eval.c:5258  
#117 0x08058a64 in rb\_eval (self=1084286384, n=0x40649240) at  
eval.c:3068  
#118 0x08057ab9 in rb\_eval (self=1084286384, n=0x40648638) at  
eval.c:2860  
#119 0x08057cdb in rb\_eval (self=1084286384, n=0x40649380) at  
eval.c:2909  
#120 0x08057135 in rb\_eval (self=1084286384, n=0x40648390) at  
eval.c:2697  
#121 0x0805e5af in rb\_call0 (klass=1080132744, recv=1084286384,  
id=5081, oid=5081, argc=0,  
argv=0xbfff76b4, body=0x40648390, nosuper=0) at eval.c:5165  
#122 0x0805eaf8 in rb\_call (klass=1080132744, recv=1084286384,  
mid=5081, argc=1,  
argv=0xbfff76b0, scope=1) at eval.c:5258  
#123 0x08058a64 in rb\_eval (self=1084286384, n=0x4032baac) at  
eval.c:3068  
#124 0x08057ab9 in rb\_eval (self=1084286384, n=0x40328550) at  
eval.c:2860  
#125 0x08057cdb in rb\_eval (self=1084286384, n=0x4032740c) at  
eval.c:2909  
#126 0x0805c200 in rb\_yield\_0 (val=1083757344, self=1084286384,  
klass=0, flags=2, avalue=2)  
at eval.c:4270  
#127 0x080692c0 in rb\_thread\_yield (arg=1083757344, th=0x82b86c8) at  
eval.c:9663  
#128 0x08068f64 in rb\_thread\_start\_0 (fn=0x80691f4 \<rb\_thread\_yield\>,  
arg=0x4098d320,  
th=0x82b86c8) at eval.c:9577  
#129 0x08069413 in rb\_thread\_start (klass=1075962144,  
args=1083757344) at eval.c:9702  
#130 0x0806b1f4 in call\_cfunc (func=0x80693c4 \<rb\_thread\_start\>,  
recv=1075962144, len=-2,  
argc=0, argv=0x0) at eval.c:4900  
#131 0x0805dfb3 in rb\_call0 (klass=1075962124, recv=1075962144,  
id=5001, oid=5001, argc=0,  
argv=0x0, body=0x4021e094, nosuper=0) at eval.c:5037  
#132 0x0805eaf8 in rb\_call (klass=1075962124, recv=1075962144,  
mid=5001, argc=0, argv=0x0,  
scope=0) at eval.c:5258  
#133 0x080587aa in rb\_eval (self=1084286384, n=0x4032bc3c) at  
eval.c:3053  
#134 0x08057578 in rb\_eval (self=1084286384, n=0x4032bc8c) at  
eval.c:2773  
#135 0x0805e5af in rb\_call0 (klass=1080823624, recv=1084286384,  
id=23857, oid=23857, argc=0,  
argv=0xbfff97e4, body=0x4032bc8c, nosuper=1) at eval.c:5165  
#136 0x0805eaf8 in rb\_call (klass=1080823624, recv=1084286384,  
mid=23857, argc=1,  
argv=0xbfff97e0, scope=1) at eval.c:5258  
#137 0x08058a64 in rb\_eval (self=1084286384, n=0x40322ad8) at  
eval.c:3068  
#138 0x08063c49 in block\_pass (self=1084286384, node=0x40322aec) at  
eval.c:7326  
#139 0x080573e4 in rb\_eval (self=0, n=0x0) at eval.c:2759  
(gdb)

Any help would be MOST appreciated, or any additional ideas about how  
to track this down. I have the server stopped in gdb at the SIGSEGV  
point, so I can give information about the state of data structures in  
memory if that would help.

Thanks,

Nathaniel

\<:((\>\<

> **···**
>
> On Dec 9, 2003, at 08:24, Nathaniel Talbott wrote:
> 
> > Unfortunately, I don’t have much information at this point, but here’s  
> > what I do have:
> > 
> > [2003-12-08 12:55:39] INFO WEBrick::HTTPServer#start: pid=22231  
> > port=2222  
> > /usr/lib/ruby/1.8/timeout.rb:47: [BUG] Segmentation fault  
> > ruby 1.8.1 (2003-12-05) [i386-linux]
> > 
> > timeout.rb line 47 seems innocuous enough; it simply kills the timeout  
> > thread if it is still running. Any ideas?
> > 
> > If I discover anything else, I’ll let you know (although, of course,  
> > it only happens under load :-/ ).

---

<div class="post-metadata">

**Author:** ![ts1](https://avatars.discourse-cdn.com/v4/letter/t/a8b319/32.png) [@ts1](https://rubytalk.org/u/ts1)\
**Post date:** [10 December 2003 10:33 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/3 "2003-12-10T10:33:30Z")

</div>

> to track this down. I have the server stopped in gdb at the SIGSEGV  
> point, so I can give information about the state of data structures in  
> memory if that would help.

It will be useless : the best is to give an example to reproduce the bug

Guy Decoux

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [10 December 2003 16:10 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/4 "2003-12-10T16:10:37Z")

</div>

OK… didn’t realize it would be this easy:

server.rb:

require ‘webrick’  
include WEBrick

s = HTTPServer.new(  
:Port =\> 2000,  
:Logger =\> BasicLog::new(‘/dev/null’),  
:AccessLog =\>   
)

class HelloServlet \< HTTPServlet::AbstractServlet  
def do\_GET(req, res)  
res.body = “hello, world.”  
res[‘Content-Type’] = “text/html”  
end  
end  
s.mount(“/hello”, HelloServlet)

trap(“INT”){ s.shutdown }  
s.start

killer.rb:

require ‘thread’  
require ‘net/http’

threads =

200.times do  
threads \<\< Thread.new do  
h = Net::HTTP::new(‘localhost’, 2000)  
loop do  
h.get(‘/hello’)  
end  
end  
end

threads.each{|t| t.join}

Running:

ntalbott@proxytest:~/sandbox$ ruby server.rb &  
[1] 20130  
ntalbott@proxytest:~/sandbox$ ruby killer.rb  
/usr/lib/ruby/1.8/net/http.rb:1699: [BUG] Segmentation fault  
ruby 1.8.1 (2003-12-05) [i386-linux]

Aborted

Interestingly enough, it’s not the server, but the killer that dies, so  
I can’t guarantee this is the same segfault that my larger program has.  
It’s a good place to start, however.

Thanks,

Nathaniel

\<:((\>\<

> **···**
>
> On Dec 10, 2003, at 05:33, ts wrote:
> 
> > > to track this down. I have the server stopped in gdb at the SIGSEGV  
> > > point, so I can give information about the state of data structures  
> > > in  
> > > memory if that would help.
> > 
> > It will be useless : the best is to give an example to reproduce the  
> > bug

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [10 December 2003 18:36 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/5 "2003-12-10T18:36:58Z")

</div>

> 

> > > to track this down. I have the server stopped in gdb at the SIGSEGV  
> > > point, so I can give information about the state of data  
> > > structures in  
> > > memory if that would help.
> > 
> > It will be useless : the best is to give an example to reproduce the  
> > bug
> 
> OK… didn’t realize it would be this easy:

> Interestingly enough, it’s not the server, but the killer that dies,  
> so I can’t guarantee this is the same segfault that my larger program  
> has. It’s a good place to start, however.

Running it some more, the server seems to segfault much more regularly  
than the killer (actually, I haven’t been able to get the killer to  
segfault since the first time I ran the program).

This is a show-stopper for me, and I’ve reached the limits of my  
abilities to track the problem down. Any ideas?

Nathaniel

\<:((\>\<

> **···**
>
> On Dec 10, 2003, at 11:10, Nathaniel Talbott wrote:
> 
> > On Dec 10, 2003, at 05:33, ts wrote:

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [11 December 2003 03:15 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/6 "2003-12-11T03:15:05Z")

</div>

Sorry to sound like a broken record… but has anyone been able to  
duplicate this? Any chance of a fix any time soon? I have an  
application I’d like to release that is being held up by this bug, and  
I don’t have the knowledge and/or expertise to track it down myself ☹

I need a Ruby super-hero! 😉

Thanks,

Nathaniel

\<:((\>\<

> **···**
>
> On Dec 10, 2003, at 13:36, Nathaniel Talbott wrote:
> 
> > Running it some more, the server seems to segfault much more regularly  
> > than the killer (actually, I haven’t been able to get the killer to  
> > segfault since the first time I ran the program).
> > 
> > This is a show-stopper for me, and I’ve reached the limits of my  
> > abilities to track the problem down. Any ideas?

---

<div class="post-metadata">

**Author:** ![Yukihiro\_Matsumoto2](https://avatars.discourse-cdn.com/v4/letter/y/b9e5f3/32.png) [@Yukihiro\_Matsumoto2](https://rubytalk.org/u/Yukihiro_Matsumoto2)\
**Post date:** [11 December 2003 04:07 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/7 "2003-12-11T04:07:50Z")

</div>

Hi,

> **···**
>
> In message “Re: Segfault in 1.8.1p3” on 03/12/11, Nathaniel Talbott [nathaniel@talbott.ws](mailto:nathaniel@talbott.ws) writes:
> 
> > Sorry to sound like a broken record… but has anyone been able to  
> > duplicate this? Any chance of a fix any time soon? I have an  
> > application I’d like to release that is being held up by this bug, and  
> > I don’t have the knowledge and/or expertise to track it down myself ☹
> > 
> > I need a Ruby super-hero! 😉
> 
> It does not happen on my machine. Did you try --disable-pthread,  
> which is default now?
> 
> ```
> matz.
> 
> ```

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [11 December 2003 04:11 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/8 "2003-12-11T04:11:45Z")

</div>

I need --enable-pthread to fix another problem (see ruby-talk:87519).  
I’ll try disabling it just to see if the error still occurs, though.

Thanks,

Nathaniel

\<:((\>\<

> **···**
>
> On Dec 10, 2003, at 23:07, Yukihiro Matsumoto wrote:
> 
> > Hi,
> > 
> > In message “Re: Segfault in 1.8.1p3” \> on 03/12/11, Nathaniel Talbott [nathaniel@talbott.ws](mailto:nathaniel@talbott.ws) writes:
> > 
> > > Sorry to sound like a broken record… but has anyone been able to  
> > > duplicate this? Any chance of a fix any time soon? I have an  
> > > application I’d like to release that is being held up by this bug, and  
> > > I don’t have the knowledge and/or expertise to track it down myself  
> > > ☹
> > > 
> > > I need a Ruby super-hero! 😉
> > 
> > It does not happen on my machine. Did you try --disable-pthread,  
> > which is default now?
> > 
> > ```
> > matz.
> > 
> > ```

---

<div class="post-metadata">

**Author:** ![Nathaniel\_Talbott1](https://avatars.discourse-cdn.com/v4/letter/n/a4c791/32.png) [@Nathaniel\_Talbott1](https://rubytalk.org/u/Nathaniel_Talbott1)\
**Post date:** [11 December 2003 05:36 UTC](https://rubytalk.org/t/segfault-in-1-8-1p3/9259/9 "2003-12-11T05:36:19Z")

</div>

OK, I just verified with latest CVS: it does not segfault without  
–enable-pthread. It does segfault with --enable-pthread. So which  
issue should be fixed? The one in [ruby-talk:87519] for which I built  
with --enable-pthread? Or this one?

Thanks,

Nathaniel

\<:((\>\<

> **···**
>
> On Dec 10, 2003, at 23:11, Nathaniel Talbott wrote:
> 
> > On Dec 10, 2003, at 23:07, Yukihiro Matsumoto wrote:
> > 
> > > It does not happen on my machine. Did you try --disable-pthread,  
> > > which is default now?
> > > 
> > > ```
> > > matz.
> > > 
> > > ```
> > 
> > I need --enable-pthread to fix another problem (see ruby-talk:87519).  
> > I’ll try disabling it just to see if the error still occurs, though.
