From brechbuehler at gmail.com  Thu Jan 29 16:35:04 2009
From: brechbuehler at gmail.com (brechbuehler at gmail.com)
Date: Thu, 29 Jan 2009 16:35:04 +0100 (CET)
Subject: [Rd] Segfault when mistakenly calling [.data.frame (PR#13487)
Message-ID: <20090129153504.D5170282C76F@mail.pubhealth.ku.dk>

Full_Name: Christian Brechbuehler
Version: 2.7.2, 2.8.1
OS: linux-gnu
Submission from: (NULL) (24.128.51.18)


Calling [.data.frame on an object that's not a data frame, specifically 1:10,
causes segmentation fault.

Context
=======
We can subscript with a number of different notations:

   > (1:10)[3]
   [1] 3
   > do.call(get("[",pos="package:base"),list(1:10,3))
   [1] 3
   > do.call(get("[.numeric_version",pos="package:base"),list(1:10,3))
   [1] 3

Problem
=======
If we mistakenly believe the object is a data frame (as we did in a much more
complicated real situation), this happens: 

   > do.call(get("[.data.frame",pos="package:base"),list(1:10,3))
   Error in NextMethod("[") : 
     no calling generic was found: was a method called directly?

    *** caught segfault ***
   address (nil), cause 'unknown'

   Process R:2 segmentation fault (core dumped) at Thu Jan 29 09:26:29 2009

The Error message is appropriate.  But the segmentation fault is unexpected.


Versions
========
I reproduced the problem on R 2.7.2 and 2.8.1.  Details:

> version
               _                                          
platform       x86_64-unknown-linux-gnu                   
arch           x86_64                                     
os             linux-gnu                                  
system         x86_64, linux-gnu                          
status         Patched                                    
major          2                                          
minor          7.2                                        
year           2008                                       
month          09                                         
day            20                                         
svn rev        46776                                      
language       R                                          
version.string R version 2.7.2 Patched (2008-09-20 r46776)

==========================================================

> version
               _                                          
platform       x86_64-unknown-linux-gnu                   
arch           x86_64                                     
os             linux-gnu                                  
system         x86_64, linux-gnu                          
status         Patched                                    
major          2                                          
minor          8.1                                        
year           2009                                       
month          01                                         
day            26                                         
svn rev        47743                                      
language       R                                          
version.string R version 2.8.1 Patched (2009-01-26 r47743)



[Rd] Segfault when mistakenly calling [.data.frame (PR#13487)
brechbuehler at gmail.com