[前][次][番号順一覧][スレッド一覧]

ruby-changes:20796

From: kosaki <ko1@a...>
Date: Thu, 4 Aug 2011 20:23:41 +0900 (JST)
Subject: [ruby-changes:20796] kosaki:r32844 (trunk): * error.c (report_bug): use a small message buffer instead of BUFSIZ.

kosaki	2011-08-04 20:23:16 +0900 (Thu, 04 Aug 2011)

  New Revision: 32844

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32844

  Log:
    * error.c (report_bug): use a small message buffer instead of BUFSIZ.
      It is needed for avoiding nested SIGSEGV on Linux.
      Note: BUFSIZ is not proper buffer size. It's unrelated with maximum
      filename length. :-/
      [Bug #5139] [ruby-dev:44315]

  Modified files:
    trunk/ChangeLog
    trunk/error.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32843)
+++ ChangeLog	(revision 32844)
@@ -1,3 +1,11 @@
+Thu Aug  4 20:19:11 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* error.c (report_bug): use a small message buffer instead of BUFSIZ.
+	  It is needed for avoiding nested SIGSEGV on Linux.
+	  Note: BUFSIZ is not proper buffer size. It's unrelated with maximum
+	  filename length. :-/
+	  [Bug #5139] [ruby-dev:44315]
+
 Thu Aug  4 16:08:45 2011  Nobuyoshi Nakada  <nobu@r...>
 
 	* tool/rbinstall.rb (gem): install all gemspecs under lib and ext.
Index: error.c
===================================================================
--- error.c	(revision 32843)
+++ error.c	(revision 32844)
@@ -251,9 +251,10 @@
 static void
 report_bug(const char *file, int line, const char *fmt, va_list args)
 {
-    char buf[BUFSIZ];
+    /* SIGSEGV handler might have a very small stack. Thus we need to use it carefully. */
+    char buf[256];
     FILE *out = stderr;
-    int len = err_position_0(buf, BUFSIZ, file, line);
+    int len = err_position_0(buf, 256, file, line);
 
     if ((ssize_t)fwrite(buf, 1, len, out) == (ssize_t)len ||
 	(ssize_t)fwrite(buf, 1, len, (out = stdout)) == (ssize_t)len) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]