Bug#413078: Gcc does not work after kernel upgrade
Andrew Buckeridge a écrit :
> On Fri, 2 Mar 2007 01:39:16 -0700
> dann frazier <dannf@debian.org> wrote:
>
>> On Fri, Mar 02, 2007 at 02:13:22PM +0800, Andrew Buckeridge wrote:
>>> package: linux-image-2.6.18-4-amd64
>>> version: 2.6.18.dfsg.1-11
>>>
>>> Trivial program now segfault and/or get garbled data from functions.
>> Please include an example program, and instructions on compiling it.
> Right, there is no such thing as a trivial program.
>
> andrewb@thot:~/public_html/c-run$ gcc-3.3 -o 4155-date 4155-date.c; ./4155-date
> Segmentation fault
> andrewb@thot:~/public_html/c-run$ gcc-3.4 -o 4155-date 4155-date.c; ./4155-date
> Segmentation fault
> andrewb@thot:~/public_html/c-run$ gcc-4.0 -o 4155-date 4155-date.c; ./4155-date
> Segmentation fault
> andrewb@thot:~/public_html/c-run$ gcc-4.1 -o 4155-date 4155-date.c; ./4155-date
> 4280320909.M2475556863P9914.thot
> Tue Jul 15 11:33:33 1969
> Tue, 15 Jul 1969 19:33:33 +0800
> andrewb@thot:~/public_html/c-run$ gcc -o 4155-date 4155-date.c; ./4155-date
> 4280320909.M2475556863P9914.thot
> Tue Jul 15 11:33:33 1969
> Tue, 15 Jul 1969 19:33:33 +0800
>
>> Also, what kernel did you upgrade from where this program did work?
> kernel-image-2.6.8-12-amd64-k8
> 2.6.8-16sarge6
>> --
>> dann frazier
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> #include <stdlib.h>
>> #include <stdio.h>
>> #include <stdarg.h>
>> #include <unistd.h>
>> #include <sys/time.h>
>> #include <string.h>
>> #include <time.h>
>> #include <alloca.h>
>>
>> /* This shite is good for debugging non-std ANSI/ISO C */
>>
>> /* +Ve == bytes written -Ve == bytes required */
>>
>> int vunprintf(int fdout, int r, const char *fmt, va_list ap) {
>> int i;
>> char *p;
>>
>> p=alloca(r);
>> i=vsnprintf(p,r,fmt,ap);
>> if(i<0)
>> return 1-2*r;
>> if(i<r)
>> return write(fdout,p,i);
>> else
>> return -i;
>> }
>>
>> /* +Ve == bytes written -Ve == failure */
>>
>> int vuprintf(int fdout, const char *fmt, va_list ap) {
>> int i=BUFSIZ;
>> i=vunprintf(fdout, i, fmt, ap);
>> if(i<0)
>> i=vunprintf(fdout, 1-i, fmt, ap);
>> return i;
>> }
>>
>> int uprintf(int fdout, const char *fmt, ...) {
>> va_list ap;
>> int r;
>>
>> va_start(ap, fmt);
>> r=vuprintf(fdout, fmt, ap);
>> va_end(ap);
>> return r;
>> }
>>
>> int uputs(char *s, int fdout) {
>> int l;
>>
>> l=strlen(s);
>> if(l>0)
>> return write(fdout,s,l);
>> else
>> return l;
>> }
>>
>> int main() {
>> char *s, h[32], r[64];
>> int l;
>> struct timeval *tp;
>>
>> /* time_t tr; */
>> /* tr=time(0); */ /* BROKEN arg must be NULL */
>>
>> l=gettimeofday(tp, 0);
^^
Your problem is here, not in the kernel. tp is not yet allocated, hence
the problem.
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' aurel32@debian.org | aurelien@aurel32.net
`- people.debian.org/~aurel32 | www.aurel32.net
Reply to: