Bug #2768

SEGV when using OpenSSL::Cipher (AES) in certain way

Added by Julian Wälde about 4 years ago. Updated over 2 years ago.

[ruby-core:28269]
Status:Closed
Priority:Normal
Assignee:Hiroshi Nakamura
Category:ext
Target version:1.9.3
ruby -v:ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] Backport:

Description

=begin
this command gives me an SEGV on my boxes:

ruby -e 'require "openssl";OpenSSL::Cipher::AES128.new("ECB").update "testtesttesttest"'

while this command does not:

ruby -e 'require "openssl";OpenSSL::Cipher::AES128.new("ECB").update "testtesttesttes"'

A friend of mine reproduced it on his mac(1.8.6). It also worked on a server where ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux] is running.

It works for any kind of Blockciphermode, but not for other ciphers (e.g. BF)
=end

calltrace (3.4 KB) Julian Wälde, 02/21/2010 12:15 AM

Associated revisions

Revision 32723
Added by Hiroshi Nakamura over 2 years ago

  • ext/openssl/osslcipher.c (osslcipher_initialize): Avoid possible
    SEGV from AES encryption/decryption. Processing data by
    Cipher#update without initializing key (meaningless usage of Cipher
    object since we don't offer a way to export a key) could cause SEGV.

    In OpenSSL, the EVP which has EVPCIPHRANDKEY flag (such as DES3)
    allows uninitialized key, but other EVPs (such as AES) does not
    allow it. Calling EVP
    CipherUpdate() without initializing key causes
    SEGV so we set the data filled with "\0" as the key by default. See
    #2768.

  • test/openssl/test_cipher.rb: test it.

History

#1 Updated by Julian Wälde about 4 years ago

=begin
here the output that irb does give me for the command
=end

#2 Updated by Yui NARUSE about 4 years ago

  • Category changed from lib to ext
  • Status changed from Open to Third Party's Issue

=begin
Following is gdb backtrace and valgrind result; it seems OpenSSL's Issue.

% gdb --args ./ruby -e 'require "openssl";OpenSSL::Cipher::AES128.new("ECB").update "testtesttesttest"'
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
(gdb) r
Starting program: /home/naruse/obj/ruby-trunk/ruby -e require\ \"openssl\"\;OpenSSL::Cipher::AES128.new(\"ECB\").update\ \"testtesttesttest\"
[New LWP 100281]
[New Thread 8012041c0 (LWP 100281)]
[New Thread 80120ae40 (LWP 100205)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 8012041c0 (LWP 100281)]
0x0000000801d67938 in AESdecrypt () from /lib/libcrypto.so.6
(gdb) bt
#0 0x0000000801d67938 in AES
decrypt () from /lib/libcrypto.so.6
#1 0x0000000801d4a988 in EVPaes256cfb8 () from /lib/libcrypto.so.6
#2 0x0000000801d81273 in EVP
EncryptUpdate () from /lib/libcrypto.so.6
#3 0x0000000801d8133e in EVPDecryptUpdate () from /lib/libcrypto.so.6
#4 0x0000000801a489c3 in ossl
cipherupdate (argc=1, argv=0x801244038, self=34380098480)
at ../../../../src/ruby-trunk/ext/openssl/ossl
cipher.c:332
#5 0x00000008007d018d in callcfunc (func=0x801a48830 <osslcipherupdate>, recv=34380098480,
len=-1, argc=1, argv=0x801244038) at vm
insnhelper.c:290
#6 0x00000008007d003c in vmcallcfunc (th=0x80120b600, regcfp=0x801343ef8, num=1,
recv=34380098480, blockptr=0x0, me=0x80182d860) at vm
insnhelper.c:377
#7 0x00000008007cf3c9 in vmcallmethod (th=0x80120b600, cfp=0x801343ef8, num=1, blockptr=0x0,
flag=0, id=5008, me=0x80182d860, recv=34380098480) at vminsnhelper.c:500
#8 0x00000008007ca13f in vm
execcore (th=0x80120b600, initial=0) at insns.def:999
#9 0x00000008007d97e9 in vm
exec (th=0x80120b600) at ../../src/ruby-trunk/vm.c:1132
#10 0x00000008007da230 in rbiseqevalmain (iseqval=34380087760) at ../../src/ruby-trunk/vm.c:1373
#11 0x00000008006a8bd1 in ruby
execinternal (n=0x8013681d0) at ../../src/ruby-trunk/eval.c:204
#12 0x00000008006a8d0e in ruby
execnode (n=0x8013681d0) at ../../src/ruby-trunk/eval.c:251
#13 0x00000008006a8cd8 in ruby
run_node (n=0x8013681d0) at ../../src/ruby-trunk/eval.c:244
#14 0x000000000040091f in main (argc=3, argv=0x7fffffffe1e8) at ../../src/ruby-trunk/main.c:35

