From: ville.mattila@... Date: 2006-02-01T16:45:29+09:00 Subject: Re: [PATCH] solaris 10 isinf and ruby_setenv fixes Hello, With this patch it fails similarily. E.g either no memory exception or segementation fault. I'm using sun studio 11 compiler. Here are my configuration flags: LD="cc -xarch=amd64" LDSHARED="cc -G" DLDFLAGS='-xarch=amd64' CC=cc CFLAGS="-xO3 -g -mt -fsim ple=1 -xbuiltin=%all -xlibmil -xlibmopt -xtarget=opteron -xarch=amd64" CXX=CC CXXFLAGS="-xO3 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=opteron -xar ch=amd64 -xregs=no%frameptr" LDFLAGS="-xtarget=opteron -xarch=amd64" ../configure --without-g cc --with-openssl-dir=/usr/local/openssl-0.9.8 --with-readline-dir=/usr/local It doesn't matter what is the optimization level. - Ville >From: H.Yamamoto >Date: 01.02.2006 09:20:47 >Subject: Re: [PATCH] solaris 10 isinf and ruby_setenv fixes > >Hello. > >>Yes I experienced actual memory corruption. Here is the test run: >> >>test_bracket(TestEnv): ./ruby/test_env.rb:19:in `[]=': failed to allocate >>memory (NoMemoryError) >> from ./ruby/test_env.rb:19:in `test_bracket' >> from /install/ruby-1-8-cvs/ruby/lib/test/unit/testcase.rb:70:in >>`run' >> from /install/ruby-1-8-cvs/ruby/lib/test/unit/testsuite.rb:32:in >>`run' >> from /install/ruby-1-8-cvs/ruby/lib/test/unit/testsuite.rb:31:in >>`run' > >Hmm, I also think it's better to use setenv(3). But for curiousty, >Can you try this patch? Still core dumps? > >Index: hash.c >=================================================================== >RCS file: /src/ruby/hash.c,v >retrieving revision 1.128.2.14 >diff -u -w -b -p -r1.128.2.14 hash.c >--- hash.c 19 Jul 2005 08:25:37 -0000 1.128.2.14 >+++ hash.c 1 Feb 2006 06:50:26 -0000 >@@ -1788,6 +1788,23 @@ envix(nam) >return i; >} > >+#ifndef _WIN32 >+char * >+ruby_getenv(name) >+ const char *name; >+{ >+ char *p = environ[envix(name)]; >+ >+ p = strchr(p, '='); >+ if (p) { >+ p += 1; >+ } >+ } >+ return p; >+} >+#endif >+ >ruby_setenv(name, value) >const char *name; >Index: util.h >=================================================================== >RCS file: /src/ruby/util.h,v >retrieving revision 1.14.2.2 >diff -u -w -b -p -r1.14.2.2 util.h >--- util.h 30 Oct 2005 18:20:53 -0000 1.14.2.2 >+++ util.h 1 Feb 2006 06:50:42 -0000 >@@ -46,11 +46,18 @@ void ruby_add_suffix(); >void ruby_qsort _((void*, const int, const int, int (*)(), void*)); >#define qsort(b,n,s,c,d) ruby_qsort(b,n,s,c,d) > >+#ifndef _WIN32 >+char *ruby_getenv _((const char*)); >+#undef getenv >+#define getenv(name) ruby_getenv(name) >+#endif >+ >-void ruby_unsetenv _((const char*)); >#undef setenv >-#undef unsetenv >#define setenv(name,val) ruby_setenv(name,val) >+ >+#undef unsetenv >#define unsetenv(name,val) ruby_unsetenv(name); > >char *ruby_strdup _((const char*)); > >