default_alloc_error_hook: explain difference to default __rdl_oom in alloc
This commit is contained in:
parent
b7581490aa
commit
3f6703bbd8
@ -353,6 +353,12 @@ fn default_alloc_error_hook(layout: Layout) {
|
||||
if unsafe { __rust_alloc_error_handler_should_panic != 0 } {
|
||||
panic!("memory allocation of {} bytes failed", layout.size());
|
||||
} else {
|
||||
// This is the default path taken on OOM, and the only path taken on stable with std.
|
||||
// Crucially, it does *not* call any user-defined code, and therefore users do not have to
|
||||
// worry about allocation failure causing reentrancy issues. That makes it different from
|
||||
// the default `__rdl_oom` defined in alloc (i.e., the default alloc error handler that is
|
||||
// called when there is no `#[alloc_error_handler]`), which triggers a regular panic and
|
||||
// thus can invoke a user-defined panic hook, executing arbitrary user-defined code.
|
||||
rtprintpanic!("memory allocation of {} bytes failed\n", layout.size());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user