Kevin B. Hendricks
2006-Jul-04 18:21 UTC
[Rd] Final patch for bug 8141 - rewriting substituteList
Hi, Attached is both the patch and a gzipped version of the patch that is the fix for bug 8141 - rewriting substituteList in coerce.c to use a loop instead of recursion to walk the list. The new version passes all of my tests (make check-all, etc) and I have used it with no negative impact to my work (as verified by comparing before and after tests) so far. The new version fixes the C-stack overflow problem documented in the 8141 bug report. [kbhend at base3 ~]$ cat test.r dfn <- rep(list(rep(0,2)),300000) test <- as.data.frame.list(dfn) which no longer fails on the development tree with this patch in place. I realize it is hard to verify this patch as correct since it converts recursion back into a loop. There has been no official code review as far as I can tell by anyone so far. So perhaps it could be introduced into 2.4.0 with an environment variable switch to allow users to switch back to the old version to add more evidence as to its correctness. As I said, I have used the patch without problems in my day to day work. Also, if there are other annoying low level bugs out there people would like tracked down and fixed, please point me at them. Kevin -------------- next part -------------- -------------- next part -------------- A non-text attachment was scrubbed... Name: bug_8141.patch.gz Type: application/x-gzip Size: 944 bytes Desc: not available Url : https://stat.ethz.ch/pipermail/r-devel/attachments/20060704/ffd7e14a/attachment.gz -------------- next part --------------
Kevin B. Hendricks
2006-Jul-18 12:59 UTC
[Rd] Final patch for bug 8141 - rewriting substituteList
Hi, Is there anybody interested in this patch to fix bug 8141 - the rewriting substituteList in coerce.c? If so, I have updated it to today's tree. Testers welcome as well. If not, please let me know. Thanks, Kevin> Attached is both the patch and a gzipped version of the patch that > is the fix for bug 8141 - rewriting substituteList in coerce.c to > use a loop instead of recursion to walk the list. > > The new version passes all of my tests (make check-all, etc) and I > have used it with no negative impact to my work (as verified by > comparing before and after tests) so far. > > The new version fixes the C-stack overflow problem documented in > the 8141 bug report. > > [kbhend at base3 ~]$ cat test.r > dfn <- rep(list(rep(0,2)),300000) > test <- as.data.frame.list(dfn) > > which no longer fails on the development tree with this patch in > place. > > I realize it is hard to verify this patch as correct since it > converts recursion back into a loop. There has been no official > code review as far as I can tell by anyone so far. > > So perhaps it could be introduced into 2.4.0 with an environment > variable switch to allow users to switch back to the old version to > add more evidence as to its correctness. > > As I said, I have used the patch without problems in my day to day > work.-------------- next part --------------