vmprof-python icon indicating copy to clipboard operation
vmprof-python copied to clipboard

Flush buffers before reading back in to construct all seen addresses

Open timpalpant opened this issue 4 years ago • 0 comments

When disabling profiling, the log of samples written is read back in by LogReaderDumpNative to construct a deduplicated set of all code addresses that were recorded during sampling. This set is then passed to _vmprof.write_all_code_objects to write out the address and file/symbol info.

However if the last call to commit_buffer is a short write (for example because it was interrupted by a signal), then the LogReader may not be able to parse the tail of the file because we may still have pending un-flushed buffers (see: _write_single_ready_buffer).

This change adds a function to ensure all pending buffers are flushed to disk before attempting to reread them with the LogReader.

timpalpant avatar Aug 08 '19 00:08 timpalpant