hiplot / gold

All user feedback and issues of hiplot.
4 stars 1 forks source link

与服务器失联 #552

Closed Miachol closed 2 years ago

Miachol commented 2 years ago

due: 2022-04-01

Contact: JIANFENG LIN / jianfeng.lin@lundquist.org Tool: https://hiplot.com.cn/advance/raincloud-shiny 我在用这个工具作图,发现每次到下载图片结果的时候,都会提示与服务器断开连接,导致下载图片失败。但是在整个使用的过程中,软件都在正常运转: 比如调节参数的时候都是有反应的。

只有一次成功了,就是刚连接上,然后上传数据,在没有调节任何参数的情况下下载了图片。

ShixiangWang commented 2 years ago

https://github.com/gabrifc/raincloud-shiny

是代码不一致吗?

image

ShixiangWang commented 2 years ago
font{
    line-height: 1.6;
}
ul,ol{
    padding-left: 20px;
    list-style-position: inside;
}

你好
    可能是这个工具不支持一些复杂的列名,我在日志里看到了相关报错,你能否修改下数据的列名再尝试下?Warning: Computation failed in `stat_ydensity()`:

replacement has 1 row, data has 0 Warning: Error in : Can't subset columns that don't exist. ✖ Column Uninfected,C.alb,IL-17A,C.alb +IL-17A doesn't exist. 221:

caught segfault

祝好,诗翔Hiplot team

                Shixiang WangPostdocSun Yat-sen University Cancer Center+86 ***@***.***, China 51006https://shixiangwang.github.io/

在2022年3月25日 ***@***.***> 写道: 

due: 2022-04-01 Contact: JIANFENG LIN / @.*** Tool: https://hiplot.com.cn/advance/raincloud-shiny 我在用这个工具作图,发现每次到下载图片结果的时候,都会提示与服务器断开连接,导致下载图片失败。但是在整个使用的过程中,软件都在正常运转: 比如调节参数的时候都是有反应的。 只有一次成功了,就是刚连接上,然后上传数据,在没有调节任何参数的情况下下载了图片。

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

Miachol commented 2 years ago

下载 ZIP 会断开连接

ShixiangWang commented 2 years ago

的确如此。但我看仓库,只是一个软连接,应该是指向官方仓库了,代码应该是一样的。

ShixiangWang commented 2 years ago

可能是R版本或者包版本的问题,也有可能是服务器绘图设备之类的问题。

正常的绘图输出会产生很多不同格式的图形文件:

image

Hiplot日志:

su: ignore --preserve-environment, it's mutually exclusive to --login.

Listening on http://127.0.0.1:43213

Attaching package: ‘ggpubr’

The following object is masked from ‘package:cowplot’:

    get_legend

Loading required package: lattice
Loading required package: survival
Loading required package: Formula

Attaching package: ‘Hmisc’

The following objects are masked from ‘package:base’:

    format.pval, units

Attaching package: ‘dplyr’

The following objects are masked from ‘package:Hmisc’:

    src, summarize

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union

Note: Using an external vector in selections is ambiguous.
ℹ Use `all_of(filterConditions)` instead of `filterConditions` to silence this message.
ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.
Warning in grid.Call.graphics(C_polygon, x$x, x$y, index) :
  semi-transparency is not supported on this device: reported only once per page

 *** caught segfault ***
address 0x1, cause 'memory not mapped'

Traceback:
 1: grDevices::dev.off()
 2: eval(expr, pf)
 3: eval(expr, pf)
 4: withVisible(eval(expr, pf))
 5: evalVis(expr)
 6: utils::capture.output({    grDevices::dev.off()    if (old_dev > 1)         grDevices::dev.set(old_dev)})
 7: ggsave(tiffFile, plot = plotFigure(), device = "tiff", compression = "lzw",     width = input$width/72, height = input$height/72, units = "in",     dpi = 300)
 8: download$func(tmpdata)
 9: ..stacktraceon..(download$func(tmpdata))
