summary refs log tree commit diff
path: root/src/libstd/rt.rs
diff options
context:
space:
mode:
authorYamakaky <yamakaky@yamaworld.fr>2017-03-04 10:27:52 -0500
committerYamakaky <yamakaky@yamaworld.fr>2017-05-09 19:51:50 +0200
commitca8b75466cef854d30fdf7614c2358b1eb46816e (patch)
treef2bfc45697fca40fadaa04346ed404598a7ad773 /src/libstd/rt.rs
parentf3fc547194d22dc673274ac20e9a7b1e607cb862 (diff)
downloadrust-ca8b75466cef854d30fdf7614c2358b1eb46816e.tar.gz
rust-ca8b75466cef854d30fdf7614c2358b1eb46816e.zip
Don't show the std frames before user code on unwinding.
When `RUST_BACKTRACE=1`, remove all frames after
`__rust_maybe_catch_panic`. Tested on `main`, threads, tests and
benches. Cleaning of the top of the stacktrace is let to a future PR.

Fixes #40201

See #41815
Diffstat (limited to 'src/libstd/rt.rs')
-rw-r--r--src/libstd/rt.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libstd/rt.rs b/src/libstd/rt.rs
index 6c791cd336d..acff7faf8a7 100644
--- a/src/libstd/rt.rs
+++ b/src/libstd/rt.rs
@@ -29,8 +29,7 @@ pub use panicking::{begin_panic, begin_panic_fmt, update_panic_count};
 
 #[cfg(not(test))]
 #[lang = "start"]
-fn lang_start(main: *const u8, argc: isize, argv: *const *const u8) -> isize {
-    use mem;
+fn lang_start(main: fn(), argc: isize, argv: *const *const u8) -> isize {
     use panic;
     use sys;
     use sys_common;
@@ -54,7 +53,9 @@ fn lang_start(main: *const u8, argc: isize, argv: *const *const u8) -> isize {
         sys::args::init(argc, argv);
 
         // Let's run some code!
-        let res = panic::catch_unwind(mem::transmute::<_, fn()>(main));
+        let res = panic::catch_unwind(|| {
+            ::sys_common::backtrace::__rust_begin_short_backtrace(main)
+        });
         sys_common::cleanup();
         res.is_err()
     };