% valgrind ./ruby -e 'require "openssl";OpenSSL::Cipher::AES128.new("ECB").update "testtesttesttest"'
==52110== Memcheck, a memory error detector
==52110== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==52110== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==52110== Command: ./ruby -e require\ "openssl";OpenSSL::Cipher::AES128.new("ECB").update\ "testtesttesttest"
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76580: ispointertoheap (gc.c:1287)
==52110== by 0xD7652D: mark
locationsarray (gc.c:1315)
==52110== by 0xD785F6: mark
currentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: ruby
suppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD7658E: is
pointertoheap (gc.c:1287)
==52110== by 0xD7652D: marklocationsarray (gc.c:1315)
==52110== by 0xD785F6: markcurrentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: rubysuppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD765E2: ispointertoheap (gc.c:1288)
==52110== by 0xD7652D: mark
locationsarray (gc.c:1315)
==52110== by 0xD785F6: mark
currentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: ruby
suppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76645: is
pointertoheap (gc.c:1296)
==52110== by 0xD7652D: marklocationsarray (gc.c:1315)
==52110== by 0xD785F6: markcurrentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: rubysuppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD7666D: ispointertoheap (gc.c:1297)
==52110== by 0xD7652D: mark
locationsarray (gc.c:1315)
==52110== by 0xD785F6: mark
currentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: ruby
suppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76BBD: gc
mark (gc.c:1491)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD785F6: markcurrentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: rubysuppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76BCA: gcmark (gc.c:1491)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD785F6: mark
currentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: ruby
suppresstracing (thread.c:4078)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76BEB: gc
mark (gc.c:1492)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD785F6: markcurrentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: rubysuppresstracing (thread.c:4078)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76BFB: gcmark (gc.c:1493)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD785F6: mark
currentmachinecontext (gc.c:2116)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110== by 0xE9ECC0: ruby
suppresstracing (thread.c:4078)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76580: is
pointertoheap (gc.c:1287)
==52110== by 0xD7652D: marklocationsarray (gc.c:1315)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD7658E: ispointertoheap (gc.c:1287)
==52110== by 0xD7652D: mark
locationsarray (gc.c:1315)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD765E2: is
pointertoheap (gc.c:1288)
==52110== by 0xD7652D: marklocationsarray (gc.c:1315)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76645: ispointertoheap (gc.c:1296)
==52110== by 0xD7652D: mark
locationsarray (gc.c:1315)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD7666D: is
pointertoheap (gc.c:1297)
==52110== by 0xD7652D: marklocationsarray (gc.c:1315)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76BBD: gcmark (gc.c:1491)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76BCA: gc
mark (gc.c:1491)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76BEB: gcmark (gc.c:1492)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76BFB: gc
mark (gc.c:1493)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76C0E: gcmark (gc.c:1494)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76C19: gc
mark (gc.c:1494)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110== by 0xDC734D: yycompile0 (parse.y:5062)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76D9F: gcmarkchildren (gc.c:1532)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD76DAC: gc
markchildren (gc.c:1532)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76DB2: gcmarkchildren (gc.c:1532)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76DDB: gc
markchildren (gc.c:1536)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76E1E: gcmarkchildren (gc.c:1543)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76EA8: gc
markchildren (gc.c:1594)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76EBF: gcmarkchildren (gc.c:1608)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76DC1: gc
markchildren (gc.c:1532)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76FC3: gcmarkchildren (gc.c:1674)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76FD7: gc
markchildren (gc.c:1675)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD7718A: gcmarkchildren (gc.c:1705)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD7719B: gc
markchildren (gc.c:1705)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD771A5: gcmarkchildren (gc.c:1705)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD771B8: gc
markchildren (gc.c:1705)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77337: gcmarkchildren (gc.c:1731)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77348: gc
markchildren (gc.c:1732)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77360: gcmarkchildren (gc.c:1733)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77378: gc
markchildren (gc.c:1734)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77393: gcmarkchildren (gc.c:1735)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD773AE: gc
markchildren (gc.c:1736)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD773C9: gcmarkchildren (gc.c:1737)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD771D3: gc
markchildren (gc.c:1705)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD771E4: gcmarkchildren (gc.c:1705)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD771EE: gc
markchildren (gc.c:1705)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77201: gcmarkchildren (gc.c:1705)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76E80: gc
markchildren (gc.c:1567)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76E97: gcmarkchildren (gc.c:1573)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD77064: gc
markchildren (gc.c:1685)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0xD77071: gcmarkchildren (gc.c:1685)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77077: gc
markchildren (gc.c:1685)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77086: gcmarkchildren (gc.c:1685)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD770A8: gc
markchildren (gc.c:1690)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD770D3: gcmarkchildren (gc.c:1690)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD770ED: gc
markchildren (gc.c:1691)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD7710F: gcmarkchildren (gc.c:1691)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76EE1: gc
markchildren (gc.c:1630)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76EF8: gcmarkchildren (gc.c:1631)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD770B9: gc
markchildren (gc.c:1690)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD77133: gcmarkchildren (gc.c:1693)
==52110== by 0xD76CB9: gcmark (gc.c:1508)
==52110== by 0xD76543: mark
locationsarray (gc.c:1316)
==52110== by 0xD766F7: gc
marklocations (gc.c:1329)
==52110== by 0xD78607: mark
currentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbagecollect (gc.c:2169)
==52110== by 0xD75E99: rb
newobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rbnewobj (gc.c:1095)
==52110== by 0xD75FAB: rb
nodenewnode (gc.c:1102)
==52110== by 0xDCF60E: node
newnode (parse.y:7728)
==52110== by 0xDCF973: blockappendgen (parse.y:7823)
==52110== by 0xDBDE44: rubyyyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0xD76E69: gc
markchildren (gc.c:1553)
==52110== by 0xD76CB9: gc
mark (gc.c:1508)
==52110== by 0xD76543: marklocationsarray (gc.c:1316)
==52110== by 0xD766F7: gcmarklocations (gc.c:1329)
==52110== by 0xD78607: markcurrentmachinecontext (gc.c:2120)
==52110== by 0xD788BC: garbage
collect (gc.c:2169)
==52110== by 0xD75E99: rbnewobjfromheap (gc.c:1012)
==52110== by 0xD75F83: rb
newobj (gc.c:1095)
==52110== by 0xD75FAB: rbnodenewnode (gc.c:1102)
==52110== by 0xDCF60E: nodenewnode (parse.y:7728)
==52110== by 0xDCF973: block
appendgen (parse.y:7823)
==52110== by 0xDBDE44: ruby
yyparse (parse.y:946)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A2C: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A39: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A49: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A53: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A5A: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A5E: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A6D: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A7E: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A88: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038A97: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038AA7: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038AB7: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038AC0: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038ACA: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038AD4: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038ADB: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Conditional jump or move depends on uninitialised value(s)
==52110== at 0x2038AE4: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x203891A: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x2038925: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x203893F: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==52110== Use of uninitialised value of size 8
==52110== at 0x203894D: AESdecrypt (in /lib/libcrypto.so.6)
==52110== by 0x201B987: ??? (in /lib/libcrypto.so.6)
==52110== by 0x2052272: EVP
EncryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x205233D: EVPDecryptUpdate (in /lib/libcrypto.so.6)
==52110== by 0x1D199C2: ossl
cipherupdate (osslcipher.c:332)
==52110== by 0xE8B18C: callcfunc (vminsnhelper.c:290)
==52110== by 0xE8B03B: vmcallcfunc (vminsnhelper.c:377)
==52110== by 0xE8A3C8: vm
callmethod (vminsnhelper.c:500)
==52110== by 0xE8513E: vmexeccore (insns.def:999)
==52110== by 0xE947E8: vmexec (vm.c:1132)
==52110== by 0xE9522F: rb
iseqevalmain (vm.c:1373)
==52110== by 0xD63BD0: rubyexecinternal (eval.c:204)
==52110==
==521

