Sorry, I wasn't aware, .c files would be scrubbed. Testcase available for download here: http://rkward.sourceforge.net/temp/threadEmbed.c
On Monday 17 April 2006 21:11, Thomas Friedrichsmeier wrote: > Sorry about all the noise, but I'm slightly irritated by the absence of > reactions of any kind, while the time to the release is ticking away. > > Attached you will find a testcase for the problem. Likely the error will > only show up on linux, due to the > > #if defined(linux) > R_CStackStart = (uintptr_t) __libc_stack_end; > #elif ... > > in unix/system.c . Also the error may not be 100% reproducible, depending > on where exactly the stack for the worker thread is allocated, but at least > for me it has triggered every single time I tried it (recent debian > unstable on a Pentium M, for reference). > > For your convenience, if you place the testcase in tests/Embedding of your > R source tree, here are the lines needed to compile and run: > > gcc -I. -I../../src/include -I../../src/include -I/usr/local/include > -DHAVE_CONFIG_H -g -O2 -std=gnu99 -c threadEmbed.c -o threadEmbed.o > > ../../bin/R CMD LINK gcc -o threadEmbed > threadEmbed.o -L../../lib -lR -lpthread > > (R_HOME=../..; export R_HOME; ./threadEmbed --silent) > > Once again, I don't know how many embedding applications are affected by > this, but it is absolutely fatal for rkward, at least. The proposed patch, > cited again, below, fixes the problem. > > Regards > Thomas > > On Monday 17 April 2006 15:20, Thomas Friedrichsmeier wrote: > > Excuse me please, for being impatient, but I'm worried this issue may not > > be considered important enough to be fixed in R 2.3.0 at this late point > > of time. So let me re-state this: > > > > In the current state, R will *not work at all* when run in a thread on > > linux. > > > > I do not know how many embedding applications run R in a separate thread, > > and are affected by this. I know that at least rkward does, and it will > > not run. > > > > Reconsidering the proposals I made yesterday, after some sleep, let me > > propose this corrected fix (insert into src/unix/system.c, at line 179, > > right above "if(R_CStackStart == -1) R_CStackLimit = -1; /* never set > > */"): > > > > if (abs (R_CStackStart - (uintptr_t) &i) > 20000) { > > /* Very unlikely we're this far away from the stack start at this > > point in the code. Disable checking */ > > R_CStackStart = -1; > > } > > > > For all I care, set the safety margin to 50000 or even more. This > > heuristic is only meant to catch cases where the detected value for > > R_CStackStart is *obviously wrong*, most importantly in case of threads. > > > > In this case all it will do is to disable the check. I can see no other > > side-effect. > > > > Once again, excuse me for being impatient, but *please* consider this for > > inclusion in R 2.3.0. > > > > Regards > > Thomas
pgpYst79tdJe8.pgp
Description: PGP signature
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel