Skip to content

Crashing R with readline()

3 messages · Henrik Bengtsson, Duncan Murdoch

#
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)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
A prompt

                                        :
[1] ""
Error: caught access violation - continue with care

It is a consistent behavior.

/Henrik
#
On 11-12-29 9:49 AM, Henrik Bengtsson wrote:
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.

Duncan Murdoch
#
On 11-12-29 4:37 PM, Duncan Murdoch wrote:
Just had another idea, and found the problem - a buffer overflow in 
getline.  I'll fix it.

Duncan Murdoch