Running ‘000.sessionDetails.R’
  Running ‘ClusterRegistry.R’
  Running ‘DEPRECATED.eager.R’
  Running ‘DEPRECATED.lazy.R’
  Running ‘Future-class.R’
  Running ‘FutureError.R’
  Running ‘FutureGlobals.R’
  Running ‘FutureRegistry.R’
  Running ‘as.cluster.R’
  Running ‘availableCores.R’
  Running ‘availableWorkers.R’
  Running ‘backtrace.R’
  Running ‘cluster.R’ [0m/12m]
  Running ‘constant.R’
  Running ‘demo.R’
  Running ‘deprecated.R’
  Running ‘dotdotdot.R’
  Running ‘early-signaling.R’
  Running ‘future,labels.R’
  Running ‘future.R’
  Running ‘futureAssign.R’
  Running ‘futureAssign_OP.R’
  Running ‘futureAssign_OP_with_environment.R’
  Running ‘futureAssign_OP_with_listenv.R’
  Running ‘futureCall.R’
  Running ‘futureOf.R’
  Running ‘futureOf_with_environment.R’
  Running ‘futureOf_with_listenv.R’
  Running ‘future_lapply,RNG.R’ [78s/97s]
  Running ‘future_lapply,globals.R’
  Running ‘future_lapply.R’ [10s/11s]
  Running ‘futures.R’ [25s/35s]
  Running ‘globals,NSE.R’
  Running ‘globals,formulas.R’
  Running ‘globals,manual.R’
  Running ‘globals,resolve.R’
  Running ‘globals,subassignment.R’
  Running ‘globals,toolarge.R’
  Running ‘globals,tricky.R’ [10s/11s]
  Running ‘globals,tricky_recursive.R’
  Running ‘globalsOf,tweaks.R’
  Running ‘invalid-owner.R’
  Running ‘makeClusterPSOCK.R’
  Running ‘mandelbrot.R’
  Running ‘multicore.R’
  Running ‘multiprocess.R’
  Running ‘multisession.R’ [19s/16s]
  Running ‘nbrOfWorkers.R’
  Running ‘nested_futures,mc.cores.R’ [26s/27s]
  Running ‘nested_futures.R’ [12s/11s]
  Running ‘objectSize.R’
  Running ‘plan.R’ [21s/21s]
  Running ‘remote.R’
  Running ‘requestCore.R’
  Running ‘requestNode.R’
  Running ‘resolve.R’ [15s/48s]
  Running ‘rng.R’ [9s/15s]
  Running ‘sequential.R’
  Running ‘sessionDetails.R’
  Running ‘startup.R’
  Running ‘transparent.R’
  Running ‘tweak.R’
  Running ‘utils.R’
  Running ‘uuid.R’
  Running ‘whichIndex.R’
Running the tests in ‘tests/cluster.R’ failed.
Complete output:
  > source("incl/start.R")
  > library("listenv")
  > 
  > message("*** cluster() ...")
  *** cluster() ...
  > 
  > message("Library paths: ", paste(sQuote(.libPaths()), collapse = ", "))
  Library paths: '/tmp/RtmpEUaGQs/RLIBS_2554b911f30', '/home/ripley/R/cc/library'
  > message("Package path: ", sQuote(system.file(package = "future")))
  Package path: '/home/ripley/R/Lib32/future'
  > 
  > types <- "PSOCK"
  > if (supportsMulticore()) types <- c(types, "FORK")
  > 
  > ## WORKAROUND: covr::package_coverage() -> merge_coverage() -> ... produces
  > ## "Error in readRDS(x) : error reading from connection" for type = "FORK".
  > ## Is this related to mcparallel() comments in help("package_coverage")?
  > ## /HB 2017-05-20
  > if (covr_testing) types <- setdiff(types, "FORK")
  > 
  > for (type in types) {
  +   message("Testing with cluster type %s ...", sQuote(type))
  + 
  +   for (cores in 1:availCores) {
  +     message(sprintf("Testing with %d cores on type = %s ...",
  +                     cores, sQuote(type)))
  +     options(mc.cores = cores)
  +   
  +     ## Set up a cluster with <cores> nodes (explicitly)
  +     cl <- parallel::makeCluster(cores, type = type)
  +     plan(cluster, workers = cl)
  +   
  +     ## No global variables
  +     f <- try(cluster({
  +       42L
  +     }, workers = cl), silent = FALSE)
  +     print(f)
  +     stopifnot(inherits(f, "ClusterFuture"))
  +   
  +     print(resolved(f))
  +     y <- value(f)
  +     print(y)
  +     stopifnot(y == 42L)
  +   
  +   
  +     ## Set up a cluster with <cores> nodes (implicitly)
  +     plan(cluster, workers = cores)
  +   
  +     ## No global variables
  +     f <- try(cluster({
  +       42L
  +     }, workers = cl), silent = FALSE)
  +     print(f)
  +     stopifnot(inherits(f, "ClusterFuture"))
  +   
  +     print(resolved(f))
  +     y <- value(f)
  +     print(y)
  +     stopifnot(y == 42L)
  +   
  +   
  +     ## A global variable
  +     a <- 0
  +     f <- try(future({
  +       b <- 3
  +       c <- 2
  +       a * b * c
  +     }))
  +     print(f)
  +   
  +   
  +     ## A cluster future is evaluated in a separate
  +     ## R session process.  Changing the value of a global
  +     ## variable should not affect the result of the
  +     ## future.
  +     a <- 7  ## Make sure globals are frozen
  +     v <- value(f)
  +     print(v)
  +     stopifnot(v == 0)
  +   
  +   
  +     message("*** cluster() with globals and blocking")
  +     x <- listenv()
  +     for (ii in 1:3) {
  +       message(sprintf(" - Creating cluster future #%d ...", ii))
  +       x[[ii]] <- future({ ii })
  +     }
  +     message(sprintf(" - Resolving %d cluster futures", length(x)))
  +     v <- sapply(x, FUN = value)
  +     stopifnot(all(v == 1:3))
  +   
  +   
  +     message("*** cluster() and errors")
  +     f <- future({
  +       stop("Whoops!")
  +       1
  +     })
  +     print(f)
  +     v <- value(f, signal = FALSE)
  +     print(v)
  +     stopifnot(inherits(v, "simpleError"))
  +   
  +     res <- tryCatch(value(f), error = identity)
  +     print(res)
  +     stopifnot(inherits(res, "error"))
  +   
  +     ## Error is repeated
  +     res <- tryCatch(value(f), error = identity)
  +     print(res)
  +     stopifnot(inherits(res, "error"))
  +   
  +   
  +     message("*** cluster() - too large globals ...")
  +     ooptsT <- options(future.globals.maxSize = 1024 * 4L)
  +   
  +     limit <- getOption("future.globals.maxSize")
  +     cat(sprintf("Max total size of globals: %g bytes\n", limit))
  +   
  +     ## A large object
  +     a <- 1:1014
  +     yTruth <- sum(a)
  +     size <- object.size(a)
  +     cat(sprintf("a: %g bytes\n", size))
  +     f <- future({ sum(a) })
  +     print(f)
  +     rm(list = "a")
  +     v <- value(f)
  +     print(v)
  +     stopifnot(v == yTruth)
  +   
  +   
  +     ## A too large object
  +     a <- 1:1019 ## also on 32-bit platforms
  +     yTruth <- sum(a)
  +     size <- object.size(a)
  +     cat(sprintf("a: %g bytes\n", size))
  +     res <- tryCatch(f <- future({ sum(a) }), error = identity)
  +     rm(list = "a")
  +     stopifnot(inherits(res, "error"))
  +   
  +     ## Undo options changed in this test
  +     options(ooptsT)
  +   
  +     message("*** cluster() - too large globals ... DONE")
  +   
  +     message("*** cluster() - installed libraries ...")
  +     f <- try(cluster({
  +       list(
  +         libPaths = .libPaths()
  +       )
  +     }, workers = cl), silent = FALSE)
  +     print(f)
  +     stopifnot(inherits(f, "ClusterFuture"))
  +     v <- value(f)
  +     message(paste(capture.output(str(v)), collapse = "\n"))
  +     message("*** cluster() - installed packages ... DONE")
  +   
  +   
  +     message("*** cluster() - assert covr workaround ...")
  +     f <- try(cluster({
  +       future:::hpaste(1:100)
  +     }, workers = cl), silent = FALSE)
  +     print(f)
  +     stopifnot(inherits(f, "ClusterFuture"))
  +     v <- value(f)
  +     message(v)
  +     stopifnot(v == hpaste(1:100))
  +     message("*** cluster() - assert covr workaround ... DONE")
  +   
  +     message(sprintf("Testing with %d cores on type = %s ... DONE",
  +                     cores, sQuote(type)))
  +   } ## for (cores ...)
  +   
  +   
  +   message("*** cluster() - setDefaultCluster() ...")
  +   
  +   library("parallel")
  +   cl <- makeCluster(1L, type = type)
  +   setDefaultCluster(cl)
  +   ## FIXME: Make plan(cluster, workers = NULL) work such that
  +   ## setDefaultCluster() is actually tested.
  +   plan(cluster)
  +   
  +   pid <- Sys.getpid()
  +   message(pid)
  +   
  +   a %<-% Sys.getpid()
  +   message(a)
  +   
  +   setDefaultCluster(NULL)
  +   
  +   message("*** cluster() - setDefaultCluster() ... DONE")
  +   
  +   
  +   message("*** cluster() - exceptions ...")
  +   
  +   res <- tryCatch(cluster(42L, workers = NA), error = identity)
  +   print(res)
  +   stopifnot(inherits(res, "error"))
  +   
  +   message("*** cluster() - exceptions ... DONE")
  +   
  +   
  +   message("*** cluster() - crashed worker ...")
  +   
  +   plan(cluster, workers = cl)
  +   x %<-% 42L
  +   stopifnot(x == 42L)
  +   
  +   ## Force R worker to quit
  +   x %<-% quit(save = "no")
  +   res <- tryCatch(y <- x, error = identity)
  +   print(res)
  +   stopifnot(
  +     inherits(res, "simpleError"),
  +     inherits(res, "FutureError")
  +   )
  + 
  +   ## Verify that the reset worked
  +   cl <- parallel::makeCluster(1L, type = type)
  +   plan(cluster, workers = cl)
  +   x %<-% 42L
  +   stopifnot(x == 42L)
  +   
  +   message("*** cluster() - crashed worker ... DONE")
  +   
  +   
  +   message("*** cluster() - registry ...")
  +   
  +   ## Explicitly created clusters are *not* added to the registry
  +   cl <- parallel::makeCluster(cores, type = type)
  +   plan(cluster, workers = cl)
  +   clR <- ClusterRegistry("get")
  +   stopifnot(is.null(clR))
  +   
  +   ## ... and therefore changing plans shouldn't change anything
  +   plan(sequential)
  +   clR <- ClusterRegistry("get")
  +   stopifnot(is.null(clR))
  +   
  +   message("*** cluster() - registry ... DONE")
  +   
  +   message("Testing with cluster type %s ... DONE", sQuote(type))
  + } ## for (type ...)
  Testing with cluster type %s ...'PSOCK'
  Testing with 1 cores on type = 'PSOCK' ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 3L, host = "localhost", rank = 1L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 3L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 3L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = 1L, user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cores)
  Workers: [n = 1] 'localhost'
  Base port: 11979
  Creating node 1 of 1 ...
  - setting up node
  Starting worker #1 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11979 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #1 on 'localhost' to connect back
  Connection with worker #1 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 1 of 1 ... done
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [4] '{', '<-', '*', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              b <- 3
              c <- 2
              a * b * c
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      b <- 3
      c <- 2
      a * b * c
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 32 bytes (numeric 'a' of 32 bytes)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 0
  *** cluster() with globals and blocking
   - Creating cluster future #1 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Creating cluster future #2 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Poll #1 (0): usedNodes() = 1, workers = 1
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Creating cluster future #3 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Poll #1 (0): usedNodes() = 1, workers = 1
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Resolving 3 cluster futures
  *** cluster() and errors
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'stop'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              stop("Whoops!")
              1
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: FALSE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  Received error on future: 'Error: Whoops!
  '
  <simpleError: Whoops!>
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  *** cluster() - too large globals ...
  Max total size of globals: 4096 bytes
  a: 4080 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 3.98 KiB (4080 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              sum(a)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ... DONE
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      sum(a)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 3.98 KiB (integer 'a' of 3.98 KiB)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 514605
  a: 4104 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 4.01 KiB (4104 bytes)
  The total size of the 1 globals that need to be exported for the future expression ('{; sum(a); }') is 4.01 KiB. This exceeds the maximum allowed size of 4.00 KiB (option 'future.globals.maxSize'). There is one global: 'a' (4.01 KiB of class 'numeric').
  *** cluster() - too large globals ... DONE
  *** cluster() - installed libraries ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'list', '.libPaths'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              list(libPaths = .libPaths())
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      list(libPaths = .libPaths())
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  List of 1
   $ libPaths: chr [1:2] "/tmp/RtmpEUaGQs/RLIBS_2554b911f30" "/home/ripley/R/cc/library"
  *** cluster() - installed packages ... DONE
  *** cluster() - assert covr workaround ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', ':::', ':'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              future:::hpaste(1:100)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      future:::hpaste(1:100)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100
  *** cluster() - assert covr workaround ... DONE
  Testing with 1 cores on type = 'PSOCK' ... DONE
  Testing with 2 cores on type = 'PSOCK' ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 5L, host = "localhost", rank = 1L), list(con = 6L, host = "localhost", rank = 2L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 5L, host = "localhost", rank = 1L), 
                      list(con = 6L, host = "localhost", rank = 2L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 5L, host = "localhost", rank = 1L), 
                      list(con = 6L, host = "localhost", rank = 2L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = 2L, user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cores)
  Workers: [n = 2] 'localhost', 'localhost'
  Base port: 11610
  Creating node 1 of 2 ...
  - setting up node
  Starting worker #1 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11610 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #1 on 'localhost' to connect back
  Connection with worker #1 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 1 of 2 ... done
  Creating node 2 of 2 ...
  - setting up node
  Starting worker #2 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11610 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #2 on 'localhost' to connect back
  Connection with worker #2 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 2 of 2 ... done
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [4] '{', '<-', '*', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              b <- 3
              c <- 2
              a * b * c
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      b <- 3
      c <- 2
      a * b * c
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 32 bytes (numeric 'a' of 32 bytes)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 0
  *** cluster() with globals and blocking
   - Creating cluster future #1 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Creating cluster future #2 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #2 ...
  Exporting 'ii' (32 bytes) to cluster node #2 ...
  Exporting 'ii' (32 bytes) to cluster node #2 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #2 ... DONE
  ClusterFuture started
   - Creating cluster future #3 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Poll #1 (0): usedNodes() = 2, workers = 2
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Resolving 3 cluster futures
  *** cluster() and errors
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'stop'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              stop("Whoops!")
              1
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: FALSE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  Received error on future: 'Error: Whoops!
  '
  <simpleError: Whoops!>
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  *** cluster() - too large globals ...
  Max total size of globals: 4096 bytes
  a: 4080 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 3.98 KiB (4080 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              sum(a)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ... DONE
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      sum(a)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 3.98 KiB (integer 'a' of 3.98 KiB)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 514605
  a: 4104 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 4.01 KiB (4104 bytes)
  The total size of the 1 globals that need to be exported for the future expression ('{; sum(a); }') is 4.01 KiB. This exceeds the maximum allowed size of 4.00 KiB (option 'future.globals.maxSize'). There is one global: 'a' (4.01 KiB of class 'numeric').
  *** cluster() - too large globals ... DONE
  *** cluster() - installed libraries ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'list', '.libPaths'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              list(libPaths = .libPaths())
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      list(libPaths = .libPaths())
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  List of 1
   $ libPaths: chr [1:2] "/tmp/RtmpEUaGQs/RLIBS_2554b911f30" "/home/ripley/R/cc/library"
  *** cluster() - installed packages ... DONE
  *** cluster() - assert covr workaround ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', ':::', ':'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              future:::hpaste(1:100)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      future:::hpaste(1:100)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100
  *** cluster() - assert covr workaround ... DONE
  Testing with 2 cores on type = 'PSOCK' ... DONE
  *** cluster() - setDefaultCluster() ...
  
  Attaching package: 'parallel'
  
  The following object is masked _by_ '.GlobalEnv':
  
      detectCores
  
  plan(): plan_init() of 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = availableWorkers(), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: FALSE
  - call: plan(cluster)
  Workers: [n = 2] 'localhost', 'localhost'
  Base port: 11500
  Creating node 1 of 2 ...
  - setting up node
  Starting worker #1 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11500 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #1 on 'localhost' to connect back
  Connection with worker #1 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 1 of 2 ... done
  Creating node 2 of 2 ...
  - setting up node
  Starting worker #2 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11500 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #2 on 'localhost' to connect back
  Connection with worker #2 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 2 of 2 ... done
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = availableWorkers(), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'cluster', 'multiprocess', 'future', 'function' ... DONE
  17986
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] 'Sys.getpid'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(Sys.getpid())
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = availableWorkers(), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  19424
  *** cluster() - setDefaultCluster() ... DONE
  *** cluster() - exceptions ...
  <simpleError in UseMethod("as.cluster"): no applicable method for 'as.cluster' applied to an object of class "logical">
  *** cluster() - exceptions ... DONE
  *** cluster() - crashed worker ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 8L, host = "localhost", rank = 1L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 8L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(42L)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 8L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] 'quit'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(quit(save = "no"))
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 8L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  <FutureError in unserialize(node$con): Failed to retrieve the value of ClusterFuture from cluster node #1 (on 'localhost').  The reason reported was 'error reading from connection'>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  quit(save = "no")
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 4L, host = "localhost", rank = 1L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 4L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(42L)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 4L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  *** cluster() - crashed worker ... DONE
  *** cluster() - registry ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 7L, host = "localhost", rank = 1L), list(con = 9L, host = "localhost", rank = 2L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 7L, host = "localhost", rank = 1L), 
                      list(con = 9L, host = "localhost", rank = 2L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  *** cluster() - registry ... DONE
  Testing with cluster type %s ... DONE'PSOCK'
  Testing with cluster type %s ...'FORK'
  Testing with 1 cores on type = 'FORK' ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 10L, host = "localhost", rank = 1L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 10L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 10L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = 1L, user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cores)
  Workers: [n = 1] 'localhost'
  Base port: 11301
  Creating node 1 of 1 ...
  - setting up node
  Starting worker #1 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11301 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #1 on 'localhost' to connect back
  Connection with worker #1 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 1 of 1 ... done
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  getGlobalsAndPackages() ...
  Searching for globals ...
  Warning in parent.env(env) :
    closing unused connection 9 (<-localhost:11489)
  Warning in parent.env(env) :
    closing unused connection 7 (<-localhost:11489)
  Warning in parent.env(env) :
    closing unused connection 4 (<-localhost:11489)
  - globals found: [4] '{', '<-', '*', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              b <- 3
              c <- 2
              a * b * c
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      b <- 3
      c <- 2
      a * b * c
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 32 bytes (numeric 'a' of 32 bytes)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 0
  *** cluster() with globals and blocking
   - Creating cluster future #1 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Creating cluster future #2 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Poll #1 (0): usedNodes() = 1, workers = 1
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Creating cluster future #3 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Poll #1 (0): usedNodes() = 1, workers = 1
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Resolving 3 cluster futures
  *** cluster() and errors
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'stop'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              stop("Whoops!")
              1
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  Received error on future: 'Error: Whoops!
  '
  <simpleError: Whoops!>
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  *** cluster() - too large globals ...
  Max total size of globals: 4096 bytes
  a: 4080 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 3.98 KiB (4080 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              sum(a)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ... DONE
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      sum(a)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 3.98 KiB (integer 'a' of 3.98 KiB)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 514605
  a: 4104 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 4.01 KiB (4104 bytes)
  The total size of the 1 globals that need to be exported for the future expression ('{; sum(a); }') is 4.01 KiB. This exceeds the maximum allowed size of 4.00 KiB (option 'future.globals.maxSize'). There is one global: 'a' (4.01 KiB of class 'numeric').
  *** cluster() - too large globals ... DONE
  *** cluster() - installed libraries ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'list', '.libPaths'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              list(libPaths = .libPaths())
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      list(libPaths = .libPaths())
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  List of 1
   $ libPaths: chr [1:2] "/tmp/RtmpEUaGQs/RLIBS_2554b911f30" "/home/ripley/R/cc/library"
  *** cluster() - installed packages ... DONE
  *** cluster() - assert covr workaround ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', ':::', ':'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              future:::hpaste(1:100)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 1L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      future:::hpaste(1:100)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: FALSE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100
  *** cluster() - assert covr workaround ... DONE
  Testing with 1 cores on type = 'FORK' ... DONE
  Testing with 2 cores on type = 'FORK' ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 4L, host = "localhost", rank = 1L), list(con = 7L, host = "localhost", rank = 2L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 4L, host = "localhost", rank = 1L), 
                      list(con = 7L, host = "localhost", rank = 2L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 4L, host = "localhost", rank = 1L), 
                      list(con = 7L, host = "localhost", rank = 2L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = 2L, user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cores)
  Workers: [n = 2] 'localhost', 'localhost'
  Base port: 11948
  Creating node 1 of 2 ...
  - setting up node
  Starting worker #1 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11948 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #1 on 'localhost' to connect back
  Connection with worker #1 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 1 of 2 ... done
  Creating node 2 of 2 ...
  - setting up node
  Starting worker #2 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11948 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #2 on 'localhost' to connect back
  Connection with worker #2 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 2 of 2 ... done
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] '{'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              42L
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      42L
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] TRUE
  [1] 42
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [4] '{', '<-', '*', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              b <- 3
              c <- 2
              a * b * c
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ...
  Exporting 'a' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      b <- 3
      c <- 2
      a * b * c
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 32 bytes (numeric 'a' of 32 bytes)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 0
  *** cluster() with globals and blocking
   - Creating cluster future #1 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Creating cluster future #2 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (32 bytes) to cluster node #2 ...
  Exporting 'ii' (32 bytes) to cluster node #2 ...
  Exporting 'ii' (32 bytes) to cluster node #2 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #2 ... DONE
  ClusterFuture started
   - Creating cluster future #3 ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'ii'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 32 bytes (32 bytes)
  - globals: [1] 'ii'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              ii
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Poll #1 (0): usedNodes() = 2, workers = 2
  Exporting 1 global objects (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ...
  Exporting 'ii' (32 bytes) to cluster node #1 ... DONE
  Exporting 1 global objects (32 bytes) to cluster node #1 ... DONE
  ClusterFuture started
   - Resolving 3 cluster futures
  *** cluster() and errors
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [2] '{', 'stop'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              stop("Whoops!")
              1
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  Received error on future: 'Error: Whoops!
  '
  <simpleError: Whoops!>
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  Future state: 'failed'
  Future value: 'Error: Whoops!
  '
  <FutureError: Whoops!>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      stop("Whoops!")
      1
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: 64 bytes of class 'simpleError'
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  *** cluster() - too large globals ...
  Max total size of globals: 4096 bytes
  a: 4080 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 3.98 KiB (4080 bytes)
  - globals: [1] 'a'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              sum(a)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ...
  Exporting 'a' (3.98 KiB) to cluster node #1 ... DONE
  Exporting 1 global objects (3.98 KiB) to cluster node #1 ... DONE
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      sum(a)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: 1 objects totaling 3.98 KiB (integer 'a' of 3.98 KiB)
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  [1] 514605
  a: 4104 bytes
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'sum', 'a'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 4.01 KiB (4104 bytes)
  The total size of the 1 globals that need to be exported for the future expression ('{; sum(a); }') is 4.01 KiB. This exceeds the maximum allowed size of 4.00 KiB (option 'future.globals.maxSize'). There is one global: 'a' (4.01 KiB of class 'numeric').
  *** cluster() - too large globals ... DONE
  *** cluster() - installed libraries ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', 'list', '.libPaths'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              list(libPaths = .libPaths())
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      list(libPaths = .libPaths())
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  List of 1
   $ libPaths: chr [1:2] "/tmp/RtmpEUaGQs/RLIBS_2554b911f30" "/home/ripley/R/cc/library"
  *** cluster() - installed packages ... DONE
  *** cluster() - assert covr workaround ...
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [3] '{', ':::', ':'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local({
              future:::hpaste(1:100)
          })
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = 2L, 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  ClusterFuture:
  Label: '<none>'
  Expression:
  {
      future:::hpaste(1:100)
  }
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100
  *** cluster() - assert covr workaround ... DONE
  Testing with 2 cores on type = 'FORK' ... DONE
  *** cluster() - setDefaultCluster() ...
  plan(): plan_init() of 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = availableWorkers(), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: FALSE
  - call: plan(cluster)
  Workers: [n = 2] 'localhost', 'localhost'
  Base port: 11548
  Creating node 1 of 2 ...
  - setting up node
  Starting worker #1 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11548 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #1 on 'localhost' to connect back
  Connection with worker #1 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 1 of 2 ... done
  Creating node 2 of 2 ...
  - setting up node
  Starting worker #2 on 'localhost': '/home/ripley/R/cc/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11548 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE
  Waiting for worker #2 on 'localhost' to connect back
  Connection with worker #2 on 'localhost' established
  - assigning connection UUID
  - collecting session information
  Creating node 2 of 2 ... done
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = availableWorkers(), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'cluster', 'multiprocess', 'future', 'function' ... DONE
  17986
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] 'Sys.getpid'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(Sys.getpid())
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = availableWorkers(), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  20735
  *** cluster() - setDefaultCluster() ... DONE
  *** cluster() - exceptions ...
  <simpleError in UseMethod("as.cluster"): no applicable method for 'as.cluster' applied to an object of class "logical">
  *** cluster() - exceptions ... DONE
  *** cluster() - crashed worker ...
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 12L, host = "localhost", rank = 1L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 12L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(42L)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 12L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  getGlobalsAndPackages() ...
  Searching for globals ...
  - globals found: [1] 'quit'
  Searching for globals ... DONE
  Resolving globals: FALSE
  
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(quit(save = "no"))
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 12L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  <FutureError in unserialize(node$con): Failed to retrieve the value of ClusterFuture from cluster node #1 (on 'localhost').  The reason reported was 'error reading from connection'>
  
  
  DEBUG: BEGIN TROUBLESHOOTING HELP
  Future involved:
  ClusterFuture:
  Label: '<none>'
  Expression:
  quit(save = "no")
  Lazy evaluation: FALSE
  Asynchronous evaluation: TRUE
  Local evaluation: TRUE
  Environment: <environment: R_GlobalEnv>
  Globals: <none>
  Packages: <none>
  L'Ecuyer-CMRG RNG seed: <none>
  Resolved: TRUE
  Value: <not collected>
  Early signalling: FALSE
  Owner process: 2f49a8e2-1503-3ba3-0651-296de99766c3
  Class: 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment'
  
  DEBUG: END TROUBLESHOOTING HELP
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ...
  cluster:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = list( list(con = 9L, host = "localhost", rank = 1L)), user = NULL, revtunnel = TRUE, homogeneous = TRUE, gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: TRUE
  - call: plan(cluster, workers = cl)
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(NA)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 9L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  plan(): plan_init() of 'tweaked', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  getGlobalsAndPackages() ...
  Searching for globals ...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "error")
          {
              NULL
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      tryCatch({
          local(42L)
      }, finally = {
          {
              {
                  NULL
                  future::plan(list(function (expr, envir = parent.frame(), 
                    substitute = TRUE, lazy = FALSE, seed = NULL, 
                    globals = TRUE, persistent = FALSE, workers = list(
                      list(con = 9L, host = "localhost", rank = 1L)), 
                    user = NULL, revtunnel = TRUE, homogeneous = TRUE, 
                    gc = FALSE, earlySignal = FALSE, label = NULL, 
                    ...) 
                  {
                    if ("cluster" %in% names(list(...))) {
                      .Defunct(msg = "Argument 'cluster' has been renamed to 'workers'. Please update your script/code that uses the future package.")
                    }
                    if (substitute) 
                      expr <- substitute(expr)
                    future <- ClusterFuture(expr = expr, envir = envir, 
                      substitute = FALSE, lazy = lazy, seed = seed, 
                      globals = globals, persistent = persistent, 
                      workers = workers, user = user, revtunnel = revtunnel, 
                      homogeneous = homogeneous, gc = gc, earlySignal = earlySignal, 
                      label = label, ...)
                    if (!future$lazy) 
                      future <- run(future)
                    invisible(future)
                  }), .cleanup = FALSE, .init = FALSE, .check_lazy = FALSE)
              }
              options(...future.oldOptions)
          }
      })
  }
  ClusterFuture started
  *** cluster() - crashed worker ... DONE
  *** cluster() - registry ...