ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:88274] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
@ 2018-08-02 19:00 ` em454ll1lz0
  2018-08-02 19:46 ` [ruby-core:88276] " rafaelmfranca
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 8+ messages in thread
From: em454ll1lz0 @ 2018-08-02 19:00 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been reported by y4m4p (Masahiro Yamashita).

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959

* Author: y4m4p (Masahiro Yamashita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb

<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 

## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:88276] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
  2018-08-02 19:00 ` [ruby-core:88274] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000 em454ll1lz0
@ 2018-08-02 19:46 ` rafaelmfranca
  2018-08-03  1:21 ` [ruby-core:88280] " sam.saffron
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 8+ messages in thread
From: rafaelmfranca @ 2018-08-02 19:46 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by rafaelfranca (Rafael França).


Minimal reproduction steps.

~~~ruby
code = <<~CODE
module ApplicationHelper
  def broken_helper_in_application_helper
    if true
    else
      link_to 'somewhere', some_view_path(foo: 'false')
    end
  end
end
CODE
RubyVM::InstructionSequence.compile(code).to_binary
~~~

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-73299

* Author: y4m4p (Masahiro Yamashita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:88280] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
  2018-08-02 19:00 ` [ruby-core:88274] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000 em454ll1lz0
  2018-08-02 19:46 ` [ruby-core:88276] " rafaelmfranca
@ 2018-08-03  1:21 ` sam.saffron
  2018-08-03  7:38 ` [ruby-core:88284] " nobu
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 8+ messages in thread
From: sam.saffron @ 2018-08-03  1:21 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by sam.saffron (Sam Saffron).


also see: https://bugs.ruby-lang.org/issues/14894 probably the same issue. 

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-73302

* Author: y4m4p (Masahiro Yamashita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:88284] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
                   ` (2 preceding siblings ...)
  2018-08-03  1:21 ` [ruby-core:88280] " sam.saffron
@ 2018-08-03  7:38 ` nobu
  2018-09-21  8:17 ` [ruby-core:89118] " ujihisa
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 8+ messages in thread
From: nobu @ 2018-08-03  7:38 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by nobu (Nobuyoshi Nakada).


Thank you,  @rafaelfranca.
It a fixed bug in the trunk, but doesn't seem backported to 2.5 yet.

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-73308

* Author: y4m4p (Masahiro Yamashita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:89118] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
                   ` (3 preceding siblings ...)
  2018-08-03  7:38 ` [ruby-core:88284] " nobu
@ 2018-09-21  8:17 ` ujihisa
  2018-09-21  8:36 ` [ruby-core:89119] " nobu
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 8+ messages in thread
From: ujihisa @ 2018-09-21  8:17 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by ujihisa (Tatsuhiro Ujihisa).


I'm not sure if it's going to be backported to current stable version 2.5 but let me clarify couple things just in case for future.

* This is issue does not depend neither rails nor bootsnap
* Yet another minimal reproducible code to segfault

~~~
RubyVM::InstructionSequence.compile(<<~CODE).to_binary
  f(x: 1) if false
CODE
~~~

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-74137

* Author: y4m4p (Masahiro Yamashita)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:89119] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
                   ` (4 preceding siblings ...)
  2018-09-21  8:17 ` [ruby-core:89118] " ujihisa
@ 2018-09-21  8:36 ` nobu
  2018-12-05 15:46 ` [ruby-core:90316] " mats
  2018-12-09  2:17 ` [ruby-core:90381] " nobu
  7 siblings, 0 replies; 8+ messages in thread
From: nobu @ 2018-09-21  8:36 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by nobu (Nobuyoshi Nakada).


The same issue is already marked to backport in #14897.
Please wait for 2.5.2.

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-74138

* Author: y4m4p (Masahiro Yamashita)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:90316] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
                   ` (5 preceding siblings ...)
  2018-09-21  8:36 ` [ruby-core:89119] " nobu
@ 2018-12-05 15:46 ` mats
  2018-12-09  2:17 ` [ruby-core:90381] " nobu
  7 siblings, 0 replies; 8+ messages in thread
From: mats @ 2018-12-05 15:46 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by matssigge (Mats Sigge).


nobu (Nobuyoshi Nakada) wrote:
> The same issue is already marked to backport in #14897.
> Please wait for 2.5.2.

I'm still seeing the problem in 2.5.3, so I'm guessing this was never backported? Will it be?

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-75421

