|
From: Stefan K. <en...@ho...> - 2010-01-03 21:17:48
|
hi,
I have looked a bit into the vcov runtime error I get
/vg-in-place --tool=exp-vcov /path/to/testapp
==26250== exp-VCov, a test coverage tool.
==26250== NOTE: This is an Experimental-Class Valgrind Tool.
==26250== Copyright (C) 2002-2008, and GNU GPL'd, by Nicholas Nethercote.
==26250== Using Valgrind-3.5.0.SVN and LibVEX; rerun with -h for copyright info
==26250==
exp-VCov: vc_main.c:385 (doOneInstr): the 'impossible' happened.
exp-VCov: didn't find 43 in lineCCs
(/usr/src/debug//////////glibc-2.10.1/setjmp/../sysdeps/i386/setjmp.S)
==26250== at 0x38002AB0: report_and_quit (m_libcassert.c:145)
==26250== by 0x38002CEC: vgPlain_assert_fail (m_libcassert.c:217)
==26250== by 0x38000B83: doOneInstr (vc_main.c:384)
==26250== by 0x38000C8F: vc_instrument (vc_main.c:435)
==26250== by 0x38095912: LibVEX_Translate (main_main.c:495)
==26250== by 0x38018CE1: vgPlain_translate (m_translate.c:1517)
==26250== by 0x3803D991: vgPlain_scheduler (scheduler.c:844)
==26250== by 0x38069414: run_a_thread_NORETURN (syswrap-linux.c:91)
sched status:
running_tid=1
Thread 1: status = VgTs_Runnable
==26250== at 0x466BD80: __sigsetjmp (setjmp.S:34)
==26250== by 0x46622B8: setlocale (setlocale.c:333)
==26250== by 0x8049E3A: main (bt-cmd.c:65)
The assert thats trigger prints a pretty strange filename:
/usr/src/debug//////////glibc-2.10.1/setjmp/../sysdeps/i386/setjmp.S
I do have
/usr/src/debug/glibc-2.10.1/sysdeps/i386/setjmp.S
and if the '43' refers to a line number, that line is:
42: #ifdef PTR_MANGLE
43: PTR_MANGLE (%ecx)
44: #endif
Any ideas whats wrong here? I made a terrible hack to warn and continue instead
of error out.
Index: vc_main.c
===================================================================
--- vc_main.c (Revision 10969)
+++ vc_main.c (Arbeitskopie)
@@ -380,9 +380,13 @@
while (True) {
/* current unsearched space is from lo to hi, inclusive. */
- if (lo > hi)
- tl_assert2(0, "didn't find %d in lineCCs (%s/%s)",
+ if (lo > hi) {
+ /*tl_assert2(0, "didn't find %d in lineCCs (%s/%s)",
+ line, dirname, filename);*/
+ VG_(umsg)("warning: didn't find %d in lineCCs (%s/%s)\n",
line, dirname, filename);
+ goto no_debug;
+ }
mid = (lo + hi) / 2;
mid_line = fileCC->lineCCs[mid].line_num;
if (line < mid_line) { hi = mid-1; continue; }
@@ -400,6 +404,7 @@
n_yes_debugs++;
} else {
+no_debug:
n_no_debugs++;
}
}
Should I file a bug?
Also the vc_annotate script should have +x permissions.
Stefan
|