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

Reply via email to