Hi Lucian,
Lucian Cojocar wrote,
> Waldemar Brodkorb <wbx <at> ucibc-ng.org> writes:
>
> >
> > Hi Lucian,
> > Lucian Cojocar wrote,
> >
> > > Hi,
> > >
> > > Any follow-up on this patch?
> >
> > Not yet. You are saying the second segmentation fault would be
> > expected. What is then the exact benefit of the patch, if the result
> > is a segfault?
>
> 'memset' will work on a range >= 2GB.
>
> > Or do you have a simple testcase showing breakage before your patch
> > and non-breakage after?
>
> Yes, I have a test which works in an environment where you can use more than
> 2GB contiguous virtual memory (e.g. have enough swap to accommodate 2GB
> contiguous virtual memory).
>
> """
> #include <string.h>
> #include <stdio.h>
> #include <sys/mman.h>
>
> #define GB (size_t)(1*(1 << 30ul))
> #define TWO_GB (2*(size_t)(GB))
> #define S (size_t)(TWO_GB+4096)
>
> int
> main(void)
> {
> char *p = NULL;
> p = mmap(NULL, S, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE,
> -1, 0);
> if (p == MAP_FAILED) {
> perror("mmap");
> exit(-1);
> }
> printf("&p[0] = %p\n", &p[0]);
> printf("&p[S] = %p\n", &p[S]);
>
> printf("memsetting ...");
> memset(p, 0xaa, S);
> printf("done\n");
>
> printf("p[S-1]=%02x\n", (unsigned char)p[S-1]);
> exit(0);
> }
> """
>
> ~# ./main-buggy-memset.elf
> &p[0] = 0x36f66000
> &p[S] = 0xb6f67000
> Segmentation fault
> ~# ./main-fixed-memset.elf
> &p[0] = 0x36f8a000
> &p[S] = 0xb6f8b000
> memsetting ...done
> p[S-1]=aa
> ~# free -h
> total used free shared buffers cached
> Mem: 247M 56M 191M 252K 4.3M 33M
> -/+ buffers/cache: 19M 228M
> Swap: 10G 16M 10G
Applied and pushed,
Thanks you,
Waldemar
_______________________________________________
devel mailing list
[email protected]
http://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel