I sure hope I'm using it right - don't want to make myself look stupid in public:
va_start( v, format );
// if we're not running as a daemon, we also log stdout. if ( 0==get_daemonize() ) { vfprintf( stdout, format, v ); // FIRST USE fputc( '\n', stdout ); } vsyslog( pri, format, v ); // SECOND USE
va_end(v);
No, you are using the va_list _twice_. You can do that on i386 perhaps, but not on x86_64, it will just crash. Use va_copy (v2, v); to get a second list, and pass this to vfprintf(). Perhaps try: va_list v2; va_start ( v, format ); if 0==get_daemonize()) { va_copy (v2, v); vfprintf ( stdout, format , v2); fputc ('\n', stdout); va_end (v2); } vsyslog( pri, format, v ); // SECOND USE va_end(v); --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming+help@opensuse.org