|
From: Julian S. <js...@ac...> - 2011-09-19 16:47:49
|
> > * first, figure out if the error is in gcc or valgrind. Use addr2line > > to map the code addresses shown by valgrind back to line numbers, > > independent of valgrind's mechanism for that, to see what you get. > > The addresses and line numbers that valgrind reports do correspond with > addr2line, so it seems the addresses themselves must be wrong. Ok .. so V's address-to-line mapping is OK, at least. > > out of date guest register values appear in the unwinder. Do > > any of the following flags (independently, not in combination) > > change the results? > > --vex-iropt-precise-memory-exns=yes > > --vex-iropt-level=0 > > --vex-guest-max-insns=1 > > None of these helped, so I'll get some detailed debugging output using > --trace-flags. Strange that these don't make any difference. It would be useful to get the just-before-instruction-selection IR for the block containing the client request, to see if there's anything amiss there. Another question is: does the inaccuracy happen on the innermost frame, or also on non-innermost frames? If on the innermost frame then we can discount any wierdness caused by the stack unwinder, since the PC for the innermost frame is take directly from the guest PC (guest_CIA) unmodified. J |