[llvm-dev] lld: sigbus error handling

Rui Ueyama via llvm-dev
2017-10-30T21:12:12Z

But that would disable mmap IO on systems that don't support fallocate.
I'm
not sure if OpenBSD people are for example happy about that.

On Mon, Oct 30, 2017 at 2:03 PM, Rafael Avila de Espindola <
rafael.espindola at gmail.com> wrote:

> Rui Ueyama via llvm-dev <llvm-dev at lists.llvm.org> writes:
>
> > If your system does not support fallocate(2), we use ftruncate(2) to
> create
> > an output file. fallocate(2) succeeds even if your disk have less
space
> > than the requested size, because it creates a sparse file. If you mmap
> such
> > sparse file, you'll receive a SIGBUS when the disk actually
becomes full.
> >
> > So, lld can die suddenly with SIGBUS when your disk becomes full, and
> > currently we are not doing anything about it. It's sometimes hard
to
> notice
> > that that was caused by the lack of disk space.
> >
> > I wonder if we should print out a hint (e.g. "Bus error -- disk
full?")
> > when we receive a SIGBUS. Any opinions?
>
> I think we should change the llvm implementation of resize_file to fail
> if it cannot allocate the space. That is, it should only use ftruncate
> on OS X where apparently HFS allocates space with it.
>
> If resize_file fails than lld can fail gracefully or use annonymous
> memory and a plain write instead of mmap for producing the output.
>
> Cheers,
> Rafael
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20171030/4c21b6e2/attachment.html>