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

ASF GitHub Bot updated ARROW-16201:
-----------------------------------
    Labels: pull-request-available  (was: )

> [R] SafeCallIntoR on 3.4
> ------------------------
>
>                 Key: ARROW-16201
>                 URL: https://issues.apache.org/jira/browse/ARROW-16201
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: R
>            Reporter: Jonathan Keane
>            Assignee: Jonathan Keane
>            Priority: Blocker
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> In the R versions test, we're seeing a segfault on 3.4:
> {code}
> Start test: SafeCallIntoR errors from the non-R thread
>  *** caught segfault ***
> address 0x2b, cause 'memory not mapped'
> Traceback:
>  1: .Call(`_arrow_TestSafeCallIntoR`, r_fun_that_returns_a_string,     opt)
>  2: TestSafeCallIntoR(function() "string one!", opt = 
> "async_without_executor")
>  3: eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
>  4: withCallingHandlers(expr, condition = function(cnd) {    if 
> (!is.null(matched) || !matches(cnd)) {        return()    }    if 
> (can_entrace(cnd)) {        cnd <- cnd_entrace(cnd)    }    matched <<- cnd   
>  if (inherits(cnd, "message") || inherits(cnd, "warning")) {        
> cnd_muffle(cnd)    }    else if (inherits(cnd, "error") || inherits(cnd, 
> "skip")) {        return_from(tl, cnd)    }})
>  5: .capture(act$val <- eval_bare(quo_get_expr(.quo), quo_get_env(.quo)),     
> ...)
>  6: quasi_capture(enquo(object), label, capture_matching_condition,     
> matches = matcher)
>  7: expect_condition_matching("error", {    {        object    }}, regexp = 
> regexp, class = class, ..., inherit = inherit, info = info,     label = label)
>  8: expect_error(TestSafeCallIntoR(function() "string one!", opt = 
> "async_without_executor"),     "Call to R from a non-R thread")
>  9: eval(code, test_env)
> 10: eval(code, test_env)
> 11: withCallingHandlers({    eval(code, test_env)    if (!handled && 
> !is.null(test)) {        skip_empty()    }}, expectation = 
> handle_expectation, skip = handle_skip, warning = handle_warning,     message 
> = handle_message, error = handle_error)
> 12: doTryCatch(return(expr), name, parentenv, handler)
> 13: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 14: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
> 15: doTryCatch(return(expr), name, parentenv, handler)
> 16: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),     
> names[nh], parentenv, handlers[[nh]])
> 17: tryCatchList(expr, classes, parentenv, handlers)
> 18: tryCatch(withCallingHandlers({    eval(code, test_env)    if (!handled && 
> !is.null(test)) {        skip_empty()    }}, expectation = 
> handle_expectation, skip = handle_skip, warning = handle_warning,     message 
> = handle_message, error = handle_error), error = handle_fatal,     skip = 
> function(e) {    })
> 19: test_code(desc, code, env = parent.frame(), reporter = reporter)
> 20: testthat::test_that(what, {    skip_if(getOption("..skip.tests", TRUE), 
> "arrow C++ library not available")    code})
> 21: test_that("SafeCallIntoR errors from the non-R thread", {    
> skip_on_cran()    expect_error(TestSafeCallIntoR(function() "string one!",    
>      opt = "async_without_executor"), "Call to R from a non-R thread")    
> expect_error(TestSafeCallIntoR(function() stop("an error!"),         opt = 
> "async_without_executor"), "Call to R from a non-R thread")})
> 22: eval(code, test_env)
> 23: eval(code, test_env)
> 24: withCallingHandlers({    eval(code, test_env)    if (!handled && 
> !is.null(test)) {        skip_empty()    }}, expectation = 
> handle_expectation, skip = handle_skip, warning = handle_warning,     message 
> = handle_message, error = handle_error)
> 25: doTryCatch(return(expr), name, parentenv, handler)
> 26: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 27: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
> 28: doTryCatch(return(expr), name, parentenv, handler)
> 29: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),     
> names[nh], parentenv, handlers[[nh]])
> 30: tryCatchList(expr, classes, parentenv, handlers)
> 31: tryCatch(withCallingHandlers({    eval(code, test_env)    if (!handled && 
> !is.null(test)) {        skip_empty()    }}, expectation = 
> handle_expectation, skip = handle_skip, warning = handle_warning,     message 
> = handle_message, error = handle_error), error = handle_fatal,     skip = 
> function(e) {    })
> 32: test_code(NULL, exprs, env)
> 33: source_file(path, child_env(env), wrap = wrap)
> 34: FUN(X[[i]], ...)
> 35: lapply(test_paths, test_one_file, env = env, wrap = wrap)
> 36: doTryCatch(return(expr), name, parentenv, handler)
> 37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 38: tryCatchList(expr, classes, parentenv, handlers)
> 39: tryCatch(code, testthat_abort_reporter = function(cnd) {    
> cat(conditionMessage(cnd), "\n")    NULL})
> 40: with_reporter(reporters$multi, lapply(test_paths, test_one_file,     env 
> = env, wrap = wrap))
> 41: test_files(test_dir = test_dir, test_package = test_package,     
> test_paths = test_paths, load_helpers = load_helpers, reporter = reporter,    
>  env = env, stop_on_failure = stop_on_failure, stop_on_warning = 
> stop_on_warning,     wrap = wrap, load_package = load_package)
> 42: test_files(test_dir = path, test_paths = test_paths, test_package = 
> package,     reporter = reporter, load_helpers = load_helpers, env = env,     
> stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,     
> wrap = wrap, load_package = load_package, parallel = parallel)
> 43: test_dir("testthat", package = package, reporter = reporter,     ..., 
> load_package = "installed")
> 44: test_check("arrow", reporter = arrow_reporter)
> An irrecoverable exception occurred. R is aborting now ...
> Segmentation fault (core dumped)
> {code}
> https://github.com/ursacomputing/crossbow/runs/6017815299?check_suite_focus=true



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to