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.
----
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