On Fri, Mar 22, 2013 at 1:36 AM, Roland Mainz <[email protected]> wrote: > On Sat, Mar 9, 2013 at 9:52 PM, Roland Mainz <[email protected]> wrote: >> On Mon, Feb 25, 2013 at 8:51 PM, Roland Mainz <[email protected]> >> wrote: >>> On Fri, Feb 22, 2013 at 10:14 PM, Glenn Fowler <[email protected]> >>> wrote: >>>> On Thu, 21 Feb 2013 04:19:00 +0100 Roland Mainz wrote: >>>>> On Mon, Feb 18, 2013 at 5:51 PM, Glenn Fowler <[email protected]> >>>>> wrote: >>>>> > >>>>> > 2013-02-14 alpha posted to www.research.att.com/download/alpha/ >>>>> > INIT.2013-02-14.tgz >>>>> > ast-ksh.2013-02-14.tgz >>>>> > this is a work in progress >>>>> > there are known problems on some architectures >>>> >>>>> On SuSE 12.2 Linux/AMD64/64bit I get a couple of valgrind hits in the >>>>> spawnvex subsystem: >>>>> -- snip -- >>>>> $ valgrind --track-origins=yes --read-var-info=yes ~/bin/ksh -c 'ls -l ; >>>>> true' >>>>> ==19925== Memcheck, a memory error detector >>>>> ==19925== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. >>>>> ==19925== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright >>>>> info >>>>> ==19925== Command: /home/test001/bin/ksh -c ls\ -l\ ;\ true >>>>> ==19925== >>>>> [snip] >>>>> ==19925== >>>>> ==19925== Conditional jump or move depends on uninitialised value(s) >>>>> ==19925== at 0x4DC865: spawnvex (spawnvex.c:1100) >>>>> ==19925== by 0x4653D3: _spawnveg (path.c:151) >>>>> ==19925== by 0x468973: path_spawn (path.c:1228) >>>>> ==19925== by 0x480B4A: sh_ntfork (xec.c:3824) >>>>> ==19925== by 0x479F15: sh_exec (xec.c:1675) >>>>> ==19925== by 0x47BC7A: sh_exec (xec.c:2200) >>>>> ==19925== by 0x40F0D5: exfile (main.c:588) >>>>> ==19925== by 0x40E29A: sh_main (main.c:360) >>>>> ==19925== by 0x40D450: main (pmain.c:45) >>>>> ==19925== Uninitialised value was created by a stack allocation >>>>> ==19925== at 0x4DC6C2: spawnvex (spawnvex.c:793) >>> [snip] >>>> >>>> roland, I'm having line sync probs between my src and the valgrind lines >>>> can you identify the varialble that is claimed to be uninitialized >>>> thanks >>> >>> valgrind hits and line numbers for ast-ksh.2013-02-22 look like this: >>> -- snip -- >>> $ valgrind --track-origins=yes --read-var-info=yes >>> ./arch/linux.i386-64/bin/ksh -c 'ls -l ; true' >>> ==2409== Memcheck, a memory error detector >>> ==2409== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. >>> ==2409== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info >>> ==2409== Command: ./arch/linux.i386-64/bin/ksh -c ls\ -l\ ;\ true >>> ==2409== >>> [snip] >>> ==2409== >>> ==2409== Conditional jump or move depends on uninitialised value(s) >>> ==2409== at 0x4DC851: spawnvex (spawnvex.c:1100) >>> ==2409== by 0x4653BF: _spawnveg (path.c:151) >>> ==2409== by 0x46895F: path_spawn (path.c:1228) >>> ==2409== by 0x480B36: sh_ntfork (xec.c:3824) >>> ==2409== by 0x479F01: sh_exec (xec.c:1675) >>> ==2409== by 0x47BC66: sh_exec (xec.c:2200) >>> ==2409== by 0x40F0D5: exfile (main.c:588) >>> ==2409== by 0x40E29A: sh_main (main.c:360) >>> ==2409== by 0x40D450: main (pmain.c:45) >>> ==2409== Uninitialised value was created by a stack allocation >>> ==2409== at 0x4DC6AE: spawnvex (spawnvex.c:793) >>> ==2409== >>> ==2409== Conditional jump or move depends on uninitialised value(s) >>> ==2409== at 0x4DCC77: spawnvex (spawnvex.c:1193) >>> ==2409== by 0x4653BF: _spawnveg (path.c:151) >>> ==2409== by 0x46895F: path_spawn (path.c:1228) >>> ==2409== by 0x480B36: sh_ntfork (xec.c:3824) >>> ==2409== by 0x479F01: sh_exec (xec.c:1675) >>> ==2409== by 0x47BC66: sh_exec (xec.c:2200) >>> ==2409== by 0x40F0D5: exfile (main.c:588) >>> ==2409== by 0x40E29A: sh_main (main.c:360) >>> ==2409== by 0x40D450: main (pmain.c:45) >>> ==2409== Uninitialised value was created by a stack allocation >>> ==2409== at 0x4DC6AE: spawnvex (spawnvex.c:793) >>> ==2409== >>> ==2410== Conditional jump or move depends on uninitialised value(s) >>> ==2410== at 0x4DC8AB: spawnvex (spawnvex.c:1118) >>> ==2410== by 0x4653BF: _spawnveg (path.c:151) >>> ==2410== by 0x46895F: path_spawn (path.c:1228) >>> ==2410== by 0x480B36: sh_ntfork (xec.c:3824) >>> ==2410== by 0x479F01: sh_exec (xec.c:1675) >>> ==2410== by 0x47BC66: sh_exec (xec.c:2200) >>> ==2410== by 0x40F0D5: exfile (main.c:588) >>> ==2410== by 0x40E29A: sh_main (main.c:360) >>> ==2410== by 0x40D450: main (pmain.c:45) >>> ==2410== Uninitialised value was created by a stack allocation >>> ==2410== at 0x4DC6AE: spawnvex (spawnvex.c:793) >>> ==2410== >>> total 1536 >>> drwxr-xr-x 3 test001 users 4096 Feb 24 23:06 arch >>> drwxr-xr-x 2 test001 users 4096 Feb 24 23:07 bin >>> -rw-r--r-- 1 test001 users 1537649 Feb 25 02:29 buildlog.log >>> drwxr-xr-x 3 test001 users 4096 Feb 24 23:04 lib >>> -rw-r--r-- 1 test001 users 854 Feb 23 08:20 README >>> drwxr-xr-x 4 test001 users 4096 Feb 24 23:04 src >>> drwxr-xr-x 3 test001 users 4096 Feb 25 05:29 tmp >>> -rw-r--r-- 1 test001 users 3851 Feb 24 23:06 >>> tmp_gnulinux_builtin_header.h >>> -- snip -- >>> >>> First hit is: >>> -- snip -- >>> ==2461== Conditional jump or move depends on uninitialised value(s) >>> ==2461== at 0x4DC851: spawnvex (spawnvex.c:1100) >>> ==2461== by 0x4653BF: _spawnveg (path.c:151) >>> ==2461== by 0x46895F: path_spawn (path.c:1228) >>> ==2461== by 0x480B36: sh_ntfork (xec.c:3824) >>> ==2461== by 0x479F01: sh_exec (xec.c:1675) >>> ==2461== by 0x47BC66: sh_exec (xec.c:2200) >>> ==2461== by 0x40F0D5: exfile (main.c:588) >>> ==2461== by 0x40E29A: sh_main (main.c:360) >>> ==2461== by 0x40D450: main (pmain.c:45) >>> ==2461== Uninitialised value was created by a stack allocation >>> ==2461== at 0x4DC6AE: spawnvex (spawnvex.c:793) >>> -- snip -- >>> ... which seems to be the |flags| variable in line 1100: >>> -- snip -- >>> 1097 fcntl(msg[1], F_SETFD, FD_CLOEXEC); >>> 1098 } >>> 1099 #endif >>> 1100 if (!(flags & SPAWN_FOREGROUND)) >>> 1101 sigcritical(SIG_REG_EXEC|SIG_REG_PROC); >>> 1102 #if _lib_vfork >>> 1103 #if _lib_fork >>> 1104 if (nx.flags & SPAWN_VFORK) >>> -- snip -- >>> >>> >>> 2nd hit is: >>> -- snip -- >>> ==2461== Conditional jump or move depends on uninitialised value(s) >>> ==2461== at 0x4DC851: spawnvex (spawnvex.c:1100) >>> ==2461== by 0x4653BF: _spawnveg (path.c:151) >>> ==2461== by 0x46895F: path_spawn (path.c:1228) >>> ==2461== by 0x480B36: sh_ntfork (xec.c:3824) >>> ==2461== by 0x479F01: sh_exec (xec.c:1675) >>> ==2461== by 0x47BC66: sh_exec (xec.c:2200) >>> ==2461== by 0x40F0D5: exfile (main.c:588) >>> ==2461== by 0x40E29A: sh_main (main.c:360) >>> ==2461== by 0x40D450: main (pmain.c:45) >>> ==2461== Uninitialised value was created by a stack allocation >>> ==2461== at 0x4DC6AE: spawnvex (spawnvex.c:793) >>> -- snip -- >>> ... again it seems to be the |flags| variable in line 1118: >>> -- snip -- >>> 1117 { >>> 1118 if (!(flags & SPAWN_FOREGROUND)) >>> 1119 sigcritical(0); >>> 1120 if (vex && (n = spawnvex_apply(vex, 0, >>> SPAWN_FRAME|SPAWN_NOCALL))) >>> 1121 errno = n; >>> -- snip -- >>> >>> >>> 3rd (and last) hit is this one: >>> -- snip -- >>> ==2461== Conditional jump or move depends on uninitialised value(s) >>> ==2461== at 0x4DCC77: spawnvex (spawnvex.c:1193) >>> ==2461== by 0x4653BF: _spawnveg (path.c:151) >>> ==2461== by 0x46895F: path_spawn (path.c:1228) >>> ==2461== by 0x480B36: sh_ntfork (xec.c:3824) >>> ==2461== by 0x479F01: sh_exec (xec.c:1675) >>> ==2461== by 0x47BC66: sh_exec (xec.c:2200) >>> ==2461== by 0x40F0D5: exfile (main.c:588) >>> ==2461== by 0x40E29A: sh_main (main.c:360) >>> ==2461== by 0x40D450: main (pmain.c:45) >>> ==2461== Uninitialised value was created by a stack allocation >>> ==2461== at 0x4DC6AE: spawnvex (spawnvex.c:793) >>> ==2461== >>> -- snip -- >>> ... which relates to this code in line 1193: >>> -- snip -- >>> 1192 } >>> 1193 if (!(flags & SPAWN_FOREGROUND)) >>> 1194 sigcritical(0); >>> 1195 if (pid != -1 && vex) >>> -- snip -- >>> >>> ... short summary: It's the |flags| variable which is uninitalised in >>> some usage cases. >>> >>> The frustrating part is that the --track-origins=yes option of >>> valgrind points to line 793: >>> -- snip -- >>> 791 pid_t >>> 792 spawnvex(const char* path, char* const argv[], char* const >>> envv[], Spawnvex_t* vex) >>> 793 { >>> 794 >>> -- snip -- >>> This is the beginning of the function, IMO useless and frustrating >>> because the binary was explicitly created with -g -ggdb and optimiser >>> disabled. >> >> ping! ... is there a patch for the valgrind hits yet (well, I can >> "silence" the warnings via initalising the |flags| variable myself... >> but I'm not 100% sure whether this is the correct "fix") ? > > Erm... the issue is still present in ast-ksh.2013-03-18 and spamming > my valgrind logs... ;-((
ast-ksh.2013-04-02 still has the same problem... ;-((((((((((((( ... the only issue which is "open" is whether initalising the |flags| variable (the "offender" causing the valgrind hits) at declaration time is the correct way... or not... ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) [email protected] \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;) _______________________________________________ ast-developers mailing list [email protected] http://lists.research.att.com/mailman/listinfo/ast-developers