* Author: y4m4p (Masahiro Yamashita)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ruby-core:90381] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
       [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
                   ` (6 preceding siblings ...)
  2018-12-05 15:46 ` [ruby-core:90316] " mats
@ 2018-12-09  2:17 ` nobu
  7 siblings, 0 replies; 8+ messages in thread
From: nobu @ 2018-12-09  2:17 UTC (permalink / raw)
  To: ruby-core

Issue #14959 has been updated by nobu (Nobuyoshi Nakada).


Seems 2.5.4 has been fixed.

----------------------------------------
Bug #14959: Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000
https://bugs.ruby-lang.org/issues/14959#change-75491

* Author: y4m4p (Masahiro Yamashita)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin14]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
# Disclaimer 
Sorry about the problem being rails, and not ruby specific. I couldn't narrow down the problem and wording it correctly.
As it turns out that the problem derived from the ruby vm used in my Rails application, I decided to create the issue here.

## Backstory
I have created this issue in rails/rails. (https://github.com/rails/rails/issues/33460)
I became aware that this issue derives from Shopify/bootsnap (https://github.com/Shopify/bootsnap/issues/182)
The member there told me that this is an issue with the ruby vm itself, so I have created this issue here.

Please refer for more information in the above link.

# Reproduction
## Reproduction Project:
https://github.com/y4m4p/rails_issue_33460

## Project Dependency
program	version
ruby	        2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
Rails	5.2.0
Bundler	1.16.1
Mysql	5.7.21 Homebrew

## Reproduction method
~~~ ruby
def helper_method
  if true
    link_to 'page', some_view_path(foo: 'true')
  else
    link_to 'somewhere', some_view_path(foo: 'false')
  end
end
~~~

### Crash condition
Writing this helper method under "app/helper" directory in Rails which satisfies all of the next particular conditions will crash the Rails server application with 
KERN_INVALID_ADDRESS at 0x0000000000000000.

* Writing a condition with
~~~ ruby
if true 
  ... 
else 
  ...
~~~
OR
~~~ ruby
if false 
  ... 
else 
  ...
~~~

* Write a path using the "link_to" helper and a "url_helper (xxx_path)" which contains a "request parameter" (xxx_path(some_parameter: 'x')).
* Writing the process under the statement that will never be used. 
For example, if you write the "if" sentence with "if true" then you must write your process under the "else" statement and vice versa.


### Non crashing condition
* Writing the "if" condition with a instance variable or constant. 
~~~ ruby
def helper_method
  condition = true
  if condition
    ...
  else
    ...
  end
end
~~~

* Do not write the specific "link_to" helper process under the statement that will never be used.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true')
  else
    # link_to 'somewhere', web_pages_some_view_path(foo: 'false')  <= comment out
  end
end
~~~

* Do not write the request parameter for the "url_helper" path.
~~~ ruby
def helper_method
  if true
    link_to 'somewhere', web_pages_some_view_path(foo: 'true') #<= Writing the request parameter in the used statement is OK
  else
    link_to 'somewhere', web_pages_some_other_view_path
  end
end
~~~
* Do not write the process in helper. But rather, writing the process in the view itself will not crash.
~~~ ruby
# app/view/web_pages/some_view.html.erb
<%=  if true
       link_to 'somewhere', web_pages_some_view_path(foo: 'true')
      else
        link_to 'somewhere', web_pages_some_view_path(foo: 'false')
      end %>
~~~
 
## Expected
Should render correct views with link and not crash.
Even though I am writing the "if" condition with "true" which makes the "else" statement useless, but this should work as intended. (Just render the "true" statement.)

---Files--------------------------------
ruby_2018-08-03-030208_y4m4p.crash (63.6 KB)


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

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-12-09  2:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <redmine.issue-14959.20180802190009@ruby-lang.org>
2018-08-02 19:00 ` [ruby-core:88274] [Ruby trunk Bug#14959] Writing a "link_to" method and a "url_helper" with a request parameter under certain "if else" statement in Rails helper crashes with KERN_INVALID_ADDRESS at 0x0000000000000000 em454ll1lz0
2018-08-02 19:46 ` [ruby-core:88276] " rafaelmfranca
2018-08-03  1:21 ` [ruby-core:88280] " sam.saffron
2018-08-03  7:38 ` [ruby-core:88284] " nobu
2018-09-21  8:17 ` [ruby-core:89118] " ujihisa
2018-09-21  8:36 ` [ruby-core:89119] " nobu
2018-12-05 15:46 ` [ruby-core:90316] " mats
2018-12-09  2:17 ` [ruby-core:90381] " nobu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).