Flush the telemetry stream before aborting.

Copied from Perforce
 Change: 186782
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Gareth Rees 2014-07-02 10:17:07 +01:00
parent 45199757f2
commit cb7dc69cd5
4 changed files with 11 additions and 5 deletions

View file

@ -74,6 +74,7 @@ static void mps_lib_assert_fail_default(const char *file, unsigned line,
file, line, condition);
/* Ensure the message is output even if stderr is buffered. */
(void)fflush(stderr);
mps_telemetry_flush();
ASSERT_ABORT(); /* see config.h */
}

View file

@ -139,6 +139,10 @@ Other changes
around 25% faster (in our benchmarks) than they were in release
1.113.0.
#. The default assertion handler in the ANSI plinth now flushes the
telemetry stream before aborting. See
:c:func:`mps_lib_assert_fail`.
.. _release-notes-1.113:

View file

@ -247,9 +247,11 @@ Library module
.. note::
In the ANSI Library module, ``mpsliban.c``, this reports the
failure using ``fprintf(stderr, "...%s...", message)`` and, in
the :term:`cool` :term:`variety`, terminates the program by
calling :c:func:`abort`. You can change this behaviour with
failure by calling ``fprintf(stderr, "...%s...", message)``,
flushes the :term:`telemetry` stream by calling
:c:func:`mps_telemetry_flush`, and, in the :term:`cool`
:term:`variety`, terminates the program by calling
:c:func:`abort`. You can change this behaviour with
:c:func:`mps_lib_assert_fail_install`. For a discussion of the
default behaviour, see :ref:`topic-error-assertion-handling`.

View file

@ -431,8 +431,7 @@ Telemetry interface
stream itself. This ensures that even the latest events are now
properly recorded, should the :term:`client program` terminate
(uncontrollably as a result of a bug, for example) or some
interactive tool require access to the telemetry stream. You could
even try calling this from a debugger after a problem.
interactive tool require access to the telemetry stream.
.. note::