Skip to content

Commit

Permalink
Display error details when a mmap call fails
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Mar 17, 2021
1 parent f5d8117 commit f414c33
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
5 changes: 3 additions & 2 deletions library/std/src/sys/unix/stack_overflow.rs
Expand Up @@ -39,6 +39,7 @@ impl Drop for Handler {
))]
mod imp {
use super::Handler;
use crate::io;
use crate::mem;
use crate::ptr;

Expand Down Expand Up @@ -149,11 +150,11 @@ mod imp {
0,
);
if stackp == MAP_FAILED {
panic!("failed to allocate an alternative stack");
panic!("failed to allocate an alternative stack: {}", io::Error::last_os_error());
}
let guard_result = libc::mprotect(stackp, page_size(), PROT_NONE);
if guard_result != 0 {
panic!("failed to set up alternative stack guard page");
panic!("failed to set up alternative stack guard page: {}", io::Error::last_os_error());
}
stackp.add(page_size())
}
Expand Down
5 changes: 3 additions & 2 deletions library/std/src/sys/unix/thread.rs
Expand Up @@ -231,6 +231,7 @@ pub mod guard {
use libc::{mmap, mprotect};
use libc::{MAP_ANON, MAP_FAILED, MAP_FIXED, MAP_PRIVATE, PROT_NONE, PROT_READ, PROT_WRITE};

use crate::io;
use crate::ops::Range;
use crate::sync::atomic::{AtomicUsize, Ordering};
use crate::sys::os;
Expand Down Expand Up @@ -361,12 +362,12 @@ pub mod guard {
0,
);
if result != stackaddr || result == MAP_FAILED {
panic!("failed to allocate a guard page");
panic!("failed to allocate a guard page: {}", io::Error::last_os_error());
}

let result = mprotect(stackaddr, page_size, PROT_NONE);
if result != 0 {
panic!("failed to protect the guard page");
panic!("failed to protect the guard page: {}", io::Error::last_os_error());
}

let guardaddr = stackaddr as usize;
Expand Down

0 comments on commit f414c33

Please sign in to comment.