Re: 2.6.29-git13: Reported regressions from 2.6.28

Chris Friesen
2009-04-22T19:34:56Z

Hugh Dickins wrote:
> On Mon, 20 Apr 2009, Chris Friesen wrote:

>> For anonymous mappings, the older kernels put the starting address of the VMA
>> (from the point of view of the app) as the offset. Until the recent change,
>> new kernels still did this for most VMAs, but the stack offset was a 64-bit
>> value with no obvious relation to the VMA start address.
>
> No, what they put there was something that in most cases matched the
> starting address of the VMA; but try moving that VMA with mremap (and
> an old /proc/<pid>/maps!) and you'll see that the "offset" remained
> unchanged even when the starting address of the VMA was changed.
>
> (The offset remaining constant so that rmap can locate the VMA's pages
> and unmap them, despite their being mapped at different virtual
> addresses in parent and child after a move in one of them.)
>
> ... so I think your app was indeed already broken, wasn't it?
>
> It's also unclear why you'd want to use the offset field for the
> starting address of the VMA, when /proc/<pid>/maps already shows
> the starting address of the VMA. I think you've more to tell us!

Yeah, given the above the app was broken. We just didn't run into any
cases where the assumption caused any problems.

Also, it's not so much that we were relying on the offset value for
anything, so much as we were parsing the file and had made some
assumptions about valid offsets for anonymous memory.

Anyways, we'll fix it going forward to simply ignore the offset for
anonymous memory.

Chris