reassign 732207 tvtime
retitle 732207 tvtime: tvtime-configure segfaults on 64-bit systems
thanks
On Wed, Dec 18, 2013 at 02:52:25PM +0100, Alban Browaeys wrote:
> Package: tvtime
> Followup-For: Bug #732207
>
> Dear Maintainer,
> I rebuild with dh_strip off. Which gives:
>
> gdb --args tvtime-configure --configfile=/etc/tvtime/tvtime.xml --norm=SECAM
> --frequencies=france --device=/dev/video0 --vbidevice=/dev/vbi0 --priority=-10
>
> Program received signal SIGSEGV, Segmentation fault.
> __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:42
> 42 ../sysdeps/x86_64/multiarch/../strlen.S: Aucun fichier ou dossier de ce
> type.
> (gdb) bt
> #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:42
> #1 0x0000000000401a1e in main (argc=7, argv=0x7fffffffbce8) at
> tvtime-configure.c:39
> (gdb) up
> #1 0x0000000000401a1e in main (argc=7, argv=0x7fffffffbce8) at
> tvtime-configure.c:39
> 39 if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is
> too long\n" ); exit( 1 ); }
>
>
> It turns out that getenv always fails here (amd64), quick test for to
> reproduce:
> $ gdb bash
> (gdb) b main
> (gdb) r
> (gdb) p/s (char *)getenv("HOME")
> $1 = 0xffffffffffffea8a <Address 0xffffffffffffea8a out of bounds>
>
> Definitely looks like libc6 is broken on amd64 for its 2.17-97 deb at least
> (I tested with same libc6 version,
> on debian sid too on arm 32 (cortex A9) and i386 also 32 all is fine.
>
> critical indeed , you might want to reassign to libc6 (or I will tomorrow)
It is broken if you don't use the correct includes and the compiler
consider the strings are an int argument. Compiling tvtime with -Wall
should give you a hint:
| if x86_64-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -pedantic -I.
-DDATADIR="\"/usr/share/tvtime\"" -DCONFDIR="\"/etc/tvtime\""
-DFIFODIR="\"/tmp\"" -D_LARGEFILE64_SOURCE -DLOCALEDIR="\"/usr/share/locale\""
-I/usr/include/libxml2 -g -O3 -fomit-frame-pointer -std=gnu99 -MT
tvtime_configure-tvtime-configure.o -MD -MP -MF
".deps/tvtime_configure-tvtime-configure.Tpo" \
| -c -o tvtime_configure-tvtime-configure.o `test -f
'tvtime-configure.c' || echo './'`tvtime-configure.c; \
| then mv -f ".deps/tvtime_configure-tvtime-configure.Tpo"
".deps/tvtime_configure-tvtime-configure.Po"; \
| else rm -f ".deps/tvtime_configure-tvtime-configure.Tpo"; exit 1; \
| fi
| tvtime-configure.c: In function 'main':
| tvtime-configure.c:38:5: warning: implicit declaration of function 'getenv'
[-Wimplicit-function-declaration]
| if( ! getenv( "HOME" ) ) { fprintf( stderr, "this program needs HOME\n"
); exit( 1 ); }
| ^
| tvtime-configure.c:38:5: warning: implicit declaration of function 'exit'
[-Wimplicit-function-declaration]
| tvtime-configure.c:38:80: warning: incompatible implicit declaration of
built-in function 'exit' [enabled by default]
| if( ! getenv( "HOME" ) ) { fprintf( stderr, "this program needs HOME\n"
); exit( 1 ); }
|
^
| tvtime-configure.c:39:5: warning: implicit declaration of function 'strlen'
[-Wimplicit-function-declaration]
| if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too
long\n" ); exit( 1 ); }
| ^
| tvtime-configure.c:39:9: warning: incompatible implicit declaration of
built-in function 'strlen' [enabled by default]
| if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too
long\n" ); exit( 1 ); }
| ^
| tvtime-configure.c:39:5: warning: passing argument 1 of 'strlen' makes
pointer from integer without a cast [enabled by default]
| if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too
long\n" ); exit( 1 ); }
| ^
| tvtime-configure.c:39:5: note: expected 'const char *' but argument is of
type 'int'
| tvtime-configure.c:39:87: warning: incompatible implicit declaration of
built-in function 'exit' [enabled by default]
| if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too
long\n" ); exit( 1 ); }
Adding a #include <string.h> and a #include <stdlib.h> fixes the
problem.
Reassigning back the bug to tvtime.
--
Aurelien Jarno GPG: 1024D/F1BCDB73
[email protected] http://www.aurel32.net
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]