10: doTryCatch(return(expr), name, parentenv, handler)
11: tryCatchOne(expr, names, parentenv, handlers[[1L]])
12: tryCatchList(expr, classes, parentenv, handlers)
13: tryCatch(expr, error = function(e) {    call <- conditionCall(e)    if (!is.null(call)) {        if (identical(call[[1L]], quote(doTryCatch)))             call <- sys.call(-4L)        dcall <- deparse(call)[1L]        prefix <- paste("Error in", dcall, ": ")        LONG <- 75L        sm <- strsplit(conditionMessage(e), "\n")[[1L]]        w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")        if (is.na(w))             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],                 type = "b")        if (w > LONG)             prefix <- paste0(prefix, "\n  ")    }    else prefix <- "Error : "    msg <- paste0(prefix, conditionMessage(e), "\n")    .Internal(seterrmessage(msg[1L]))    if (!silent && isTRUE(getOption("show.error.messages"))) {        cat(msg, file = outFile)        .Internal(printDeferredWarnings())    }    invisible(structure(msg, class = "try-error", condition = e))})
14: try(..stacktraceon..(download$func(tmpdata)), silent = TRUE)
15: force(expr)
16: withVisible(force(expr))
17: withCallingHandlers(expr, error = doCaptureStack)
18: domain$wrapSync(expr)
19: promises::with_promise_domain(createStackTracePromiseDomain(),     expr)
20: captureStackTraces({    result <- withVisible(force(expr))    if (promises::is.promising(result$value)) {        p <- promise_chain(valueWithVisible(result), ..., catch = catch,             finally = finally)        runFinally <- FALSE        p    }    else {        result <- Reduce(function(v, func) {            if (v$visible) {                withVisible(func(v$value))            }            else {                withVisible(func(invisible(v$value)))            }        }, list(...), result)        valueWithVisible(result)    }})
21: doTryCatch(return(expr), name, parentenv, handler)
22: tryCatchOne(expr, names, parentenv, handlers[[1L]])
23: tryCatchList(expr, classes, parentenv, handlers)
24: tryCatch({    captureStackTraces({        result <- withVisible(force(expr))        if (promises::is.promising(result$value)) {            p <- promise_chain(valueWithVisible(result), ...,                 catch = catch, finally = finally)            runFinally <- FALSE            p        }        else {            result <- Reduce(function(v, func) {                if (v$visible) {                  withVisible(func(v$value))                }                else {                  withVisible(func(invisible(v$value)))                }            }, list(...), result)            valueWithVisible(result)        }    })}, error = function(e) {    if (!is.null(catch))         catch(e)    else stop(e)}, finally = if (runFinally && !is.null(finally)) finally())
25: do()
26: hybrid_chain(try(..stacktraceon..(download$func(tmpdata)), silent = TRUE),     function(result) {        if (inherits(result, "try-error")) {            unlink(tmpdata)            stop(attr(result, "condition", exact = TRUE))        }        if (!file.exists(tmpdata)) {            return(httpResponse(404, content = "404 Not found"))        }        return(httpResponse(200, download$contentType %||% getContentType(filename),             list(file = tmpdata, owned = TRUE), c(`Content-Disposition` = ifelse(dlmatches[3] ==                 "", paste0("attachment; filename=\"", gsub("([\"\\\\])",                 "\\\\\\1", filename), "\""), "attachment"), `Cache-Control` = "no-cache")))    }, finally = function() {        self$decrementBusyCount()    })
27: withCallingHandlers(expr, error = doCaptureStack)
28: domain$wrapSync(expr)
29: promises::with_promise_domain(createStackTracePromiseDomain(),     {        self$incrementBusyCount()        hybrid_chain(try(..stacktraceon..(download$func(tmpdata)),             silent = TRUE), function(result) {            if (inherits(result, "try-error")) {                unlink(tmpdata)                stop(attr(result, "condition", exact = TRUE))            }            if (!file.exists(tmpdata)) {                return(httpResponse(404, content = "404 Not found"))            }            return(httpResponse(200, download$contentType %||%                 getContentType(filename), list(file = tmpdata,                 owned = TRUE), c(`Content-Disposition` = ifelse(dlmatches[3] ==                 "", paste0("attachment; filename=\"", gsub("([\"\\\\])",                 "\\\\\\1", filename), "\""), "attachment"), `Cache-Control` = "no-cache")))        }, finally = function() {            self$decrementBusyCount()        })    })
30: domain$wrapSync(expr)
31: promises::with_promise_domain(reactivePromiseDomain(), {    promises::with_promise_domain(createStackTracePromiseDomain(),         {            self$incrementBusyCount()            hybrid_chain(try(..stacktraceon..(download$func(tmpdata)),                 silent = TRUE), function(result) {                if (inherits(result, "try-error")) {                  unlink(tmpdata)                  stop(attr(result, "condition", exact = TRUE))                }                if (!file.exists(tmpdata)) {                  return(httpResponse(404, content = "404 Not found"))                }                return(httpResponse(200, download$contentType %||%                   getContentType(filename), list(file = tmpdata,                   owned = TRUE), c(`Content-Disposition` = ifelse(dlmatches[3] ==                   "", paste0("attachment; filename=\"", gsub("([\"\\\\])",                   "\\\\\\1", filename), "\""), "attachment"),                   `Cache-Control` = "no-cache")))            }, finally = function() {                self$decrementBusyCount()            })        })})
32: contextFunc()
33: env$runWith(self, func)
34: force(expr)
35: domain$wrapSync(expr)
36: promises::with_promise_domain(createVarPromiseDomain(.globals,     "domain", domain), expr)
37: withReactiveDomain(.domain, {    env <- .getReactiveEnvironment()    rLog$enter(.reactId, id, .reactType, .domain)    on.exit(rLog$exit(.reactId, id, .reactType, .domain), add = TRUE)    env$runWith(self, func)})
38: domain$wrapSync(expr)
39: promises::with_promise_domain(reactivePromiseDomain(), {    withReactiveDomain(.domain, {        env <- .getReactiveEnvironment()        rLog$enter(.reactId, id, .reactType, .domain)        on.exit(rLog$exit(.reactId, id, .reactType, .domain),             add = TRUE)        env$runWith(self, func)    })})
40: Context$new(getDefaultReactiveDomain(), "[download]")$run(function() {    promises::with_promise_domain(reactivePromiseDomain(), {        promises::with_promise_domain(createStackTracePromiseDomain(),             {                self$incrementBusyCount()                hybrid_chain(try(..stacktraceon..(download$func(tmpdata)),                   silent = TRUE), function(result) {                  if (inherits(result, "try-error")) {                    unlink(tmpdata)                    stop(attr(result, "condition", exact = TRUE))                  }                  if (!file.exists(tmpdata)) {                    return(httpResponse(404, content = "404 Not found"))                  }                  return(httpResponse(200, download$contentType %||%                     getContentType(filename), list(file = tmpdata,                     owned = TRUE), c(`Content-Disposition` = ifelse(dlmatches[3] ==                     "", paste0("attachment; filename=\"", gsub("([\"\\\\])",                     "\\\\\\1", filename), "\""), "attachment"),                     `Cache-Control` = "no-cache")))                }, finally = function() {                  self$decrementBusyCount()                })            })    })})
41: shinysession$handleRequest(subreq)
42: force(expr)
43: domain$wrapSync(expr)
44: promises::with_promise_domain(createVarPromiseDomain(.globals,     "domain", domain), expr)
45: withReactiveDomain(shinysession, {    shinysession$handleRequest(subreq)})
46: handler(req)
47: handler(...)
48: handlers$invoke(req)
49: withCallingHandlers(expr, error = doCaptureStack)
50: domain$wrapSync(expr)
51: promises::with_promise_domain(createStackTracePromiseDomain(),     expr)
52: captureStackTraces(expr)
53: withCallingHandlers({    result <- captureStackTraces(expr)    if (promises::is.promise(result)) {        result <- promises::catch(result, function(cond) {            if (inherits(cond, "shiny.silent.error"))                 return()            if (isTRUE(getOption("show.error.messages"))) {                printError(cond, full = full, offset = offset)            }        })    }    result}, error = function(cond) {    if (inherits(cond, "shiny.silent.error"))         return()    if (isTRUE(getOption("show.error.messages"))) {        printError(cond, full = full, offset = offset)    }})
54: withLogErrors(handlers$invoke(req))
55: withCallingHandlers(withLogErrors(handlers$invoke(req)), error = function(cond) {    sanitizeErrors <- getOption("shiny.sanitize.errors", FALSE)    if (inherits(cond, "shiny.custom.error") || !sanitizeErrors) {        stop(cond$message, call. = FALSE)    }    else {        stop(paste("An error has occurred. Check your logs or",             "contact the app author for clarification."), call. = FALSE)    }})
56: force(expr)
57: withVisible(force(expr))
58: withCallingHandlers(expr, error = doCaptureStack)
59: domain$wrapSync(expr)
60: promises::with_promise_domain(createStackTracePromiseDomain(),     expr)
61: captureStackTraces({    result <- withVisible(force(expr))    if (promises::is.promising(result$value)) {        p <- promise_chain(valueWithVisible(result), ..., catch = catch,             finally = finally)        runFinally <- FALSE        p    }    else {        result <- Reduce(function(v, func) {            if (v$visible) {                withVisible(func(v$value))            }            else {                withVisible(func(invisible(v$value)))            }        }, list(...), result)        valueWithVisible(result)    }})
62: doTryCatch(return(expr), name, parentenv, handler)
63: tryCatchOne(expr, names, parentenv, handlers[[1L]])
64: tryCatchList(expr, classes, parentenv, handlers)
65: tryCatch({    captureStackTraces({        result <- withVisible(force(expr))        if (promises::is.promising(result$value)) {            p <- promise_chain(valueWithVisible(result), ...,                 catch = catch, finally = finally)            runFinally <- FALSE            p        }        else {            result <- Reduce(function(v, func) {                if (v$visible) {                  withVisible(func(v$value))                }                else {                  withVisible(func(invisible(v$value)))                }            }, list(...), result)            valueWithVisible(result)        }    })}, error = function(e) {    if (!is.null(catch))         catch(e)    else stop(e)}, finally = if (runFinally && !is.null(finally)) finally())
66: do()
67: hybrid_chain(withCallingHandlers(withLogErrors(handlers$invoke(req)),     error = function(cond) {        sanitizeErrors <- getOption("shiny.sanitize.errors",             FALSE)        if (inherits(cond, "shiny.custom.error") || !sanitizeErrors) {            stop(cond$message, call. = FALSE)        }        else {            stop(paste("An error has occurred. Check your logs or",                 "contact the app author for clarification."),                 call. = FALSE)        }    }), catch = function(err) {    httpResponse(status = 500L, content_type = "text/html; charset=UTF-8",         content = as.character(htmltools::htmlTemplate(system.file("template",             "error.html", package = "shiny"), message = conditionMessage(err))))})
68: force(expr)
69: withVisible(force(expr))
70: withCallingHandlers(expr, error = doCaptureStack)
71: domain$wrapSync(expr)
72: promises::with_promise_domain(createStackTracePromiseDomain(),     expr)
73: captureStackTraces({    result <- withVisible(force(expr))    if (promises::is.promising(result$value)) {        p <- promise_chain(valueWithVisible(result), ..., catch = catch,             finally = finally)        runFinally <- FALSE        p    }    else {        result <- Reduce(function(v, func) {            if (v$visible) {                withVisible(func(v$value))            }            else {                withVisible(func(invisible(v$value)))            }        }, list(...), result)        valueWithVisible(result)    }})
74: doTryCatch(return(expr), name, parentenv, handler)
75: tryCatchOne(expr, names, parentenv, handlers[[1L]])
76: tryCatchList(expr, classes, parentenv, handlers)
77: tryCatch({    captureStackTraces({        result <- withVisible(force(expr))        if (promises::is.promising(result$value)) {            p <- promise_chain(valueWithVisible(result), ...,                 catch = catch, finally = finally)            runFinally <- FALSE            p        }        else {            result <- Reduce(function(v, func) {                if (v$visible) {                  withVisible(func(v$value))                }                else {                  withVisible(func(invisible(v$value)))                }            }, list(...), result)            valueWithVisible(result)        }    })}, error = function(e) {    if (!is.null(catch))         catch(e)    else stop(e)}, finally = if (runFinally && !is.null(finally)) finally())
78: do()
79: hybrid_chain(hybrid_chain(withCallingHandlers(withLogErrors(handlers$invoke(req)),     error = function(cond) {        sanitizeErrors <- getOption("shiny.sanitize.errors",             FALSE)        if (inherits(cond, "shiny.custom.error") || !sanitizeErrors) {            stop(cond$message, call. = FALSE)        }        else {            stop(paste("An error has occurred. Check your logs or",                 "contact the app author for clarification."),                 call. = FALSE)        }    }), catch = function(err) {    httpResponse(status = 500L, content_type = "text/html; charset=UTF-8",         content = as.character(htmltools::htmlTemplate(system.file("template",             "error.html", package = "shiny"), message = conditionMessage(err))))}), function(resp) {    maybeInjectAutoreload(resp)})
80: handler(req)
81: func(req)
82: compute()
83: doTryCatch(return(expr), name, parentenv, handler)
84: tryCatchOne(expr, names, parentenv, handlers[[1L]])
85: tryCatchList(expr, classes, parentenv, handlers)
86: tryCatch(compute(), error = function(e) compute_error <<- e)
87: rookCall(private$app$call, req, req$.bodyData, seek(req$.bodyData))
88: (function (req, cpp_callback) {    resp <- if (is.null(private$app$call)) {        list(status = 404L, headers = list(`Content-Type` = "text/plain"),             body = "404 Not Found\n")    }    else {        rookCall(private$app$call, req, req$.bodyData, seek(req$.bodyData))    }    clean_up <- function() {        if (!is.null(req$.bodyData)) {            close(req$.bodyData)        }        req$.bodyData <- NULL    }    if (is.promise(resp)) {        resp <- resp %...>% invokeCppCallback(., cpp_callback)        finally(resp, clean_up)    }    else {        on.exit(clean_up())        invokeCppCallback(resp, cpp_callback)    }    invisible()})(<environment>, <pointer: 0xfd10db0>)
89: evalq((function (req, cpp_callback) {    resp <- if (is.null(private$app$call)) {        list(status = 404L, headers = list(`Content-Type` = "text/plain"),             body = "404 Not Found\n")    }    else {        rookCall(private$app$call, req, req$.bodyData, seek(req$.bodyData))    }    clean_up <- function() {        if (!is.null(req$.bodyData)) {            close(req$.bodyData)        }        req$.bodyData <- NULL    }    if (is.promise(resp)) {        resp <- resp %...>% invokeCppCallback(., cpp_callback)        finally(resp, clean_up)    }    else {        on.exit(clean_up())        invokeCppCallback(resp, cpp_callback)    }    invisible()})(<environment>, <pointer: 0xfd10db0>), <environment>)
90: evalq((function (req, cpp_callback) {    resp <- if (is.null(private$app$call)) {        list(status = 404L, headers = list(`Content-Type` = "text/plain"),             body = "404 Not Found\n")    }    else {        rookCall(private$app$call, req, req$.bodyData, seek(req$.bodyData))    }    clean_up <- function() {        if (!is.null(req$.bodyData)) {            close(req$.bodyData)        }        req$.bodyData <- NULL    }    if (is.promise(resp)) {        resp <- resp %...>% invokeCppCallback(., cpp_callback)        finally(resp, clean_up)    }    else {        on.exit(clean_up())        invokeCppCallback(resp, cpp_callback)    }    invisible()})(<environment>, <pointer: 0xfd10db0>), <environment>)
91: doTryCatch(return(expr), name, parentenv, handler)
92: tryCatchOne(expr, names, parentenv, handlers[[1L]])
93: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
94: doTryCatch(return(expr), name, parentenv, handler)
95: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),     names[nh], parentenv, handlers[[nh]])
96: tryCatchList(expr, classes, parentenv, handlers)
97: tryCatch(evalq((function (req, cpp_callback) {    resp <- if (is.null(private$app$call)) {        list(status = 404L, headers = list(`Content-Type` = "text/plain"),             body = "404 Not Found\n")    }    else {        rookCall(private$app$call, req, req$.bodyData, seek(req$.bodyData))    }    clean_up <- function() {        if (!is.null(req$.bodyData)) {            close(req$.bodyData)        }        req$.bodyData <- NULL    }    if (is.promise(resp)) {        resp <- resp %...>% invokeCppCallback(., cpp_callback)        finally(resp, clean_up)    }    else {        on.exit(clean_up())        invokeCppCallback(resp, cpp_callback)    }    invisible()})(<environment>, <pointer: 0xfd10db0>), <environment>), error = function (x) x, interrupt = function (x) x)
An irrecoverable exception occurred. R is aborting now ...
-bash: line 1: 455499 Segmentation fault      R --no-save --slave -f \/opt\/shiny-server\/R\/SockJSAdapter\.R
Miachol commented 2 years ago

修改 TIFF 导出命令后修复正常