Bug #3668

make check segfault in test_syntax.rb

Added by Luis Lavena about 5 years ago. Updated over 4 years ago.

[ruby-core:31653]
Status:Closed
Priority:Normal
Assignee:Nobuyoshi Nakada
ruby -v:ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mingw32] Backport:

Description

=begin
While build Ruby 1.9.3dev (trunk) under MinGW (GCC 4.5.0) and running tests, it segfault with the following traceback:

C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:18: [BUG] Segmentation fault
ruby 1.9.3dev (2010-08-08 trunk 28909) [i386-mingw32]

-- control frame ----------
c:0020 p:---- s:0082 b:0082 l:000081 d:000081 CFUNC :read
c:0019 p:0026 s:0078 b:0076 l:000054 d:000075 BLOCK C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:18
c:0018 p:---- s:0073 b:0073 l:000072 d:000072 FINISH
c:0017 p:---- s:0071 b:0071 l:000070 d:000070 CFUNC :each
c:0016 p:0040 s:0068 b:0068 l:000054 d:000067 BLOCK C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:17
c:0015 p:0080 s:0065 b:0065 l:000064 d:000064 METHOD C:/Users/Luis/Projects/oss/ruby/lib/test/unit/assertions.rb:34
c:0014 p:0018 s:0055 b:0055 l:000054 d:000054 METHOD C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:16
c:0013 p:0063 s:0052 b:0052 l:000051 d:000051 METHOD C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:680
c:0012 p:0091 s:0046 b:0046 l:00032c d:000045 BLOCK C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:641
c:0011 p:---- s:0041 b:0041 l:000040 d:000040 FINISH
c:0010 p:---- s:0039 b:0039 l:000038 d:000038 CFUNC :each
c:0009 p:0026 s:0036 b:0036 l:00032c d:000035 BLOCK C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:635
c:0008 p:---- s:0033 b:0033 l:000032 d:000032 FINISH
c:0007 p:---- s:0031 b:0031 l:000030 d:000030 CFUNC :each
c:0006 p:0082 s:0028 b:0028 l:00032c d:00032c METHOD C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:634
c:0005 p:0188 s:0023 b:0023 l:002464 d:002464 METHOD C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:594
c:0004 p:0022 s:0014 b:0014 l:001b48 d:001b48 METHOD C:/Users/Luis/Projects/oss/ruby/lib/test/unit.rb:21
c:0003 p:0136 s:0010 b:0009 l:001dac d:0003b0 EVAL ../../../../ruby/test/runner.rb:26
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:001dac d:001dac TOP


-- Ruby level backtrace information ----------------------------------------
../../../../ruby/test/runner.rb:26:in <main>'
C:/Users/Luis/Projects/oss/ruby/lib/test/unit.rb:21:in
run'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:594:in run'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:634:in
run_test_suites'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:634:in each'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:635:in
block in run_test_suites'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:635:in each'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:641:in
block (2 levels) in run_test_suites'
C:/Users/Luis/Projects/oss/ruby/lib/minitest/unit.rb:680:in run'
C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:16:in
test_syntax'
C:/Users/Luis/Projects/oss/ruby/lib/test/unit/assertions.rb:34:in assert_nothing_raised'
C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:17:in
block in test_syntax'
C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:17:in each'
C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:18:in
block (2 levels) in test_syntax'
C:/Users/Luis/Projects/oss/ruby/test/ruby/test_syntax.rb:18:in `read'

Individual execution of the tests did not segfault, indicating that something executed before could have triggered it.

An error of a missing temporary extension and fail to load it was triggered as popup. Will try to execute tests again and see if can note the tests triggered the previous issue.

Thank you.
=end

i386-mingw32.txt Magnifier - crash dump (2.93 KB) Peter Weldon, 08/15/2010 04:26 AM

i386-mswin32_100.txt Magnifier - call stack on heap corruption (5.46 KB) Peter Weldon, 08/15/2010 04:26 AM

string.c.bug3668.patch Magnifier - string.c (str_make_independent): set capacity of expanded string correctly (917 Bytes) Peter Weldon, 08/17/2010 06:29 AM

History

#1 Updated by Peter Weldon about 5 years ago

=begin
Appears to be triggered by heap corruption during test/ruby/test_string.rb. Likewise with [ruby 1.9.3dev (2010-08-15) [i386-mswin32_100]], heap corruption is detected when linked to the debug crt libs.

=end

#2 Updated by Usaku NAKAMURA about 5 years ago

  • Status changed from Open to Assigned
  • Assignee set to Nobuyoshi Nakada

=begin

=end

#3 Updated by Peter Weldon about 5 years ago

=begin
Seems to be a buffer overrun caused by changes in string.c (str_make_independent_expand) at r28863.

Patch attached.

Before patch:

ruby.exe --version
ruby 1.9.3dev (2010-08-16) [i386-mswin32_100]

ruby test\ruby\test_string.rb
Loaded suite test/ruby/test_string
Started
...........................................................................................
HEAP CORRUPTION DETECTED: after Normal block (#53951) at 0x022D5088.
CRT detected that the application wrote to memory after end of heap buffer.
.........................
Finished in 0.540031 seconds.

116 tests, 1771 assertions, 0 failures, 0 errors, 0 skips

Test run options: --seed 54485

=end

#4 Updated by Nobuyoshi Nakada about 5 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

=begin
This issue was solved with changeset r29018.
Luis, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

=end

Also available in: Atom PDF