Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r1884:9f966d34d3be Date: 2015-06-24 18:45 +0200 http://bitbucket.org/pypy/stmgc/changeset/9f966d34d3be/
Log: - use CLOCK_MONOTONIC_RAW instead of CLOCK_MONOTONIC, because the latter is not monotonic... (thanks cfbolz) - don't fclose the log file after a fork(): it still seems to create some corruption diff --git a/c8/stm/prof.c b/c8/stm/prof.c --- a/c8/stm/prof.c +++ b/c8/stm/prof.c @@ -42,10 +42,10 @@ return; flockfile(f); - /* We expect the following CLOCK_MONOTONIC to be really monotonic: + /* We expect the following CLOCK_MONOTONIC_RAW to be really monotonic: it should guarantee that the file will be perfectly ordered by time. That's why we do it inside flockfile()/funlockfile(). */ - clock_gettime(CLOCK_MONOTONIC, &t); + clock_gettime(CLOCK_MONOTONIC_RAW, &t); buf.tv_sec = t.tv_sec; buf.tv_nsec = t.tv_nsec; @@ -102,7 +102,13 @@ static void prof_forksupport_child(void) { - if (close_timing_log() && profiling_basefn != NULL) { + /* XXX leaks the file descriptor. I'm getting problems of + corrupted files if I fclose() it in the child, even though + we're supposed to have fflush()ed the file before the fork. + Why??? */ + profiling_file = NULL; + stmcb_timing_event = NULL; + if (profiling_basefn != NULL) { char filename[1024]; snprintf(filename, sizeof(filename), "%s.fork%ld", profiling_basefn, (long)getpid()); _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit