2017-11-08 00:30:33

by Florian Weimer

[permalink] [raw]
Subject: Re: POWER: Unexpected fault when writing to brk-allocated memory

On 11/07/2017 12:44 PM, Kirill A. Shutemov wrote:
> On Tue, Nov 07, 2017 at 12:26:12PM +0100, Florian Weimer wrote:
>> On 11/07/2017 12:15 PM, Kirill A. Shutemov wrote:
>>
>>>> First of all, using addr and MAP_FIXED to develop our heuristic can
>>>> never really give unchanged ABI. It's an in-band signal. brk() is a
>>>> good example that steadily keeps incrementing address, so depending
>>>> on malloc usage and address space randomization, you will get a brk()
>>>> that ends exactly at 128T, then the next one will be >
>>>> DEFAULT_MAP_WINDOW, and it will switch you to 56 bit address space.
>>>
>>> No, it won't. You will hit stack first.
>>
>> That's not actually true on POWER in some cases. See the process maps I
>> posted here:
>>
>> <https://marc.info/?l=linuxppc-embedded&m=150988538106263&w=2>
>
> Hm? I see that in all three cases the [stack] is the last mapping.
> Do I miss something?

Hah, I had not noticed. Occasionally, the order of heap and stack is
reversed. This happens in approximately 15% of the runs.

See the attached example.

Thanks,
Florian


Attachments:
maps.txt (2.62 kB)

2017-11-07 14:12:38

by Kirill A. Shutemov

[permalink] [raw]
Subject: Re: POWER: Unexpected fault when writing to brk-allocated memory

On Tue, Nov 07, 2017 at 02:05:42PM +0100, Florian Weimer wrote:
> On 11/07/2017 12:44 PM, Kirill A. Shutemov wrote:
> > On Tue, Nov 07, 2017 at 12:26:12PM +0100, Florian Weimer wrote:
> > > On 11/07/2017 12:15 PM, Kirill A. Shutemov wrote:
> > >
> > > > > First of all, using addr and MAP_FIXED to develop our heuristic can
> > > > > never really give unchanged ABI. It's an in-band signal. brk() is a
> > > > > good example that steadily keeps incrementing address, so depending
> > > > > on malloc usage and address space randomization, you will get a brk()
> > > > > that ends exactly at 128T, then the next one will be >
> > > > > DEFAULT_MAP_WINDOW, and it will switch you to 56 bit address space.
> > > >
> > > > No, it won't. You will hit stack first.
> > >
> > > That's not actually true on POWER in some cases. See the process maps I
> > > posted here:
> > >
> > > <https://marc.info/?l=linuxppc-embedded&m=150988538106263&w=2>
> >
> > Hm? I see that in all three cases the [stack] is the last mapping.
> > Do I miss something?
>
> Hah, I had not noticed. Occasionally, the order of heap and stack is
> reversed. This happens in approximately 15% of the runs.

Heh. I guess ASLR on Power is too fancy :)

That's strange layout. It doesn't give that much (relatively speaking)
virtual address space for both stack and heap to grow.

--
Kirill A. Shutemov

From 1583412776185510581@xxx Tue Nov 07 13:08:16 +0000 2017
X-GM-THRID: 1583404961130869946
X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread