[Bioc-devel] segfault when using RleList in DataFrames

Hervé Pagès hpages at fredhutch.org
Mon Dec 7 09:08:57 CET 2015


Hi Leonard,

Thanks for the report. This segfault was due to a long-standing bug
in the "window" method for Rle objects when the object has length 0:

   > window(Rle(), 1, 0)  # you might need to try many times before
                          # you get the segfault
    *** caught segfault ***
   address 0x12f69d74, cause 'memory not mapped'

   Traceback:
    1: .Call(.NAME, ..., PACKAGE = PACKAGE)
    2: .Call2("Rle_getStartEndRunAndOffset", x, start, end, PACKAGE = 
"IRanges")
    3: getStartEndRunAndOffset(x, start(solved_SEW), end(solved_SEW))
    4: .local(x, ...)
    5: window(Rle(), 1, 0)
    6: window(Rle(), 1, 0)

   Possible actions:
   1: abort (with core dump, if enabled)
   2: normal R exit
   3: exit R without saving workspace
   4: exit R saving workspace
   Selection: 2
   Save workspace image? [y/n/c]:

It is now fixed in release (S4Vectors 0.8.4 and IRanges 2.4.5) and
devel (S4Vectors 0.9.12 and IRanges 2.5.10).

Cheers,
H.


On 12/05/2015 03:29 PM, Leonard Goldstein wrote:
> Hi all,
>
> I ran into problems when using an RleList as column in a DataFrame
> object (see example below).
>
> Many thanks in advance for your help.
>
> Leonard
>
>
>> sessionInfo()
> R version 3.2.2 (2015-08-14)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Red Hat Enterprise Linux Server release 6.6 (Santiago)
>
> locale:
>   [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
>   [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
>   [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
>   [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
>   [9] LC_ADDRESS=C               LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats4    parallel  stats     graphics  grDevices utils     datasets
> [8] methods   base
>
> other attached packages:
> [1] IRanges_2.4.4       S4Vectors_0.8.3     BiocGenerics_0.16.1
>>
>> df <- DataFrame(ID = 1:3)
>> x <- RleList(IntegerList(vector("list", 3)))
>> df$rle <- x
>> df
> DataFrame with 3 rows and 2 columns
>
>   *** caught segfault ***
> address 0x9b00364, cause 'memory not mapped'
>
> Traceback:
>   1: .Call(.NAME, ..., PACKAGE = PACKAGE)
>   2: .Call2("Rle_getStartEndRunAndOffset", x, start, end, PACKAGE = "S4Vectors")
>   3: S4Vectors:::getStartEndRunAndOffset(x, start(solved_SEW), end(solved_SEW))
>   4: .local(x, ...)
>   5: window(x, start = 1L, width = n)
>   6: window(x, start = 1L, width = n)
>   7: .local(x, ...)
>   8: head(x, 3)
>   9: head(x, 3)
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>

-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the Bioc-devel mailing list