Author: Armin Rigo <ar...@tunes.org> Branch: reverse-debugger Changeset: r85100:d36453797864 Date: 2016-06-11 14:10 +0200 http://bitbucket.org/pypy/pypy/changeset/d36453797864/
Log: Fixes diff --git a/rpython/translator/revdb/rdb-src/revdb.c b/rpython/translator/revdb/rdb-src/revdb.c --- a/rpython/translator/revdb/rdb-src/revdb.c +++ b/rpython/translator/revdb/rdb-src/revdb.c @@ -28,6 +28,7 @@ rpy_revdb_t rpy_revdb; static char rpy_rev_buffer[16384]; static int rpy_rev_fileno = -1; +static unsigned char flag_io_disabled; static void setup_record_mode(int argc, char *argv[]); @@ -147,7 +148,10 @@ we read it from the record. In both cases, we cache the hash in the object, so that we record/replay only once per object. */ - RPY_REVDB_EMIT(h = ~((Signed)obj);, Signed _e, h); + if (flag_io_disabled) + h = ~((Signed)obj); + else + RPY_REVDB_EMIT(h = ~((Signed)obj);, Signed _e, h); assert(h != 0); obj->h_hash = h; } @@ -208,7 +212,6 @@ enum { PK_MAIN_PROCESS, PK_FROZEN_PROCESS, PK_DEBUG_PROCESS }; static unsigned char process_kind = PK_MAIN_PROCESS; static unsigned char flag_exit_run_debug_process; -static unsigned char flag_io_disabled; static jmp_buf jmp_buf_cancel_execution; static uint64_t latest_fork; @@ -303,7 +306,7 @@ } RPY_EXTERN -char *rpy_reverse_db_fetch(int expected_size) +char *rpy_reverse_db_fetch(int expected_size, const char *file, int line) { if (!flag_io_disabled) { ssize_t rsize, keep = rpy_revdb.buf_limit - rpy_revdb.buf_p; @@ -321,7 +324,8 @@ running some custom code now, and we can't just perform I/O or access raw memory---because there is no raw memory! */ - printf("Attempted to do I/O or access raw memory\n"); + printf("%s:%d: Attempted to do I/O or access raw memory\n", + file, line); longjmp(jmp_buf_cancel_execution, 1); } } @@ -474,8 +478,9 @@ } if (stop_points != rpy_revdb.stop_point_seen) { fprintf(stderr, "Bad number of stop points " - "(seen %llu, recorded %llu)\n", rpy_revdb.stop_point_seen, - stop_points); + "(seen %llu, recorded %llu)\n", + (unsigned long long)rpy_revdb.stop_point_seen, + (unsigned long long)stop_points); exit(1); } if (rpy_revdb.buf_p != rpy_revdb.buf_limit || diff --git a/rpython/translator/revdb/rdb-src/revdb_include.h b/rpython/translator/revdb/rdb-src/revdb_include.h --- a/rpython/translator/revdb/rdb-src/revdb_include.h +++ b/rpython/translator/revdb/rdb-src/revdb_include.h @@ -52,7 +52,8 @@ char *_src = rpy_revdb.buf_p; \ char *_end1 = _src + sizeof(_e); \ if (_end1 > rpy_revdb.buf_limit) { \ - _src = rpy_reverse_db_fetch(sizeof(_e)); \ + _src = rpy_reverse_db_fetch(sizeof(_e), \ + __FILE__, __LINE__); \ _end1 = _src + sizeof(_e); \ } \ rpy_revdb.buf_p = _end1; \ @@ -77,7 +78,8 @@ r = rpy_reverse_db_identityhash((struct pypy_header0 *)(obj)) RPY_EXTERN void rpy_reverse_db_flush(void); -RPY_EXTERN char *rpy_reverse_db_fetch(int expected_size); +RPY_EXTERN char *rpy_reverse_db_fetch(int expected_size, + const char *file, int line); RPY_EXTERN void rpy_reverse_db_break(long stop_point); RPY_EXTERN void rpy_reverse_db_send_output(RPyString *output); RPY_EXTERN Signed rpy_reverse_db_identityhash(struct pypy_header0 *obj); _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit