[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] possible mmap regression
From: |
Felipe Contreras |
Subject: |
Re: [Qemu-devel] [PATCH] possible mmap regression |
Date: |
Wed, 20 Feb 2008 15:03:39 +0200 |
Hi Edgar,
On Feb 16, 2008 11:07 PM, Edgar E. Iglesias <address@hidden> wrote:
>
> On Tue, Feb 12, 2008 at 09:42:15PM +0200, Felipe Contreras wrote:
> > Hi,
> >
> > I don't know what I'm doing but this seems to fix the weird issue I was
> > having.
> > http://article.gmane.org/gmane.comp.emulators.qemu/23314
> >
> > I've found out that this happens on linux 2.6.23, but not 2.6.24.
> >
> > Cheers.
> >
> > --
> > Felipe Contreras
> > diff --git a/linux-user/mmap.c b/linux-user/mmap.c
> > index 6292826..3050ad9 100644
> > --- a/linux-user/mmap.c
> > +++ b/linux-user/mmap.c
> > @@ -251,7 +251,7 @@ abi_long target_mmap(abi_ulong start, abi_ulong len,
> > int prot,
> > especially important if qemu_host_page_size >
> > qemu_real_host_page_size */
> > p = mmap(g2h(mmap_start),
> > - host_len, prot, flags | MAP_FIXED, fd, host_offset);
> > + host_len, prot, flags, fd, host_offset);
> > if (p == MAP_FAILED)
> > return -1;
> > /* update start so that it points to the file position at 'offset'
> > */
>
> Hello,
>
> Sorry, but I beleive your patch will break simulations where the targets
> pagesize is larger than the hosts.
>
> Would you mind trying the attach patched and let us know if it helps for you?
> If not, it would be great if you could provide a small test case that trigs
> the bug you are seeing so we can debug the problem.
>
> Best regards
> --
> Edgar E. Iglesias
> Axis Communications AB
>
> diff --git a/linux-user/mmap.c b/linux-user/mmap.c
> index 6292826..78a8162 100644
> --- a/linux-user/mmap.c
> +++ b/linux-user/mmap.c
> @@ -385,6 +385,9 @@ int target_munmap(abi_ulong start, abi_ulong len)
> real_end -= qemu_host_page_size;
> }
>
> + if (start < mmap_next_start)
> + mmap_next_start = start;
> +
> /* unmap what we can */
> if (real_start < real_end) {
> ret = munmap(g2h(real_start), real_end - real_start);
>
I tried your patch and it still crashes.
I sent the details before:
http://article.gmane.org/gmane.comp.emulators.qemu/23314
http://article.gmane.org/gmane.comp.emulators.qemu/23328
Basically it was triggered by this change:
http://repo.or.cz/w/qemu.git?a=commitdiff;h=edbcc0b2eb1d4caee5f293e5c79f81023f3394e2
And it happens with some recursive Makefiles stuff.
Best regards.
--
Felipe Contreras