On 28Jan, 2009, at 13:45 , Channa wrote: > Hi, > "This really does not belong on freebsd-current_at_." by this you mean to > say in FreeBSD current this problem is not seen. > > Are you referring to FreeBSD current jemalloc version which is > "1.183". > Since i am using the same Version of jemalloc to test the code. > > Could you please elaborate more if my understanding on your statment > is correct? You are using strlen() on a string that is not NULL terminated. That is a violation of how strlen() works, and the result is undefined. That means anything can happen including killing you dog, eating your first born child etc etc. To be brutally honest with you, this is one of the most important things you (should) learn when using strings in 'C', that is why it doesn't belong here on the list. -Søren > > > Thanks in Advance, > Channa > > > On 28/01/2009, Christoph Mallon <christoph.mallon_at_gmx.de> wrote: >> Channa schrieb: >> >>> Hi, >>> Thanks for the reply. >>> >>> I understand , after terminating the string with NULL character no >>> SEGV is >> seen. >>> >>> But if i change the request size to a value less than 1MB for eg: >>> 4096 >> Bytes, >>> >>> As in the below test code: >>> >>> #include <stdio.h> >>> #include <stdlib.h> >>> #include <string.h> >>> >>> int main() >>> { >>> int i; >>> char *buf; >>> size_t size = 4096 ; >>> >>> buf = malloc(size); >>> for (i = 0; i < size; i++) >>> buf[i] = 'a'; >>> printf("The length of buff is : %d\n",strlen(buf)); >>> free(buf); >>> return 0; >>> } >>> >>> I dont see any issues, without terminating the string with NULL >>> character the test code works fine. The issue is seen only for size >>> 1MB exactly. >>> >>> Can anyone explain this behaviour? >>> >> >> Undefined behaviour and (bad) luck. You are reading random garbage >> from >> memory. For a large allocation like 1MB you get page aligned memory >> and the >> page after the allocation is very likely not mapped, so you get a >> segfault >> when you try to access it. >> This really does not belong on freebsd-current_at_. >> > _______________________________________________ > freebsd-current_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org > " > -SørenReceived on Wed Jan 28 2009 - 11:53:54 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:41 UTC