diff --git a/src/libCom/error/errlog.c b/src/libCom/error/errlog.c index 91e4327ba..ccc28c744 100644 --- a/src/libCom/error/errlog.c +++ b/src/libCom/error/errlog.c @@ -149,10 +149,14 @@ epicsShareFunc int errlogVprintf( pbuffer = msgbufGetFree(isOkToBlock); if (!pbuffer) { vfprintf(stderr, pFormat, pvar); + fflush(stderr); return 0; } - nchar = tvsnPrint(pbuffer,pvtData.maxMsgSize,pFormat?pFormat:"",pvar); - fprintf(stderr, "%s", pbuffer); + nchar = tvsnPrint(pbuffer, pvtData.maxMsgSize, pFormat?pFormat:"", pvar); + if (pvtData.atExit || (isOkToBlock && pvtData.toConsole)) { + fprintf(stderr, "%s", pbuffer); + fflush(stderr); + } msgbufSetSize(nchar); return nchar; }