#3 Updated by Hiroshi Nakamura over 2 years ago

  • Status changed from Third Party's Issue to Assigned
  • Assignee set to Hiroshi Nakamura
  • Target version set to 1.9.3

#4 Updated by Hiroshi Nakamura over 2 years ago

This patch should fix the SEGV. Still giving much thought whether it's safe to apply or not...

Index: ext/openssl/ossl_cipher.c

--- ext/openssl/osslcipher.c (revision 32672)
+++ ext/openssl/ossl
cipher.c (working copy)
@@ -102,6 +102,7 @@
EVPCIPHERCTX *ctx;
const EVPCIPHER *cipher;
char *name;
+ unsigned char key[EVP
MAXKEYLENGTH];

 name = StringValuePtr(str);
 GetCipherInit(self, ctx);

@@ -113,7 +114,14 @@
if (!(cipher = EVPgetcipherbyname(name))) {
osslraise(rbeRuntimeError, "unsupported cipher algorithm (%s)", name);
}
- if (EVPCipherInitex(ctx, cipher, NULL, NULL, NULL, -1) != 1)
+ /*
+ * The EVP which has EVPCIPHRANDKEY flag (such as DES3) allows
+ * uninitialized key, but other EVPs (such as AES) does not allow it.
+ * Calling EVP
CipherUpdate() without initializing key causes SEGV so we
+ * set the data filled with "\0" as the key by default.
+ */
+ memset(key, 0, EVPMAXKEYLENGTH);
+ if (EVP
CipherInitex(ctx, cipher, NULL, key, NULL, -1) != 1)
ossl
raise(eCipherError, NULL);

 return self;

#5 Updated by Motohiro KOSAKI over 2 years ago

Ping? Nahi-san, can you please tell us your final decision?

#6 Updated by Hiroshi Nakamura over 2 years ago

  • Status changed from Assigned to Closed

Thanks for heads-up!

I applied the patch to trunk at r32723 and ruby19_3 at r32724. Closing.

Also available in: Atom PDF