From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id 5957D19C026F for ; Thu, 19 Nov 2015 17:24:45 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id EC7ADB5D8B4 for ; Thu, 19 Nov 2015 17:55:29 +0900 (JST) Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id 51F9B18CC7EA for ; Thu, 19 Nov 2015 17:55:30 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id BA9A312046A; Thu, 19 Nov 2015 17:55:28 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o2.heroku.sendgrid.net (o2.heroku.sendgrid.net [67.228.50.55]) by neon.ruby-lang.org (Postfix) with ESMTPS id 5D1BC120449 for ; Thu, 19 Nov 2015 17:55:24 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.me; h=from:to:references:subject:mime-version:content-type:content-transfer-encoding:list-id; s=smtpapi; bh=xkfXQY/wjl8OT95IFjVwaFvSCTk=; b=nmcJLS3ejh592HsuwD oyBzwV039xSGZE8VNOODqLUIEgSTXz1HX4CCQxYXcmpcOJ8Ob8Rk2ALY4ZjYdcet 7xTThqH03YUriZ+XGFoM92RZM8FbHqHi/2yndEUdkFF6P3f+ilY/Va9yMMnfbnjW YVUMa2j3wOHRr+AZfOwhUwm0A= Received: by filter0621p1mdw1.sendgrid.net with SMTP id filter0621p1mdw1.6936.564D8E7632 2015-11-19 08:55:18.458343044 +0000 UTC Received: from herokuapp.com (ec2-54-167-26-236.compute-1.amazonaws.com [54.167.26.236]) by ismtpd0005p1iad1.sendgrid.net (SG) with ESMTP id IX_xFK2nSnOYAohgnj9jlA for ; Thu, 19 Nov 2015 08:55:18.637 +0000 (UTC) Date: Thu, 19 Nov 2015 08:55:18 +0000 From: edgars.beigarts@makit.lv To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Redmine-MailingListIntegration-Message-Ids: 46242 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11692 X-Redmine-Issue-Author: gazay X-Redmine-Issue-Assignee: ko1 X-Redmine-Sender: ebeigarts 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/Ymy4QrNMhiuLXJG8OTL2vJD1yS6lvfJW9f6Li2QMfBwhk9Up8N1PBAIzqiNEUG GDqTXFBzx8nO/P4KzC2Y5cIt06Q/NjrEWg4Dy+9WJImJmy7EgsNS9kFimzwcqMMxKQVqCSOpSu9qlm NMCJG2XwyfS0yof19filU/HUStWhQvMlqqUj X-ML-Name: ruby-core X-Mail-Count: 71579 Subject: [ruby-core:71579] [Ruby trunk - Bug #11692] [PATCH] Re-enable GC if stack overflow was caught from signal handler 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: , Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #11692 has been updated by Edgars Beigarts. Tried with ruby head, this solves the GC problems now, but it doesn't solve the other problem that is visible if you run my example - https://gist.github.com/ebeigarts/44648eb7b2773e102335 In ruby 2.2 it looks like if a stack overflow is raised in a thread 2 times then on the 2nd time thread just dies. In ruby trunk it looks like if a stack overflow is raised in a thread 2 times then on the 2nd time the whole process just hangs and the only way to stop is kill -9. ---------------------------------------- Bug #11692: [PATCH] Re-enable GC if stack overflow was caught from signal handler https://bugs.ruby-lang.org/issues/11692#change-54960 * Author: Alex Gaziev * Status: Closed * Priority: Normal * Assignee: Koichi Sasada * ruby -v: * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- We got ruby application running on our production server and noticed that it regularly crashes with out of memory errors. After months of investigation, I narrowed the case to the examples (1/2). After digging ruby sources and running test code, I found out that GC stopped working after recovering from native stack overflow error. Probably the relevant code appeared in 2.2 https://github.com/ruby/ruby/commit/0c391a55d3ed4637e17462d9b9b8aa21e64e2340 where ruby_disable_gc_stress became ruby_disable_gc. Patches for trunk and 2.2 branches below. ---Files-------------------------------- example1.rb (311 Bytes) example2.rb (333 Bytes) re-enable-gc-after-stackoverflow-trunk.patch (985 Bytes) re-enable-gc-after-stackoverflow-ruby-2-2.patch (985 Bytes) gc_threads_issue.rb (1.53 KB) -- https://bugs.ruby-lang.org/