Issue #14628 has been reported by DavidEGrayson (David Grayson).

----------------------------------------
Bug #14628: Misplaced colon causes segmentation fault
https://bugs.ruby-lang.org/issues/14628

* Author: DavidEGrayson (David Grayson)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
The following program with a misplaced colon causes a segmentation fault when you try to run it in Ruby 2.5.0p0 on both the Manjaro Linux and the MSYS2 platforms:

~~~{ruby}
def a(x)
  case x
  when A
    :
  when B, C
  end
end
~~~

It also causes some spurious "dynamic constant assignment" error messages on the line after the misplaced colon.  I wonder what's going on here!  Seems like a parsing problem.

Here is a shell session from Linux demonstrating the issue:

~~~
$ ruby -v ast.rb 
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
ast.rb:4: syntax error, unexpected ':'
    :
    ^
ast.rb:5: dynamic constant assignment
  when B, C
        ^
ast.rb:5: dynamic constant assignment
  when B, C
           ^
ast.rb: [BUG] Segmentation fault at 0x0000000000000020
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0001 p:0000 s:0003 E:0016f0 (none) [FINISH]


-- Machine register context ------------------------------------------------
 RIP: 0x00007fd4161d5cc8 RBP: 0x0000000000000000 RSP: 0x00007fff0db94a90
 RAX: 0x000055c278401390 RBX: 0x0000000000000020 RCX: 0x0000000000000001
 RDX: 0x0000000000028000 RDI: 0x000055c278401390 RSI: 0x000000000000291b
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x000055c278401360
 R11: 0x0000000000000145 R12: 0x000055c278401360 R13: 0x00007fff0db95490
 R14: 0x00007fff0db94bee R15: 0x00007fff0db94dd8 EFL: 0x0000000000010202

-- C level backtrace information -------------------------------------------
/usr/lib/libruby.so.2.5(0x7fd4162a57a6) [0x7fd4162a57a6]
/usr/lib/libruby.so.2.5(0x7fd4162a59e1) [0x7fd4162a59e1]
/usr/lib/libruby.so.2.5(0x7fd41616be96) [0x7fd41616be96]
/usr/lib/libruby.so.2.5(0x7fd4162355e3) [0x7fd4162355e3]
/usr/lib/libc.so.6(0x7fd415d5b8e0) [0x7fd415d5b8e0]
/usr/lib/libruby.so.2.5(0x7fd4161d5cc8) [0x7fd4161d5cc8]
/usr/lib/libruby.so.2.5(0x7fd4161d6320) [0x7fd4161d6320]
/usr/lib/libruby.so.2.5(0x7fd4161e196c) [0x7fd4161e196c]
/usr/lib/libruby.so.2.5(0x7fd4161ed303) [0x7fd4161ed303]
/usr/lib/libruby.so.2.5(0x7fd4162a770d) [0x7fd4162a770d]
/usr/lib/libruby.so.2.5(rb_parser_compile_file_path+0x71) [0x7fd4161d9511]
/usr/lib/libruby.so.2.5(0x7fd416233859) [0x7fd416233859]
/usr/lib/libruby.so.2.5(rb_ensure+0xc3) [0x7fd416172293]
/usr/lib/libruby.so.2.5(0x7fd4162347db) [0x7fd4162347db]
/usr/lib/libruby.so.2.5(ruby_process_options+0x7a) [0x7fd416234d7a]
/usr/lib/libruby.so.2.5(ruby_options+0xbf) [0x7fd41617342f]
ruby(0x55c277b48898) [0x55c277b48898]
/usr/lib/libc.so.6(__libc_start_main+0xea) [0x7fd415d47f4a]
ruby(_start+0x2a) [0x55c277b488da]

-- Other runtime information -----------------------------------------------

