From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-4.1 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 324FB211B3 for ; Wed, 5 Dec 2018 15:46:27 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 7A80D1210B0; Thu, 6 Dec 2018 00:46:25 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 20F92120E2E for ; Thu, 6 Dec 2018 00:46:22 +0900 (JST) Received: by filter0123p3las1.sendgrid.net with SMTP id filter0123p3las1-29919-5C07F2CD-16 2018-12-05 15:46:21.348552213 +0000 UTC m=+160865.497343905 Received: from herokuapp.com (ec2-54-226-254-145.compute-1.amazonaws.com [54.226.254.145]) by ismtpd0039p1iad1.sendgrid.net (SG) with ESMTP id nFC__DnvRMWWchuhH-C9Zw for ; Wed, 05 Dec 2018 15:46:21.208 +0000 (UTC) Date: Wed, 05 Dec 2018 15:46:21 +0000 (UTC) From: mats@sigge.cc To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 65708 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 14959 X-Redmine-Issue-Author: y4m4p X-Redmine-Sender: matssigge X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS6ekQ2ENnbemyBKtV89+ly4yWGjv+ekFSqmq8 X3mhscodoyK0sGNGBfTC0VmH/VKdFEzbD+KCTyKN6Ug/blZGIUJgke4SnXOpwVtgbm7kFIYvL7Z2aD sN8amNB+MV2A/UBkTbvzRJE2wbTb4z1as8lB X-ML-Name: ruby-core X-Mail-Count: 90316 Subject: [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 X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "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/