[R] traceback performs differently in "interactive-mode" then in "script-mode"

Yihui Xie x|e @end|ng |rom y|hu|@n@me
Wed Dec 21 20:17:27 CET 2022


Hi Malte,

I think I asked the same question on Stack Overflow ten years ago:
https://stackoverflow.com/q/13116099/559676 I hope you'll find the answer
helpful there.

Regards,
Yihui
--
https://yihui.org


On Wed, Dec 21, 2022 at 6:19 AM Flender, Malte <Malte.Flender using wago.com>
wrote:

> Hello,
>
> a few days ago I encountered a strange behavior of base R.
> I'm not really sure if it is a bug or not.
> Thus I am somewhat hesitant to write a bug report.
> Instead I write to R-Help to ask you if this behavior can be considered a
> bug or not.
> I started with a question at stackoverflow (
> https://stackoverflow.com/questions/74796994/r-traceback-performs-differently-in-interactive-mode-then-in-script-mode),
> but got no response there.
>
> The strange behavior of base R lies in how it acts differently in an
> interactive R-Session then the execution of an R-Script.
> As you see in the MWE below the traceback()-function returns NULL in
> script mode (first call) and an actual traceback in interactive mode
> (second call).
>
> Can you reproduce this behavior?
>
> Here is MWE, which contains a small test-script and the calls to it in an
> interactive and script mode:
>
> user using server:~/folder> cat test.r
>
> options(error = NULL)
>
> onexit <- function() {
>     error.msg <- geterrmessage()
>     traceback <- traceback()
>
>     print(paste("error.msg: ", nchar(error.msg), sep = ""))
>     print(paste("traceback: ", is.null(traceback), " : ", traceback, sep =
> ""))
>
>     if (nchar(error.msg) != 0 && !is.null(traceback)) {
>           print("Uncaught Error")
>     } else if (nchar(error.msg) != 0 && is.null(traceback)) {
>          print("Caught Error")
>     } else if (nchar(error.msg) == 0 && is.null(traceback)) {
>          print("No Error")
>     } else {
>         stop("ERROR in on.exit: bad traceback error.msg combination")
>     }
> }
>
> fail <- function() {
>           on.exit(
>               onexit(),
>               add = TRUE,
>               after = TRUE)
>
>   print("SOMETHING")
>   stop("BAD")
> }
>
> fail()
>
> user using server:~/folder> docker run -it --rm -v /home/user/folder/:/data/R/
> r-base:4.2.2 R -e 'source("/data/R/test.r")'
>
> R version 4.2.2 (2022-10-31) -- "Innocent and Trusting"
> Copyright (C) 2022 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
>   Natural language support but running in an English locale
>
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>
> > source("/data/R/test.r")
> [1] "SOMETHING"
> Error in fail() : BAD
> Calls: source -> withVisible -> eval -> eval -> fail
> No traceback available
> [1] "error.msg: 75"
> [1] "traceback: TRUE : "
> [1] "Caught Error"
> Execution halted
> user using server:~/folder> docker run -it --rm -v /home/user/folder/:/data/R/
> r-base:4.2.2 R
>
> R version 4.2.2 (2022-10-31) -- "Innocent and Trusting"
> Copyright (C) 2022 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
>   Natural language support but running in an English locale
>
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>
> > source("/data/R/test.r")
> [1] "SOMETHING"
> Error in fail() : BAD
> 6: stop("BAD") at test.r#30
> 5: fail() at test.r#33
> 4: eval(ei, envir)
> 3: eval(ei, envir)
> 2: withVisible(eval(ei, envir))
> 1: source("/data/R/test.r")
> [1] "error.msg: 22"
> [1] "traceback: FALSE : stop(\"BAD\")"
> [2] "traceback: FALSE : fail()"
> [3] "traceback: FALSE : eval(ei, envir)"
> [4] "traceback: FALSE : eval(ei, envir)"
> [5] "traceback: FALSE : withVisible(eval(ei, envir))"
> [6] "traceback: FALSE : source(\"/data/R/test.r\")"
> [1] "Uncaught Error"
> >
>
>
> Mit freundlichem Gruß / Best regards
> WAGO GmbH & Co. KG
>
> Malte Flender
> Komplexitätsmanagement / Data Science
> phone: +49 571 887-49779
> fax: +49 571 887-849779
> mailto: Malte.Flender using wago.com
>
> WAGO GmbH & Co.KG
> Hansastraße 27
> 32423 Minden
> Deutschland
> http://www.wago.com<http://www.wago.com/>
>
>
>
> Internal
>
>
>
>
>
>  Diese E-Mail einschließlich ihrer Anhänge ist vertraulich und daher
> allein für den Gebrauch durch den vorgesehenen Empfänger bestimmt. Dritten
> ist das Lesen, Verteilen oder Weiterleiten dieser E-Mail sowie jedwedes
> Vertrauen auf deren Inhalt untersagt. Wir bitten, eine fehlgeleitete E-Mail
> unverzüglich vollständig zu löschen und uns eine Nachricht zukommen zu
> lassen.
> This email may contain material that is confidential and/or privileged for
> the sole use of the intended recipient. Any review, reliance or
> distribution by others or forwarding without express permission is strictly
> prohibited. If you are not the intended recipient, please contact the
> sender and delete all copies.
>  WAGO GmbH & Co. KG - Sitz: Minden - Amtsgericht Bad Oeynhausen HRA 6218
> Komplementärin: WAGO Beteiligungs GmbH – Sitz: Brunn am Gebirge
> (Österreich) - Landesgericht Wiener Neustadt, FN 553907w - Niederlassung
> Minden - Amtsgericht Bad Oeynhausen, HRB 17863
> Geschäftsführung: Axel Börner, Kathrin Fricke, Dr. Heiner Lang, Christian
> Sallach, Jürgen Schäfer, Dr. Karsten Stoll, Yannick Weber
> WAGO ist eine eingetragene Marke der WAGO Verwaltungsgesellschaft mbH
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list