From 147cb73ec8bdec70303807e0f69e5be8c3a38f46 Mon Sep 17 00:00:00 2001 From: philippe Date: Mon, 24 Sep 2012 21:50:16 +0000 Subject: [PATCH] fix n-i-bz report error for vgdb snapshot requested before execution Massif does not accept to take snapshots of heap before execution has started. So, if such a snapshot is requested (using vgdb and option --vgdb-error=0), then such a snapshot must be refused rather than causing an assert. (problem reported by dark_footix@yahoo.fr) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13015 a5019735-40e9-0310-863c-91ae7b9d1cf9 --- NEWS | 2 +- massif/ms_main.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 864d01123..2f8760bfe 100644 --- a/NEWS +++ b/NEWS @@ -32,7 +32,7 @@ m = merged into 3_8_BRANCH 305948 [390] ppc64: code generation for ShlD64 / ShrD64 asserts 306054 [390] s390x: Condition code computation for convert-to-int/logical 307155 [390] filter_gdb should filter out syscall-template.S T_PSEUDO - +n-i-bz [390] report error for vgdb snapshot requested before execution Release 3.8.1 (19 September 2012) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/massif/ms_main.c b/massif/ms_main.c index aab9ac518..a0ca9e933 100644 --- a/massif/ms_main.c +++ b/massif/ms_main.c @@ -2392,9 +2392,17 @@ static void handle_snapshot_monitor_command (Char *filename, Bool detailed) { Snapshot snapshot; + if (!clo_pages_as_heap && !have_started_executing_code) { + // See comments of variable have_started_executing_code. + VG_(gdb_printf) + ("error: cannot take snapshot before execution has started\n"); + return; + } + clear_snapshot(&snapshot, /* do_sanity_check */ False); take_snapshot(&snapshot, Normal, get_time(), detailed); - write_snapshots_to_file ((filename == NULL) ? (Char*) "massif.vgdb.out" : filename, + write_snapshots_to_file ((filename == NULL) ? + (Char*) "massif.vgdb.out" : filename, &snapshot, 1); delete_snapshot(&snapshot); -- 2.34.1