# 1.8 sprintf %b generates broken strings with GC.stress

**URL:** <https://www.ruby-forum.com/t/1-8-sprintf-b-generates-broken-strings-with-gc-stress/135417>\
**Category:** Development\
**Created:** [April 22, 2008, 1:08am UTC](https://www.ruby-forum.com/t/1-8-sprintf-b-generates-broken-strings-with-gc-stress/135417 "2008-04-22T01:08:52Z")\
**Posts on this page:** 2\
**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:** [April 22, 2008, 1:08am UTC](https://www.ruby-forum.com/t/1-8-sprintf-b-generates-broken-strings-with-gc-stress/135417/1 "2008-04-22T01:08:52Z")

</div>

GC.stress e$B$,F~$C$?$N$G;W$$N)$C$F$U$H;n$7$F$\_$k$H!"e(B1.8 e$B$Ne(B  
sprintf e$B$Ne(B %b e$B$Oe(B

“\000\242\272\3535+\000\000P{d\000\000\000\000\000ffffffffffff,\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\00000000000000000000000000000000000000000000000000000000000001”

e$B$J$I$H$$$&2u$l$?J8;zNs$r@8@.$9$k$3$H$,$"$k$h$&$G$9!#e(B

% cat x.rb  
GC.stress=true

VS = [  
-0x1000000000000000000000000000000000000000000000002,  
-0x1000000000000000000000000000000000000000000000001,  
-0x1000000000000000000000000000000000000000000000000,  
-0xffffffffffffffffffffffffffffffffffffffffffffffff,  
-0x1000000000000000000000002,  
-0x1000000000000000000000001,  
-0x1000000000000000000000000,  
-0xffffffffffffffffffffffff,  
-0x10000000000000002,  
-0x10000000000000001,  
-0x10000000000000000,  
-0xffffffffffffffff,  
-0x4000000000000002,  
-0x4000000000000001,  
-0x4000000000000000,  
-0x3fffffffffffffff,  
-0x100000002,  
-0x100000001,  
-0x100000000,  
-0xffffffff,  
-0xc717a08d,  
-0x80000002,  
-0x80000001,  
-0x80000000,  
-0x7fffffff,  
-0x524b2245,  
-0x40000002,  
-0x40000001,  
-0x40000000,  
-0x3fffffff,  
-0x10002,  
-0x10001,  
-0x10000,  
-0xffff,  
-0x8101,  
-0x8002,  
-0x8001,  
-0x8000,  
-0x7fff,  
-0x7f01,  
-65,  
-64,  
-63,  
-62,  
-33,  
-32,  
-31,  
-30,  
-3,  
-2,  
-1,  
0,  
1,  
2,  
3,  
30,  
31,  
32,  
33,  
62,  
63,  
64,  
65,  
0x7f01,  
0x7ffe,  
0x7fff,  
0x8000,  
0x8001,  
0x8101,  
0xfffe,  
0xffff,  
0x10000,  
0x10001,  
0x3ffffffe,  
0x3fffffff,  
0x40000000,  
0x40000001,  
0x524b2245,  
0x7ffffffe,  
0x7fffffff,  
0x80000000,  
0x80000001,  
0xc717a08d,  
0xfffffffe,  
0xffffffff,  
0x100000000,  
0x100000001,  
0x3ffffffffffffffe,  
0x3fffffffffffffff,  
0x4000000000000000,  
0x4000000000000001,  
0xfffffffffffffffe,  
0xffffffffffffffff,  
0x10000000000000000,  
0x10000000000000001,  
0xffffffffffffffffffffffff,  
0x1000000000000000000000000,  
0x1000000000000000000000001,  
0xffffffffffffffffffffffffffffffffffffffffffffffff,  
0x1000000000000000000000000000000000000000000000000,  
0x1000000000000000000000000000000000000000000000001  
]

VS.each {|a|  
s = sprintf("%b", a)  
p s if /[^01.]/ =~ s  
}  
% ./ruby -v x.rb  
ruby 1.8.7 (2008-04-19 patchlevel 5000) [x86\_64-linux]  
“\000\242\272\3535+\000\000\200\202d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000111111111111111111111111111111111111111111111111111111111110”  
“\000\242\272\3535+\000\000\020~d\000\000\000\000\0000000000000000000000000000000000000000,\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000111111111111111111111111111111111111111111111111111111111111”  
“\000\242\272\3535+\000\000\260|d\000\000\000\000\0000000000000001,\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\00000000000000000000000000000000000000000000000000000000000000”  
“\000\242\272\3535+\000\000P{d\000\000\000\000\000ffffffffffff,\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\00000000000000000000000000000000000000000000000000000000000001”

---

<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:** [April 23, 2008, 6:50am UTC](https://www.ruby-forum.com/t/1-8-sprintf-b-generates-broken-strings-with-gc-stress/135417/2 "2008-04-23T06:50:12Z")

</div>

At Tue, 22 Apr 2008 08:06:38 +0900,  
Tanaka A. wrote:

> GC.stress ãŒå…¥ã£ãŸã®ã§æ€ã„ç«‹ã£ã¦ãµã¨è©¦ã—ã¦ã¿ã‚‹ã¨ã€1.8 ã®  
> sprintf ã® %b ã¯
> 
> “\000\242\272\3535+\000\000P{d\000\000\000\000\000ffffffffffff,\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\00000000000000000000000000000000000000000000000000000000000001”
> 
> ãªã©ã¨ã„ã†å£Šã‚ŒãŸæ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ã“ã¨ãŒã‚ã‚‹ã‚ˆã†ã§ã™ã€‚

ã€€ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ã¾ã¤ã‚‚ã¨ã•ã‚“ãŒä¿®æ­£ã—ã¦ãã‚Œã¾ã—ãŸã€‚
