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

Rémi Forax forax at univ-mlv.fr
Tue Dec 21 08:57:09 PST 2010


On 12/21/2010 02:51 PM, Bob Vandette wrote:
> 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.

Oups sorry, when I tested it a long time ago, it was working :(

>
> 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