From maechler at stat.math.ethz.ch  Tue May 13 09:50:01 2008
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Tue, 13 May 2008 09:50:01 +0200
Subject: [Rd] (PR#11281) Bug in R 2.7 for over long lines
In-Reply-To: <1210659443.14102.76.camel@localhost>
References: <20080510212018.9B0D42834159@mail.pubhealth.ku.dk>
	<48283A8A.5090608@stats.uwo.ca>
	<1210659443.14102.76.camel@localhost>
Message-ID: <18473.18473.545111.314552@stat.math.ethz.ch>

>>>>> "SS" == Soeren Sonnenburg <r-ml at nn7.de>
>>>>>     on Tue, 13 May 2008 08:17:23 +0200 writes:

    SS> On Mon, 2008-05-12 at 08:39 -0400, Duncan Murdoch wrote:
    >> On 5/10/2008 5:20 PM, bugreports at nn7.de wrote: > On Sat,
    >> 2008-05-10 at 11:19 +0100, Prof Brian Ripley wrote: >>
    >> You will see the current code is different, and your
    >> 'fix' is not needed=20 >> nor applies in R-devel.
    >> > 
    >> > would be nice...
    >> > 
    >> >> You failed to provide an example to reproduce the
    >> alleged bug, but the=20
    >> > 
    >> > well the bug was obvious, I told that I can trigger it
    >> and that the > proposed fix fixed it - no need to provide
    >> an example.
    >> 
    >> But it would be helpful to provide an example, so that we
    >> can test the fix.  As Brian told you, your fix was no
    >> good: it was not against the current code.

    SS> Well it was when I posted it 4 days after R 2.7.0 was
    SS> released.

    SS> And the bug was very obvious, I mean look at this
    SS> (quoting from my original report):

     SS> char *LongLine = (char *) malloc(nc);
     SS> ...
     SS> LongLine[nc] = '\0';

     SS> note that LongLine is only nc chars long, so the LongLine[nc]='\0' might
     SS> be an out of bounds write. the fix would be to do 
     SS> char *LongLine = (char *) malloc(nc+1);

Yes, you are right about this (first part of your report).

    SS> Anyway an example that will crash R 2.7.0 is here
    SS> http://nn7.de/debugging/Features.R .
 
    >> >> issue does seem to be using lines beyond the
    >> documented line length.
    >> > 
    >> > exactly. one can crash R with too long lines.
    >> 
    >> Then the bug is also in your code, for sending lines that
    >> are too long.  R shouldn't crash on user error, but
    >> "don't do that" is an appropriate response.

    SS> I would just like to see this bug in R fixed.

    >> >> So it would have only affected people who did that
    >> ....
    >> > 
    >> > or use auto-generated code like e.g. swig produces.
    >> 
    >> Then swig should be modified to produce valid code.

    SS> Sure. That's what I am trying to achieve.

    SS> [...]
    >> > I don't intend to play with devel versions of R, I was
    >> just trying to > get swig for R2.7 to work. Sorry that it
    >> triggered a bug in R. =EF=BB=BFI w= > ill > try R2.7.1
    >> when it is released and report back.
    >> 
    >> If you aren't interested in being helpful by testing
    >> fixes for your code, then I doubt if any of us are going
    >> to go out of our way to help you with your errors.

    SS> ??I still don't understand what I could have possibly
    SS> done wrong in my initial post
    SS> ?(http://article.gmane.org/gmane.comp.lang.r.devel/16243/)
    SS> to cause this meta-discussion.

I think it was partly misunderstanding on both sides.

The bug *was* indeed fixed only a couple of hours after your report :

 >> r45496 | ... | 2008-04-25 09:37:53 +0200 (Fri, 25 Apr 2008) |
 >> 
 >> change long-standing out-by-one error for invalid input

I agree it would have been kind if we had thanked you
and had told you that the bug actually had been fixed.
Sometimes this if forgotten because of busy "schedules" ...
So let me give you late 
   ** Thank you very much !! ** 
for the original bug report.

Martin Maechler, ETH Zurich

    SS> But to put things in the right light. There is no bug in
    SS> my code (this time). But in R. And I did not ask for
    SS> help - to the contrary: I've pointed out a trivial to
    SS> fix bug in R 2.7.0 and showed how it could be fixed.

    SS> The problem is that I am not really an R user, but just
    SS> wanted to support the R community by porting shogun to R
    SS> in the hope that it may be useful for some. To achieve
    SS> this I am fixing bugs in the R swig interface generator
    SS> and now also R. So the detour I am taking here is
    SS> massive and I have not received any help (except from
    SS> Dirk so far).

    SS> So if possible lets stay focused on the bug: Dirk helped
    SS> me to get the R from svn-trunk (it says R 2.8 at
    SS> startup) to compile and voila, sourcing the code from
    SS> above does not generate any crashes anymore. So the
    SS> rewrite of gram.c fixes it I guess.

    SS> Soeren



[Rd] (PR#11281) Bug in R 2.7 for over long lines
Martin Maechler