|
From: Jeremy F. <je...@go...> - 2004-06-01 20:38:59
|
On Tue, 2004-06-01 at 09:46 +0100, Tom Hughes wrote: > In message <108...@lo...> > Jeremy Fitzhardinge <je...@go...> wrote: > > > The initial problem is caused by VDSOs, which are placed low in the > > address space. When Valgrind clears out the client area in stage2, it > > also clears out the sysinfo page, which happens to be where the munmap > > syscall returns to... > > I believe they are actually placed at a random address, or so the > kernel source claims. It's random within the range 0x00111000-0x01000000, I think. > The code to setup the signal frame in arch/i386/kernel/signal.c is > doing this: > > restorer = current->mm->context.vdso + (long)&__kernel_sigreturn; > > Now if vdso is set to zero then current->mm->context.vdso will be null > as no vdso will have been allocated. Hence restorer will be in zero > page which seems rather nasty. I'm a bit surprised anything at all > works with vdso's turned off in fact. Yes that's pretty much exactly what I was expecting to see. I guess people don't run with vdsos off. I'm trying to get a little standalone program to fail in the same way, but it seems to work for reasons I don't understand yet. J |