On Wed, 11 Jun 2008 [EMAIL PROTECTED] wrote:
> Full_Name: Juho Vuori
> Version: 2.7.0 (2008-04-22)
> OS: Linux poseidon.fimr.fi 2.6.23.17-88.fc7PAE #1 SMP Thu May 15 00:22:53 EDT
> 2008 i686 i686 i386 GNU/Linux
> Submission from: (NULL) (193.166.188.194)
>
>
> Calling read.table() twice the following way causes a segmentation fault in R.
> Run R and type the following commands:
>
> > read.table(stdin())
> 0: 1 2 3
> 1: 3
> 2:
> Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
> line 2 did not have 3 elements
> > read.table(stdin())
>
> *** caught segfault ***
> address 0x64616572, cause 'memory not mapped'
>
valgrind shows that con->nPushBack>0 but con->PushBack
has already been freed by do_clearpushback:
> read.table(stdin())
0: 1 2 3
1: 3
2:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,
:
line 2 did not have 3 elements
> read.table(stdin())
==11631== Invalid read of size 4
==11631== at 0x80B3281: ConsoleGetcharWithPushBack (scan.c:130)
==11631== by 0x80B348E: scanchar (scan.c:214)
==11631== by 0x80B7E24: do_readtablehead (scan.c:1568)
==11631== by 0x80653E0: do_internal (names.c:1129)
...
==11631== Address 0x443E638 is 0 bytes inside a block of size 20 free'd
==11631== at 0x40052A3: free (vg_replace_malloc.c:233)
==11631== by 0x8128A41: do_clearpushback (connections.c:3671)
==11631== by 0x80653E0: do_internal (names.c:1129)
==11631== by 0x815EA27: Rf_eval (eval.c:461)
==11631== by 0x812B133: R_run_onexits (context.c:147)
0x080b3281 in ConsoleGetcharWithPushBack (con=0x4067c50) at scan.c:130
130 curLine = con->PushBack[con->nPushBack-1];
(gdb) print con
$1 = 0x4067c50
(gdb) print con->PushBack
$2 = (char **) 0x443e638
The following change to connections.c:do_clearpushback() seems to fix it.
Index: connections.c
===================================================================
--- connections.c (revision 45893)
+++ connections.c (working copy)
@@ -3669,6 +3669,7 @@
if(con->nPushBack > 0) {
for(j = 0; j < con->nPushBack; j++) free(con->PushBack[j]);
free(con->PushBack);
+ con->nPushBack = 0 ;
}
return R_NilValue;
}
----------------------------------------------------------------------------
Bill Dunlap
Insightful Corporation
bill at insightful dot com
"All statements in this message represent the opinions of the author and do
not necessarily reflect Insightful Corporation policy or position."
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel