This function returns the native stack trace as a data frame. Each native stack frame corresponds to one row in the returned data frame. Deep function calls come first, the last row corresponds to the running process's entry point.
winch_trace_back()A data frame with the columns:
func: function name
ip: instruction pointer
pathname: path to shared library
is_libr: a logical, TRUE if this entry is from R's shared library,
determined via procmaps::path_is_libr() on the pathname component
On Windows, call winch_init_library() to return function names
for a specific package.
sys.calls() for the R equivalent.
winch_trace_back()
#> func ip
#> 1 bcEval_loop 00007f8ed1f3e5c0
#> 2 bcEval 00007f8ed1f51ae0
#> 3 Rf_eval 00007f8ed1f51f30
#> 4 R_execClosure 00007f8ed1f54010
#> 5 applyClosure_core 00007f8ed1f54fc0
#> 6 Rf_eval 00007f8ed1f51f30
#> 7 do_eval 00007f8ed1f58540
#> 8 bcEval_loop 00007f8ed1f3e5c0
#> 9 bcEval 00007f8ed1f51ae0
#> 10 Rf_eval 00007f8ed1f51f30
#> 11 forcePromise.part.0 00007f8ed1f52950
#> 12 Rf_eval 00007f8ed1f51f30
#> 13 do_withVisible 00007f8ed1f591a0
#> 14 do_internal 00007f8ed1f9e5d0
#> 15 bcEval_loop 00007f8ed1f3e5c0
#> 16 bcEval 00007f8ed1f51ae0
#> 17 Rf_eval 00007f8ed1f51f30
#> 18 forcePromise.part.0 00007f8ed1f52950
#> 19 Rf_eval 00007f8ed1f51f30
#> 20 forcePromise.part.0 00007f8ed1f52950
#> 21 getvar 00007f8ed1f52b50
#> 22 bcEval_loop 00007f8ed1f3e5c0
#> 23 bcEval 00007f8ed1f51ae0
#> 24 Rf_eval 00007f8ed1f51f30
#> 25 R_execClosure 00007f8ed1f54010
#> 26 applyClosure_core 00007f8ed1f54fc0
#> 27 Rf_eval 00007f8ed1f51f30
#> 28 do_eval 00007f8ed1f58540
#> 29 bcEval_loop 00007f8ed1f3e5c0
#> 30 bcEval 00007f8ed1f51ae0
#> 31 Rf_eval 00007f8ed1f51f30
#> 32 R_execClosure 00007f8ed1f54010
#> 33 applyClosure_core 00007f8ed1f54fc0
#> 34 R_forceAndCall 00007f8ed1f57850
#> 35 R_init_purrr 00007f8ecc66da40
#> 36 R_init_purrr 00007f8ecc66dc50
#> 37 R_doDotCall 00007f8ed1f02230
#> 38 do_dotcall 00007f8ed1f03e50
#> 39 Rf_eval 00007f8ed1f51f30
#> 40 <unw_get_proc_name() error: -10> 00007f8ecc66bbc0
#> 41 R_ExecWithCleanup 00007f8ed1eeab10
#> 42 <unw_get_proc_name() error: -10> 00007f8ecc66be60
#> 43 <unw_get_proc_name() error: -10> 00007f8ecc66bf10
#> 44 R_doDotCall 00007f8ed1f02230
#> 45 bcEval_loop 00007f8ed1f3e5c0
#> 46 bcEval 00007f8ed1f51ae0
#> 47 Rf_eval 00007f8ed1f51f30
#> 48 R_execClosure 00007f8ed1f54010
#> 49 applyClosure_core 00007f8ed1f54fc0
#> 50 Rf_eval 00007f8ed1f51f30
#> 51 Rf_ReplIteration 00007f8ed1f8c200
#> 52 R_ReplConsole 00007f8ed1f8c720
#> 53 run_Rmainloop 00007f8ed1f8c810
#> 54 main 0000561b3b050080
#> 55 __libc_init_first 00007f8ed1a2a150
#> 56 __libc_start_main 00007f8ed1a2a200
#> 57 _start 0000561b3b0500b0
#> pathname is_libr
#> 1 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 2 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 3 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 4 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 5 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 6 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 7 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 8 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 9 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 10 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 11 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 12 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 13 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 14 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 15 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 16 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 17 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 18 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 19 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 20 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 21 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 22 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 23 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 24 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 25 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 26 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 27 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 28 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 29 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 30 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 31 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 32 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 33 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 34 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 35 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 36 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 37 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 38 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 39 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 40 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 41 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 42 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 43 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 44 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 45 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 46 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 47 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 48 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 49 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 50 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 51 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 52 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 53 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 54 /opt/R/4.5.2/lib/R/bin/exec/R TRUE
#> 55 /usr/lib/x86_64-linux-gnu/libc.so.6 FALSE
#> 56 /usr/lib/x86_64-linux-gnu/libc.so.6 FALSE
#> 57 /opt/R/4.5.2/lib/R/bin/exec/R TRUE
foo <- function() {
winch_call(bar)
}
bar <- function() {
winch_trace_back()
}
foo()
#> func ip
#> 1 bcEval_loop 00007f8ed1f3e5c0
#> 2 bcEval 00007f8ed1f51ae0
#> 3 Rf_eval 00007f8ed1f51f30
#> 4 R_execClosure 00007f8ed1f54010
#> 5 applyClosure_core 00007f8ed1f54fc0
#> 6 Rf_eval 00007f8ed1f51f30
#> 7 do_begin 00007f8ed1f55d00
#> 8 Rf_eval 00007f8ed1f51f30
#> 9 R_execClosure 00007f8ed1f54010
#> 10 applyClosure_core 00007f8ed1f54fc0
#> 11 Rf_eval 00007f8ed1f51f30
#> 12 winch_call 00007f8eb0a83970
#> 13 R_doDotCall 00007f8ed1f02230
#> 14 bcEval_loop 00007f8ed1f3e5c0
#> 15 bcEval 00007f8ed1f51ae0
#> 16 Rf_eval 00007f8ed1f51f30
#> 17 R_execClosure 00007f8ed1f54010
#> 18 applyClosure_core 00007f8ed1f54fc0
#> 19 Rf_eval 00007f8ed1f51f30
#> 20 do_begin 00007f8ed1f55d00
#> 21 Rf_eval 00007f8ed1f51f30
#> 22 R_execClosure 00007f8ed1f54010
#> 23 applyClosure_core 00007f8ed1f54fc0
#> 24 Rf_eval 00007f8ed1f51f30
#> 25 do_eval 00007f8ed1f58540
#> 26 bcEval_loop 00007f8ed1f3e5c0
#> 27 bcEval 00007f8ed1f51ae0
#> 28 Rf_eval 00007f8ed1f51f30
#> 29 forcePromise.part.0 00007f8ed1f52950
#> 30 Rf_eval 00007f8ed1f51f30
#> 31 do_withVisible 00007f8ed1f591a0
#> 32 do_internal 00007f8ed1f9e5d0
#> 33 bcEval_loop 00007f8ed1f3e5c0
#> 34 bcEval 00007f8ed1f51ae0
#> 35 Rf_eval 00007f8ed1f51f30
#> 36 forcePromise.part.0 00007f8ed1f52950
#> 37 Rf_eval 00007f8ed1f51f30
#> 38 forcePromise.part.0 00007f8ed1f52950
#> 39 getvar 00007f8ed1f52b50
#> 40 bcEval_loop 00007f8ed1f3e5c0
#> 41 bcEval 00007f8ed1f51ae0
#> 42 Rf_eval 00007f8ed1f51f30
#> 43 R_execClosure 00007f8ed1f54010
#> 44 applyClosure_core 00007f8ed1f54fc0
#> 45 Rf_eval 00007f8ed1f51f30
#> 46 do_eval 00007f8ed1f58540
#> 47 bcEval_loop 00007f8ed1f3e5c0
#> 48 bcEval 00007f8ed1f51ae0
#> 49 Rf_eval 00007f8ed1f51f30
#> 50 R_execClosure 00007f8ed1f54010
#> 51 applyClosure_core 00007f8ed1f54fc0
#> 52 R_forceAndCall 00007f8ed1f57850
#> 53 R_init_purrr 00007f8ecc66da40
#> 54 R_init_purrr 00007f8ecc66dc50
#> 55 R_doDotCall 00007f8ed1f02230
#> 56 do_dotcall 00007f8ed1f03e50
#> 57 Rf_eval 00007f8ed1f51f30
#> 58 <unw_get_proc_name() error: -10> 00007f8ecc66bbc0
#> 59 R_ExecWithCleanup 00007f8ed1eeab10
#> 60 <unw_get_proc_name() error: -10> 00007f8ecc66be60
#> 61 <unw_get_proc_name() error: -10> 00007f8ecc66bf10
#> 62 R_doDotCall 00007f8ed1f02230
#> 63 bcEval_loop 00007f8ed1f3e5c0
#> 64 bcEval 00007f8ed1f51ae0
#> 65 Rf_eval 00007f8ed1f51f30
#> 66 R_execClosure 00007f8ed1f54010
#> 67 applyClosure_core 00007f8ed1f54fc0
#> 68 Rf_eval 00007f8ed1f51f30
#> 69 Rf_ReplIteration 00007f8ed1f8c200
#> 70 R_ReplConsole 00007f8ed1f8c720
#> 71 run_Rmainloop 00007f8ed1f8c810
#> 72 main 0000561b3b050080
#> 73 __libc_init_first 00007f8ed1a2a150
#> 74 __libc_start_main 00007f8ed1a2a200
#> 75 _start 0000561b3b0500b0
#> pathname is_libr
#> 1 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 2 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 3 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 4 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 5 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 6 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 7 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 8 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 9 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 10 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 11 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 12 /home/runner/work/_temp/Library/winch/libs/winch.so FALSE
#> 13 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 14 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 15 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 16 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 17 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 18 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 19 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 20 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 21 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 22 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 23 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 24 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 25 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 26 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 27 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 28 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 29 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 30 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 31 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 32 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 33 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 34 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 35 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 36 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 37 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 38 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 39 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 40 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 41 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 42 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 43 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 44 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 45 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 46 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 47 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 48 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 49 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 50 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 51 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 52 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 53 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 54 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 55 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 56 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 57 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 58 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 59 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 60 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 61 /home/runner/work/_temp/Library/purrr/libs/purrr.so FALSE
#> 62 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 63 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 64 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 65 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 66 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 67 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 68 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 69 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 70 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 71 /opt/R/4.5.2/lib/R/lib/libR.so TRUE
#> 72 /opt/R/4.5.2/lib/R/bin/exec/R TRUE
#> 73 /usr/lib/x86_64-linux-gnu/libc.so.6 FALSE
#> 74 /usr/lib/x86_64-linux-gnu/libc.so.6 FALSE
#> 75 /opt/R/4.5.2/lib/R/bin/exec/R TRUE