Project

General

Profile

Actions

Bug #16508

closed

Segmentation fault with Regexp in ruby 2.7.0preview2

Added by tdrive (Stanislav Boldaev) over 4 years ago. Updated about 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.0preview2 (2019-10-22 master 02aadf1032) [x86_64-darwin19]
[ruby-core:96845]

Description

code:

#!/usr/bin/env ruby

data = "test 000000000 test asdasdsa"

data.gsub(/test (?<m1>\d+) test (?<m2>\w*)/) do |match|
  match.sub(Regexp.last_match(:m1), "").sub(Regexp.last_match(:m2), "")
end

result:

test.rb:6: [BUG] Segmentation fault at 0x0000000000000018
ruby 2.7.0preview2 (2019-10-22 master 02aadf1032) [x86_64-darwin19]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0005 p:---- s:0022 e:000021 CFUNC  :last_match
c:0004 p:0036 s:0017 e:000015 BLOCK  test.rb:6 [FINISH]
c:0003 p:---- s:0012 e:000011 CFUNC  :gsub
c:0002 p:0012 s:0007 E:001908 EVAL   test.rb:5 [FINISH]
c:0001 p:0000 s:0003 E:000680 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
test.rb:5:in `<main>'
test.rb:5:in `gsub'
test.rb:6:in `block in <main>'
test.rb:6:in `last_match'

-- Machine register context ------------------------------------------------
 rax: 0x0000000000000002 rbx: 0x00007f922d09b3f0 rcx: 0x0000000000000000
 rdx: 0x00007f922d09b3f2 rdi: 0x0000000000000000 rsi: 0x000000000000fffc
 rbp: 0x00007ffeef064120 rsp: 0x00007ffeef0640f0  r8: 0x0000000000000001
  r9: 0x0000000100dfc330 r10: 0x00007f922c07b000 r11: 0x00007f922be6a270
 r12: 0x00007f922bc05c20 r13: 0x0000000000000001 r14: 0x00007f922be675d0
 r15: 0x0000000000000008 rip: 0x0000000100d3434a rfl: 0x0000000000010202

-- C level backtrace information -------------------------------------------
...

just bug report.

Updated by byroot (Jean Boussier) over 4 years ago

Its' reproductible on 2.5.7, 2.6.5 and 2.7.0p0.

Actions #2

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

  • Backport changed from 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN to 2.5: REQUIRED, 2.6: REQUIRED, 2.7: REQUIRED
Actions #3

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

  • Status changed from Open to Closed

Applied in changeset git|4f19666e8b144600e959e4673f79d63f98bd637d.


Regexp in MatchData can be nil

String#sub with a string pattern defers creating a Regexp
until MatchData#regexp creates a Regexp from the matched
string. Regexp#last_match(group_name) accessed its content
without creating the Regexp though. [Bug #16508]

Updated by nagachika (Tomoyuki Chikanaga) about 4 years ago

  • Backport changed from 2.5: REQUIRED, 2.6: REQUIRED, 2.7: REQUIRED to 2.5: REQUIRED, 2.6: REQUIRED, 2.7: DONE

backported into ruby_2_7 was done at db4d136889afbf59e69efcfd495fd91cd401f378.

Updated by nagachika (Tomoyuki Chikanaga) about 4 years ago

  • Backport changed from 2.5: REQUIRED, 2.6: REQUIRED, 2.7: DONE to 2.5: REQUIRED, 2.6: DONE, 2.7: DONE

ruby_2_6 r67838 merged revision(s) 4f19666e8b144600e959e4673f79d63f98bd637d.

Updated by usa (Usaku NAKAMURA) about 4 years ago

  • Backport changed from 2.5: REQUIRED, 2.6: DONE, 2.7: DONE to 2.5: DONE, 2.6: DONE, 2.7: DONE

ruby_2_5 r67865 merged revision(s) 4f19666e8b144600e959e4673f79d63f98bd637d.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0