Hi, Looking at the backtrace, this bug seems to be a (fairly) well-known segfault pattern of PPC architecture: "missing va_end call and/or abuse of va_list type" (only the first part is relevant). I believe the patch attached might fix the issue, but since I don't have an access to a PPC box, I couldn't test it. Could someone please apply the patch and check the result?
Regards, -- roktas
diff -ruN clara-20031214.orig/clara.c clara-20031214/clara.c
--- clara-20031214.orig/clara.c 2003-12-15 03:59:59.000000000 +0200
+++ clara-20031214/clara.c 2005-05-31 02:05:11.000000000 +0300
@@ -751,11 +751,12 @@
s[128] = 0;
logmsg(s);
- if (!trace)
- return;
- va_start(args,m);
- vfprintf(stderr,m,args);
- fprintf(stderr,"\n");
+ if (trace) {
+ vfprintf(stderr,m,args);
+ fprintf(stderr,"\n");
+ }
+
+ va_end(args);
}
/*
@@ -775,10 +776,12 @@
logmsg(s);
/* send to stderr if requested */
- if (!debug)
- return;
- vfprintf(stderr,m,args);
- fprintf(stderr,"\n");
+ if (debug) {
+ vfprintf(stderr,m,args);
+ fprintf(stderr,"\n");
+ }
+
+ va_end(args);
}
/*
@@ -797,9 +800,10 @@
s[128] = 0;
logmsg(s);
- va_start(args,m);
vfprintf(stderr,m,args);
fprintf(stderr,"\n");
+
+ va_end(args);
}
/* (devel)
diff -ruN clara-20031214.orig/event.c clara-20031214/event.c
--- clara-20031214.orig/event.c 2003-02-26 14:37:04.000000000 +0200
+++ clara-20031214/event.c 2005-05-31 01:56:21.000000000 +0300
@@ -638,6 +638,8 @@
}
}
+ va_end(args);
+
/*
printf("request (priority %d, mclip=%d, redraw=%d) to draw the message \"%s\"\n",f,mclip,redraw_stline,s);
*/
diff -ruN clara-20031214.orig/html.c clara-20031214/html.c
--- clara-20031214.orig/html.c 2003-03-25 20:13:02.000000000 +0200
+++ clara-20031214/html.c 2005-05-31 01:57:26.000000000 +0300
@@ -1548,11 +1548,12 @@
va_list args;
int n=0,f;
- va_start(args, fmt);
for (f=0; f==0; ) {
/* try to write */
+ va_start(args, fmt);
n = vsnprintf(*t+*top+1,*sz-*top-1,fmt,args);
+ va_end(args);
/*
Some implementations of vsnprintf return -1 when
@@ -1589,11 +1590,12 @@
va_list args;
int n=0,f;
- va_start(args, fmt);
for (f=0; f==0; ) {
/* try to write */
+ va_start(args, fmt);
n = vsnprintf(text+topt+1,textsz-topt-1,fmt,args);
+ va_end(args);
/*
Some implementations of vsnprintf return -1 when
signature.asc
Description: Digital signature

