Skip to content

Commit c1da2c1

Browse files
committed
Python: Gracefully handle exceptions in diagnostics writing
1 parent a8b976b commit c1da2c1

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

python/extractor/semmle/worker.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,22 @@ def _extract_loop(proc_id, queue, trap_dir, archive, options, reply_queue, logge
276276
except RecursionError as ex:
277277
logger.error("Failed to extract %s: %s", unit, ex)
278278
logger.traceback(WARN)
279-
error = recursion_error_message(ex, unit)
280-
diagnostics_writer.write(error)
279+
try:
280+
error = recursion_error_message(ex, unit)
281+
diagnostics_writer.write(error)
282+
except Exception as ex:
283+
logger.warning("Failed to write diagnostics: %s", ex)
284+
logger.traceback(WARN)
281285
reply_queue.put(("FAILURE", unit, None))
282286
except Exception as ex:
283287
logger.error("Failed to extract %s: %s", unit, ex)
284288
logger.traceback(WARN)
285-
error = internal_error_message(ex, unit)
286-
diagnostics_writer.write(error)
289+
try:
290+
error = internal_error_message(ex, unit)
291+
diagnostics_writer.write(error)
292+
except Exception as ex:
293+
logger.warning("Failed to write diagnostics: %s", ex)
294+
logger.traceback(WARN)
287295
reply_queue.put(("FAILURE", unit, None))
288296
else:
289297
reply_queue.put(("SUCCESS", unit, None))

0 commit comments

Comments
 (0)