Thu Jun 12 06:18:47 PDT 2008
- Previous message: [Slony1-general] slonik segfault
- Next message: [Slony1-general] slonik segfault
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi, At 14:40 12/06/2008, Cyril SCETBON wrote: >I've tested it on the host and did not get any error with a negative >value or a big value : > >cat test_malloc.c > >#include <stdlib.h> >#include <stdio.h> > >int main() >{ > printf("malloc(-4096)\n"); > malloc(-4096); > printf("malloc(18446744073709547520)\n"); > malloc(18446744073709547520); > return 0; >} > >cc -g -w test_malloc.c -o test_malloc > >./test_malloc >malloc(-4096) >malloc(18446744073709547520) > >no segmentation fault Quite normal, the malloc itself won't cause a segfault, it's the fact that something later uses space requested via malloc that couldn't be allocated (malloc then returned 0). What's the return value of the malloc calls? >, and the strace command shows : > >write(1, "malloc(-4096)\n", 14malloc(-4096) >) = 14 >brk(0) = 0x501000 >brk(0x521000) = 0x521000 >mmap(NULL, 2097152, PROT_NONE, >MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2b78f91d1000 >munmap(0x2b78f91d1000, 192512) = 0 >munmap(0x2b78f9300000, 856064) = 0 >mprotect(0x2b78f9200000, 131072, PROT_READ|PROT_WRITE) = 0 >mmap(NULL, 2097152, PROT_NONE, >MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2b78f9300000 >munmap(0x2b78f9400000, 1048576) = 0 >mprotect(0x2b78f9300000, 131072, PROT_READ|PROT_WRITE) = 0 >munmap(0x2b78f9300000, 1048576) = 0 >write(1, "malloc(18446744073709547520)\n", 29malloc(18446744073709547520) >) = 29 >mmap(NULL, 2097152, PROT_NONE, >MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2b78f9300000 >munmap(0x2b78f9400000, 1048576) = 0 >mprotect(0x2b78f9300000, 131072, PROT_READ|PROT_WRITE) = 0 >munmap(0x2b78f9300000, 1048576) = 0 >munmap(0x2b78f8e94000, 4096) = 0 >exit_group(0) = ? >Process 15518 detached - you'll notice that the mmap calls are the same for both calls (don't quite know what malloc is really doing here, it seems to be allocating more space then freeing up bits, probably trying to align on some large size), though neither size matches the actual request (?) - the malloc-induced mmap is quite different from the one in your original strace (see the flags). Is that the same box? You must have some special compile flags or libraries in your slonik compile that change malloc's behaviour. Was your slony-1 install locally compiled or installed from binaries? If the latter you might want to try a good old wget/tar/configure/make to see if the result is the same... Jacques.
- Previous message: [Slony1-general] slonik segfault
- Next message: [Slony1-general] slonik segfault
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list