Request for Review: 7007769: VM crashes with SIGBUS writing PerfData if tmp space is full

Bob Vandette bob.vandette at oracle.com
Tue Dec 21 05:51:04 PST 2010


On 12/21/2010 3:18 AM, Rémi Forax wrote:
> On 12/20/2010 08:49 PM, Bob Vandette wrote:
>> New changeset for review.
>>
>> http://cr.openjdk.java.net/~bobv/7007769
>>
>> If there is very little /tmp space, the VM will be able to 
>> successfully mmap the
>> performance data area in /tmp but when the VM attempts to access this 
>> memory
>> region, it will crash with a SIGBUS if there is insufficient disk 
>> space in /tmp.
>>
>> Solaris will fail the ftruncate call we use to extend the newly 
>> created file but Linux does not.
>> To work around this problem, I write a single byte to each page of 
>> the file about to be mmap'd
>> top reserve the space on the disk.
>>
>> Bob Vandette
>> Oracle
>>
>
> Bob,
> Linux has a specific mmap option that you can use in this case: 
> MAP_POPULATE.
Thanks for looking at my changeset.

I tried that option on my Linux test system and it did not solve my 
problem.  MMAP_POPULATE
is documented to only populate the page tables.  For file mapping it is 
supposed to do a read-ahead
but it doesn't say that it verifies the availability of space for a 
newly created file.

The other two things I didn't like about this option, even if it worked, 
are the fact that this option is
only supported on Linux 2.5.46 and above and that MMAP_POPULATE is only 
supported for private
mappings since 2.6.23.   This fix is for a shared memory region.

Bob.


>
> Rémi
>
>



More information about the hotspot-runtime-dev mailing list