mpd@amd64

Archie Cobbs archie at dellroad.org
Fri Dec 24 13:30:13 PST 2004


James R. Van Artsalen wrote:
>> Hello, freebsd-amd64.
>>
>> does mpd work on amd64? it crashes with message like
>> pid (some huge integer), (.. - as one char)@
> 
> I looked at this and it crashes starting up for me too.  It crashes in 
> vprintf, within the second call to LogPrintf (), apparently while 
> logging ordinary startup messages.  I don't see any obvious cause at 
> that point unfortunately.

Can you try the attached patch? Someone else on the mpd-users mailing
list had a similar problem and this helped.

-Archie

__________________________________________________________________________
Archie Cobbs      *        CTO, Awarix        *      http://www.awarix.com
-------------- next part --------------
Index: log.c
===================================================================
RCS file: /cvsroot/mpd/mpd/src/log.c,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- log.c	25 Nov 2002 23:51:41 -0000	1.4
+++ log.c	7 Oct 2004 22:43:31 -0000	1.4.2.1
@@ -265,17 +265,21 @@
 {
   va_list	args;
 
-  va_start(args, fmt);
   LogTimeStamp(logprintf);
+  va_start(args, fmt);
   vlogprintf(fmt, args);
+  va_end(args);
+  va_start(args, fmt);
   vlogprintf("\n", args);		/* XXX args will be ignored */
+  va_end(args);
   if (gLogOptions & LG_CONSOLE)
   {
+    va_start(args, fmt);
     vfprintf(stdout, fmt, args);
+    va_end(args);
     putc('\n', stdout);
     fflush(stdout);
   }
-  va_end(args);
 }
 
 /*
@@ -315,12 +319,16 @@
 
 /* Dump it */
 
-  va_start(ap, fmt);
-  if (console)
+  if (console) {
+    va_start(ap, fmt);
     LogDoDumpBp(printf, vprintf, FALSE, bp, fmt, ap);
-  if (log)
+    va_end(ap);
+  }
+  if (log) {
+    va_start(ap, fmt);
     LogDoDumpBp(logprintf, vlogprintf, TRUE, bp, fmt, ap);
-  va_end(ap);
+    va_end(ap);
+  }
 }
 
 /*
@@ -342,11 +350,16 @@
 
 /* Dump it */
 
-  va_start(ap, fmt);
-  if (console)
+  if (console) {
+    va_start(ap, fmt);
     LogDoDumpBuf(printf, vprintf, FALSE, buf, count, fmt, ap);
-  if (log)
+    va_end(ap);
+  }
+  if (log) {
+    va_start(ap, fmt);
     LogDoDumpBuf(logprintf, vlogprintf, TRUE, buf, count, fmt, ap);
+    va_end(ap);
+  }
 }
 
 /*


More information about the freebsd-amd64 mailing list