Peter Olson <pe...@peabo.com> writes: >> On October 14, 2015 at 3:20 PM Edward Bartolo <edb...@gmail.com> wrote: >> >> >> This is another part of the backend code where valgrind is saying: >> >> ==5501== 5 errors in context 1 of 3: >> ==5501== Use of uninitialised value of size 8 >> ==5501== at 0x5172AFC: ____strtod_l_internal (strtod_l.c:889) >> ==5501== by 0x403856: getRadiatingWifiList (automated_scanner.c:265)
[...] > This diagnostic bothers me: > >> ==5501== Uninitialised value was created by a stack allocation >> ==5501== at 0x4034BB: getRadiatingWifiList (automated_scanner.c:155) > > This is hundreds of lines away from > >> ==5501== by 0x403856: getRadiatingWifiList >> (automated_scanner.c:265) "ELARGEFUNCTION" > which is presumably > >> tmp_wifi_quality->quality = strtod(tmpstr, >> NULL); > > You should probably investigate the area around line 155. Since the explanation may be useful: 'Stack allocations' usually happen at the beginning of a function, regardless of the point of a variable declaration. Eg, when running the following test/ example program: ------ /* 1 */ #include <stdlib.h> /* 2 */ #include <string.h> /* 3 */ #include <stdio.h> /* 4 */ /* 5 */ char const scan_buffer[] = "yadda Signal level=5.9 fff"; /* 6 */ /* 7 */ int main(void) /* 8 */ { /* 9 */ double d; /* 10 */ /* 11 */ char* substr = strstr((char *) scan_buffer, "Signal level="); /* 12 */ substr = strstr(substr, "="); /* 13 */ char* endstr = strstr(substr + 1, " "); /* 14 */ char tmpstr[8]; /* 15 */ strncpy(tmpstr, substr + 1, endstr - substr - 1); /* 16 */ tmpstr[endstr - substr + 1] = '\0'; /* 17 */ /* 18 */ d = strtod(tmpstr, NULL); /* 19 */ printf("%f\n", d); /* 20 */ /* 21 */ return 0; /* 22 */ } ------ via $valgrind --track-origins=yes ./a.out one gets the following (partial) output: ==27072== Conditional jump or move depends on uninitialised value(s) ==27072== at 0x4E63430: ____strtod_l_internal (strtod_l.c:803) ==27072== by 0x40066B: main (aa.c:18) ==27072== Uninitialised value was created by a stack allocation ==27072== at 0x4005D4: main (aa.c:8) ==27072== ==27072== Use of uninitialised value of size 8 ==27072== at 0x4E6343E: ____strtod_l_internal (strtod_l.c:818) ==27072== by 0x40066B: main (aa.c:18) ==27072== Uninitialised value was created by a stack allocation ==27072== at 0x4005D4: main (aa.c:8) The uninitialized values is used on line 18 but reported as allocated on line 8 which is the start of the function. _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng