CI instability: FATAL error: warn stream not initialized for 6039 - maybe buffer overrun? #798
This commit is contained in:
parent
56ff75004b
commit
ee674dc979
|
@ -89,19 +89,27 @@ void chDbgPanic3(const char *msg, const char * file, int line) {
|
|||
|
||||
// todo: look into chsnprintf
|
||||
// todo: move to some util file & reuse for 'firmwareError' method
|
||||
static void printToStream(MemoryStream *stream, const char *fmt, va_list ap) {
|
||||
/**
|
||||
* @returns number of buffer bytes used
|
||||
*/
|
||||
static int printToStream(MemoryStream *stream, const char *fmt, va_list ap) {
|
||||
stream->eos = 0; // reset
|
||||
chvprintf((BaseSequentialStream *) stream, fmt, ap);
|
||||
stream->buffer[stream->eos] = 0;
|
||||
return stream->eos + 1;
|
||||
}
|
||||
|
||||
static void printWarning(const char *fmt, va_list ap) {
|
||||
static void printWarning(obd_code_e code, const char *fmt, va_list ap) {
|
||||
resetLogging(&logger); // todo: is 'reset' really needed here?
|
||||
appendMsgPrefix(&logger);
|
||||
|
||||
logger.append(WARNING_PREFIX);
|
||||
|
||||
printToStream(&warningStream, fmt, ap);
|
||||
int bufferUsage = printToStream(&warningStream, fmt, ap);
|
||||
if (bufferUsage > WARNING_BUFFER_SIZE) {
|
||||
firmwareError(CUSTOM_ERR_ASSERT, "stream overrun with %d", code);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.append(warningBuffer);
|
||||
append(&logger, DELIMETER);
|
||||
|
@ -141,7 +149,7 @@ bool warning(obd_code_e code, const char *fmt, ...) {
|
|||
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
printWarning(fmt, ap);
|
||||
printWarning(code, fmt, ap);
|
||||
va_end(ap);
|
||||
#else
|
||||
// todo: we need access to 'engine' here so that we can migrate to real 'engine->engineState.warnings'
|
||||
|
@ -217,7 +225,7 @@ void firmwareError(obd_code_e code, const char *fmt, ...) {
|
|||
#ifdef EFI_PRINT_ERRORS_AS_WARNINGS
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
printWarning(fmt, ap);
|
||||
printWarning(code, fmt, ap);
|
||||
va_end(ap);
|
||||
#endif
|
||||
ON_FATAL_ERROR()
|
||||
|
|
Loading…
Reference in New Issue