* Loaded script: ast.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /usr/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
    5 /usr/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
    6 /usr/lib/ruby/2.5.0/x86_64-linux/rbconfig.rb
    7 /usr/lib/ruby/2.5.0/rubygems/compatibility.rb
    8 /usr/lib/ruby/2.5.0/rubygems/defaults.rb
    9 /usr/lib/ruby/2.5.0/rubygems/deprecate.rb
   10 /usr/lib/ruby/2.5.0/rubygems/errors.rb
   11 /usr/lib/ruby/2.5.0/rubygems/version.rb
   12 /usr/lib/ruby/2.5.0/rubygems/requirement.rb
   13 /usr/lib/ruby/2.5.0/rubygems/platform.rb
   14 /usr/lib/ruby/2.5.0/rubygems/basic_specification.rb
   15 /usr/lib/ruby/2.5.0/rubygems/stub_specification.rb
   16 /usr/lib/ruby/2.5.0/rubygems/util/list.rb
   17 /usr/lib/ruby/2.5.0/x86_64-linux/stringio.so
   18 /usr/lib/ruby/2.5.0/uri/rfc2396_parser.rb
   19 /usr/lib/ruby/2.5.0/uri/rfc3986_parser.rb
   20 /usr/lib/ruby/2.5.0/uri/common.rb
   21 /usr/lib/ruby/2.5.0/uri/generic.rb
   22 /usr/lib/ruby/2.5.0/uri/ftp.rb
   23 /usr/lib/ruby/2.5.0/uri/http.rb
   24 /usr/lib/ruby/2.5.0/uri/https.rb
   25 /usr/lib/ruby/2.5.0/uri/ldap.rb
   26 /usr/lib/ruby/2.5.0/uri/ldaps.rb
   27 /usr/lib/ruby/2.5.0/uri/mailto.rb
   28 /usr/lib/ruby/2.5.0/uri.rb
   29 /usr/lib/ruby/2.5.0/rubygems/specification.rb
   30 /usr/lib/ruby/2.5.0/rubygems/exceptions.rb
   31 /usr/lib/ruby/2.5.0/rubygems/dependency.rb
   32 /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_gem.rb
   33 /usr/lib/ruby/2.5.0/monitor.rb
   34 /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb
   35 /usr/lib/ruby/2.5.0/rubygems.rb
   36 /usr/lib/ruby/2.5.0/rubygems/path_support.rb

* Process memory map:

55c277b48000-55c277b49000 r-xp 00000000 08:01 3156826                    /usr/bin/ruby
55c277d48000-55c277d49000 r--p 00000000 08:01 3156826                    /usr/bin/ruby
55c277d49000-55c277d4a000 rw-p 00001000 08:01 3156826                    /usr/bin/ruby
55c2782d0000-55c2786c7000 rw-p 00000000 00:00 0                          [heap]
7fd4144de000-7fd41478a000 r--s 00000000 08:01 3157631                    /usr/lib/libruby.so.2.5.0
7fd41478a000-7fd4147a0000 r-xp 00000000 08:01 3147514                    /usr/lib/libgcc_s.so.1
7fd4147a0000-7fd41499f000 ---p 00016000 08:01 3147514                    /usr/lib/libgcc_s.so.1
7fd41499f000-7fd4149a0000 r--p 00015000 08:01 3147514                    /usr/lib/libgcc_s.so.1
7fd4149a0000-7fd4149a1000 rw-p 00016000 08:01 3147514                    /usr/lib/libgcc_s.so.1
7fd4149de000-7fd4149e5000 r-xp 00000000 08:01 4072441                    /usr/lib/ruby/2.5.0/x86_64-linux/stringio.so
7fd4149e5000-7fd414be4000 ---p 00007000 08:01 4072441                    /usr/lib/ruby/2.5.0/x86_64-linux/stringio.so
7fd414be4000-7fd414be5000 r--p 00006000 08:01 4072441                    /usr/lib/ruby/2.5.0/x86_64-linux/stringio.so
7fd414be5000-7fd414be6000 rw-p 00007000 08:01 4072441                    /usr/lib/ruby/2.5.0/x86_64-linux/stringio.so
7fd414be6000-7fd414be8000 r-xp 00000000 08:01 7995751                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
7fd414be8000-7fd414de8000 ---p 00002000 08:01 7995751                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
7fd414de8000-7fd414de9000 r--p 00002000 08:01 7995751                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
7fd414de9000-7fd414dea000 rw-p 00003000 08:01 7995751                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
7fd414dea000-7fd414dec000 r-xp 00000000 08:01 7995702                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
7fd414dec000-7fd414feb000 ---p 00002000 08:01 7995702                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
7fd414feb000-7fd414fec000 r--p 00001000 08:01 7995702                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
7fd414fec000-7fd414fed000 rw-p 00002000 08:01 7995702                    /usr/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
7fd414fed000-7fd4150ee000 rw-p 00000000 00:00 0 
7fd4150ee000-7fd415239000 r-xp 00000000 08:01 3147210                    /usr/lib/libm-2.26.so
7fd415239000-7fd415438000 ---p 0014b000 08:01 3147210                    /usr/lib/libm-2.26.so
7fd415438000-7fd415439000 r--p 0014a000 08:01 3147210                    /usr/lib/libm-2.26.so
7fd415439000-7fd41543a000 rw-p 0014b000 08:01 3147210                    /usr/lib/libm-2.26.so
7fd41543a000-7fd415442000 r-xp 00000000 08:01 3147230                    /usr/lib/libcrypt-2.26.so
7fd415442000-7fd415642000 ---p 00008000 08:01 3147230                    /usr/lib/libcrypt-2.26.so
7fd415642000-7fd415643000 r--p 00008000 08:01 3147230                    /usr/lib/libcrypt-2.26.so
7fd415643000-7fd415644000 rw-p 00009000 08:01 3147230                    /usr/lib/libcrypt-2.26.so
7fd415644000-7fd415672000 rw-p 00000000 00:00 0 
7fd415672000-7fd415675000 r-xp 00000000 08:01 3147211                    /usr/lib/libdl-2.26.so
7fd415675000-7fd415874000 ---p 00003000 08:01 3147211                    /usr/lib/libdl-2.26.so
7fd415874000-7fd415875000 r--p 00002000 08:01 3147211                    /usr/lib/libdl-2.26.so
7fd415875000-7fd415876000 rw-p 00003000 08:01 3147211                    /usr/lib/libdl-2.26.so
7fd415876000-7fd415908000 r-xp 00000000 08:01 3151224                    /usr/lib/libgmp.so.10.3.2
7fd415908000-7fd415b07000 ---p 00092000 08:01 3151224                    /usr/lib/libgmp.so.10.3.2
7fd415b07000-7fd415b08000 r--p 00091000 08:01 3151224                    /usr/lib/libgmp.so.10.3.2
7fd415b08000-7fd415b09000 rw-p 00092000 08:01 3151224                    /usr/lib/libgmp.so.10.3.2
7fd415b09000-7fd415b22000 r-xp 00000000 08:01 3147413                    /usr/lib/libpthread-2.26.so
7fd415b22000-7fd415d21000 ---p 00019000 08:01 3147413                    /usr/lib/libpthread-2.26.so
7fd415d21000-7fd415d22000 r--p 00018000 08:01 3147413                    /usr/lib/libpthread-2.26.so
7fd415d22000-7fd415d23000 rw-p 00019000 08:01 3147413                    /usr/lib/libpthread-2.26.so
7fd415d23000-7fd415d27000 rw-p 00000000 00:00 0 
7fd415d27000-7fd415ed5000 r-xp 00000000 08:01 3147371                    /usr/lib/libc-2.26.so
7fd415ed5000-7fd4160d4000 ---p 001ae000 08:01 3147371                    /usr/lib/libc-2.26.so
7fd4160d4000-7fd4160d8000 r--p 001ad000 08:01 3147371                    /usr/lib/libc-2.26.so
7fd4160d8000-7fd4160da000 rw-p 001b1000 08:01 3147371                    /usr/lib/libc-2.26.so
7fd4160da000-7fd4160de000 rw-p 00000000 00:00 0 
7fd4160de000-7fd416382000 r-xp 00000000 08:01 3157631                    /usr/lib/libruby.so.2.5.0
7fd416382000-7fd416581000 ---p 002a4000 08:01 3157631                    /usr/lib/libruby.so.2.5.0
7fd416581000-7fd416589000 r--p 002a3000 08:01 3157631                    /usr/lib/libruby.so.2.5.0
7fd416589000-7fd41658a000 rw-p 002ab000 08:01 3157631                    /usr/lib/libruby.so.2.5.0
7fd41658a000-7fd41659a000 rw-p 00000000 00:00 0 
7fd41659a000-7fd4165bf000 r-xp 00000000 08:01 3147372                    /usr/lib/ld-2.26.so
7fd4165df000-7fd41677a000 r--p 00000000 08:01 3165555                    /usr/lib/locale/locale-archive
7fd41677a000-7fd416781000 rw-p 00000000 00:00 0 
7fd4167b7000-7fd4167b9000 r--s 00000000 08:01 3156826                    /usr/bin/ruby
7fd4167b9000-7fd4167ba000 ---p 00000000 00:00 0 
7fd4167ba000-7fd4167be000 rw-p 00000000 00:00 0 
7fd4167be000-7fd4167bf000 r--p 00024000 08:01 3147372                    /usr/lib/ld-2.26.so
7fd4167bf000-7fd4167c0000 rw-p 00025000 08:01 3147372                    /usr/lib/ld-2.26.so
7fd4167c0000-7fd4167c1000 rw-p 00000000 00:00 0 
7fff0d39a000-7fff0db99000 rw-p 00000000 00:00 0                          [stack]
7fff0dbcc000-7fff0dbce000 r--p 00000000 00:00 0                          [vvar]
7fff0dbce000-7fff0dbd0000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]


[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted (core dumped)
~~~



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>