The first appears to be in x11.c in start_tool() (the main loop?).
There the timeout for select is initialized outside a for loop,
apparently with the assumption that select will not modify the
timeout. Unfortunately, the call to select() appears to be doing
just that. The timeout gets set to zeroed and faces starts using
lots of CPU.
The second problem is a segmentation fault in main.c:
if (*community != (char) NULL)
{
s = rindex(community, '.') ;
if (s == (char *) NULL)
{
STRCAT(strcat(t, "/"), community) ;
community = "" ;
s = "." ;
}
else
{
*s = '\0' ;
STRCAT(strcat(t, "/"), s+1) ;
}
i = searchfacedb(b, facepath, community, user) ;
*t = '\0' ;
*s = '.' ;
if (i) return(i) ;
}
What appears to be happening is that 's' is in some cases set to
point to the constant string, ".". Later, the "*s = '.'" attempts to
write to the constant string.
--Mark