----- Original Message ----- > From: "Wanlong Gao" <[email protected]> > To: "Jan Stancek" <[email protected]> > Cc: [email protected], "Om Prakash PAL" > <[email protected]> > Sent: Wednesday, 24 October, 2012 9:51:59 AM > Subject: Re: [LTP] Regarding shmat01 syscall test > > On 10/24/2012 03:49 PM, Jan Stancek wrote: > > > > > > ----- Original Message ----- > >> From: "Wanlong Gao" <[email protected]> > >> To: "Jan Stancek" <[email protected]> > >> Cc: [email protected], "Om Prakash PAL" > >> <[email protected]> > >> Sent: Wednesday, 24 October, 2012 9:03:16 AM > >> Subject: Re: [LTP] Regarding shmat01 syscall test > >> > >> On 10/24/2012 02:43 PM, Jan Stancek wrote: > >>> > >>> > >>> ----- Original Message ----- > >>>> From: "Wanlong Gao" <[email protected]> > >>>> To: "Om Prakash PAL" <[email protected]> > >>>> Cc: [email protected] > >>>> Sent: Wednesday, 24 October, 2012 2:45:47 AM > >>>> Subject: Re: [LTP] Regarding shmat01 syscall test > >>>> > >>>> On 10/23/2012 06:05 PM, Om Prakash PAL wrote: > >>>>> > >>>>> > >>>>> -----Original Message----- > >>>>> From: Wanlong Gao [mailto:[email protected]] > >>>>> Sent: Tuesday, October 23, 2012 3:07 PM > >>>>> To: Om Prakash PAL > >>>>> Cc: [email protected] > >>>>> Subject: Re: [LTP] Regarding shmat01 syscall test > >>>>> > >>>>> On 10/23/2012 05:24 PM, Om Prakash PAL wrote: > >>>>>> Hi, > >>>>>> > >>>>>> I am working on syscall test: shmat01.c > >>>>>> > >>>>>> I have some confusion: > >>>>>> > >>>>>> > >>>>>> > >>>>>> In setup() : it is allocating shared memory by shmget() and > >>>>>> then > >>>>>> attaching by shmat() and after that detaching the attached > >>>>>> address (i.e. shmdt()) > >>>>>> > >>>>>> > >>>>>> > >>>>>> if (shmdt((const void *)base_addr) == -1) { > >>>>>> > >>>>>> tst_brkm(TBROK, cleanup, "Couldn't detach > >>>>>> shared > >>>>>> memory"); > >>>>>> > >>>>>> } > >>>>>> > >>>>>> > >>>>>> > >>>>>> And again in main function it is using same "base_addr" as > >>>>>> attaching address, > >>>>>> > >>>>>> > >>>>>> > >>>>>> addr = shmat(*(TC[i].shmid), base_addr+TC[i].offset, > >>>>>> > >>>>>> TC[i].flags); > >>>>>> > >>>>>> how can we ensure(100%) that base_addr (virtual) will be free > >>>>>> till > >>>>>> this point for attaching?. > >>>>> > >>>>> Maybe we can't, but I didn't see any fail on this. Did you see > >>>>> any > >>>>> testing failure here? > >>>>> > >>>>> Yes, I got some failure and the reason of failure is : the > >>>>> address > >>>>> at which we want to attach is busy. > >>>> > >>>> OK, please feel free to send a patch, or can you tell us how to > >>>> reproduce it? > >>> > >>> I recall I could reproduce it, if I added single printf: > >>> http://article.gmane.org/gmane.linux.ltp/16480 > >> > >> Do you get a solution? Send out a patch? > > > > No, I haven't send any patch. > > > > About solution: > > I'm thinking, that instead of probing with shmat, we can mmap large > > chunk of memory, > > and then set base_addr somewhere in the middle and unmap the chunk. > > That is, using address that get_unmapped_area() is unlikely to > > pick. > > This idea seems good, bug how can you decide the size of this "chunk > of memory"?
Good question. How about starting with some large value, say 512M, and keep dividing by 2 until mmap succeeds? Regards, Jan > > Thanks, > Wanlong Gao > > > > > Regards, > > Jan > > > >> > >> > >> Thanks, > >> Wanlong Gao > >> > >>> > >>> Regards, > >>> Jan > >>> > >> > >> > > > > ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
