diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2017-09-10 14:03:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-10 14:03:25 +0200 |
| commit | 0e2dac7eba8b96d3210612538725aab19d8d297f (patch) | |
| tree | ce1d3d6f3a12422e2211c6b16a59148c6e679d94 /src/libstd/sys/unix/backtrace | |
| parent | 1e4ab871f5e548fa181d644691f693722d8fc6ba (diff) | |
| parent | f633284b3da04a6eb2f6525e51efd81de6320f2e (diff) | |
| download | rust-0e2dac7eba8b96d3210612538725aab19d8d297f.tar.gz rust-0e2dac7eba8b96d3210612538725aab19d8d297f.zip | |
Rollup merge of #44384 - alexcrichton:osx-segfault, r=estebank
std: Fix a segfault on OSX with backtraces Apparently `dladdr` can succeed but still give you NULL pointers! Closes #44379
Diffstat (limited to 'src/libstd/sys/unix/backtrace')
| -rw-r--r-- | src/libstd/sys/unix/backtrace/printing/dladdr.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/backtrace/printing/dladdr.rs b/src/libstd/sys/unix/backtrace/printing/dladdr.rs index 3a3912af021..21f0b3724c1 100644 --- a/src/libstd/sys/unix/backtrace/printing/dladdr.rs +++ b/src/libstd/sys/unix/backtrace/printing/dladdr.rs @@ -22,7 +22,8 @@ pub fn resolve_symname<F>(frame: Frame, { unsafe { let mut info: Dl_info = intrinsics::init(); - let symname = if dladdr(frame.exact_position, &mut info) == 0 { + let symname = if dladdr(frame.exact_position, &mut info) == 0 || + info.dli_sname.is_null() { None } else { CStr::from_ptr(info.dli_sname).to_str().ok() |
