Skip to content

Bug in rowSums,DelayedMatrix-method #16

@PeteHaitch

Description

@PeteHaitch

Calling rowSums() on a large-ish DelayedMatrix leads to a serialization/forking/memory issue on macOS and Linux

library(DelayedArray)
x <- DelayedArray(matrix(1L, nrow = 10000000, ncol = 100))

# Errors
rowSums(x)

On macOS (16GB RAM) the error is:

Error: vector memory exhausted (limit reached?)

On Linux (20GB RAM) the error is:

Error in serialize(data, node$con, xdr = FALSE) : ignoring SIGPIPE signal
Error in serialize(data, node$con, xdr = FALSE) : ignoring SIGPIPE signal
Error: failed to stopSOCKclustercluster: error writing to connection
Error in serialize(data, node$con, xdr = FALSE) : ignoring SIGPIPE signal
# Then "Error in serialize(data, node$con, xdr = FALSE) : ignoring SIGPIPE signal" repeats indefinitely

I thought it might be a more general issue with blockApply() and its use of BiocParallel, but I haven't been able to trigger the problem in some brief testing. For example, using colSums() or blockApply()-ing max() over individual columns or rows of x worked fine.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions