[Rd] Crashing R with readline()
murdoch.duncan at gmail.com
Thu Dec 29 22:37:00 CET 2011
On 11-12-29 9:49 AM, Henrik Bengtsson wrote:
> I get the following with R v2.14.1 patched on Windows 7:
> % Rterm --vanilla --silent
> R version 2.14.1 Patched (2011-12-26 r58001)
> Platform: x86_64-pc-mingw32/x64 (64-bit)
>  LC_COLLATE=English_United States.1252
>  LC_CTYPE=English_United States.1252
>  LC_MONETARY=English_United States.1252
>  LC_NUMERIC=C
>  LC_TIME=English_United States.1252
> attached base packages:
>  stats graphics grDevices utils datasets methods base
>> readline(sprintf("%-*s:", 180, "A prompt"))
> A prompt
>  ""
> Error: caught access violation - continue with care
> It is a consistent behavior.
I can reproduce this, but I can't spot where the problem is. I/O in
Rterm is very complicated, because we use a getline library that
implements line editing, and we run the I/O in a thread so that graphics
windows can be updated while waiting for input.
Presumably the problem is the long prompt causing a buffer overflow
somewhere, and a workaround is to use a more reasonable length of
prompt, but I don't think I'm going to be able to offer a real fix. I'd
guess this bug is local to Rterm in Windows, but we don't really have
good tools there to detect buffer overflows.
More information about the R-devel