The solution to this problem is to add -synchronize to the command line. This option ensures that disk space allocated to the pixel cache exists before any pixels are written (see posix_fallocate(3)). Without it, the pixel cache sets the disk extent but does not preallocate the disk for performance reasons. When the disk-based pixel cache is memory-mapped, again for for performance reasons, the OS issues a SIGBUS if not enough disk is available. This behavior is not specific to ImageMagick. It is expected in any program that memory-maps a disk file that is not fully populated and subsequently runs out of disk on the device (see
http://www.linuxprogrammingblog.com/cod ... S-handling for a similar mmap() issue).
With -synchronize you will see a slow down in performance for any image that requires more memory than the system can provide. However, ImageMagick will exit gracefully.
We used to catch the SIGBUS signal but it proved problematic. We will revisit catching the SIGBUS and see if we can come up with a reasonable way to exit ImageMagick gracefully.