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/