"Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> writes:
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 :)
Fancy implies we're doing it on purpose :P
That's strange layout. It doesn't give that much (relatively speaking)
virtual address space for both stack and heap to grow.
I'm pretty sure it only happens when you're running an ELF interpreter
directly, because of Kees patch which changed the logic to load ELF
interpreters in the mmap region, vs PIE binaries which go to
ELF_ET_DYN_BASE. (eab09532d400 ("binfmt_elf: use ELF_ET_DYN_BASE only
for PIE"))