You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Nicola Crane (Jira)" <ji...@apache.org> on 2021/11/02 10:44:00 UTC

[jira] [Updated] (ARROW-14519) [R] left_join segfault

     [ https://issues.apache.org/jira/browse/ARROW-14519?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nicola Crane updated ARROW-14519:
---------------------------------
    Description: 
 
{code:r}
library(arrow)
library(dplyr)

basic_tbl <- arrow_table(
  tibble::tibble(
    x = 1:3,
    y = c("a", "b", "c")
  )
)

basic_tbl2 <- arrow_table(
  tibble::tibble(
    x = 1:3,
    z = c(T, F, T)
  )
)

list_tbl <- arrow_table(
  tibble::tibble(
    z = list(c("first", "list", "col", "row"), c("second row ", "here")),
    x = 1:2
  )
)

# works
left_join(basic_tbl, basic_tbl2) %>%
  collect()

# segfaults
left_join(basic_tbl, list_tbl) %>%
  collect()

{code}

  was:
This code results in a segfault:


{code:r}
library(arrow)
library(dplyr)
jedi <- data.frame(name = c("C-3PO", "Luke Skywalker", "Obi-Wan Kenobi"), jedi = c(FALSE, TRUE, TRUE))
jedi_arrow <- arrow_table(jedi)
left_join(jedi_arrow, starwars) %>% collect()
{code}

{code:r}
 *** caught segfault ***
address 0x0, cause 'memory not mapped'

Traceback:
 1: (function (n) {    if (existsInFrame(n, envenv))         envenv[[n]]    else {        e <- mkenv()        envenv[[n]] <- e        key <- env[[n]]        ekey <- if (is.list(key))             key$eagerKey        else key        data <- lazyLoadDBfetch(ekey, datafile, compressed, envhook)        parent.env(e) <- if (!is.null(data$enclos))             data$enclos        else emptyenv()        list2env(data$bindings, e)        if (!is.null(data$attributes))             attributes(e) <- data$attributes        if (!is.null(data$isS4) && data$isS4)             .Internal(setS4Object(e, TRUE, TRUE))        if (is.list(key)) {            expr <- quote(lazyLoadDBfetch(KEY, datafile, compressed,                 envhook))            .Internal(makeLazy(names(key$lazyKeys), key$lazyKeys,                 expr, parent.env(environment()), e))        }        if (!is.null(data$locked) && data$locked)             .Internal(lockEnvironment(e, FALSE))        e    }})("env::104")
 2: ExecPlan_run(self, node, sorting, select_k)
 3: plan$Run(final_node)
 4: do_exec_plan(x)
 5: collect.arrow_dplyr_query(.)
 6: collect(.)
 7: left_join(jedi_arrow, starwars) %>% collect()
{code}



> [R] left_join segfault
> ----------------------
>
>                 Key: ARROW-14519
>                 URL: https://issues.apache.org/jira/browse/ARROW-14519
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: R
>            Reporter: Nicola Crane
>            Priority: Major
>
>  
> {code:r}
> library(arrow)
> library(dplyr)
> basic_tbl <- arrow_table(
>   tibble::tibble(
>     x = 1:3,
>     y = c("a", "b", "c")
>   )
> )
> basic_tbl2 <- arrow_table(
>   tibble::tibble(
>     x = 1:3,
>     z = c(T, F, T)
>   )
> )
> list_tbl <- arrow_table(
>   tibble::tibble(
>     z = list(c("first", "list", "col", "row"), c("second row ", "here")),
>     x = 1:2
>   )
> )
> # works
> left_join(basic_tbl, basic_tbl2) %>%
>   collect()
> # segfaults
> left_join(basic_tbl, list_tbl) %>%
>   collect()
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)