Hi,
I thought I'd just summarise some of the latrace quirks that I'd hit
over the last few weeks of using it; I'm not
sure yet whether all of these are ARM specific (I've not had the
chance to try and replicate them all on x86)
1) C++ programs that throw exceptions don't seem to like running under
latrace (povray in SPEC 2k6 in particular);
it fails with an exception saying that its terminating 'after throwing
an instance of 'int''; it looks like it normally does
throw exceptions, and it seems to be misreading which exception it is.
I found adding:
-n_Unwind_RaiseException,__cxa_get_globals,__cxa_throw,__cxa_allocate_exception,__cxxabiv1::__cxa_allocate_exception
to latrace seems to help.
2) I'd also had problems with setjmp - I think this was in perl (in
the spec wrapper); adding
-nlongjmp,siglongjmp,_longjmp,__longjmp_chk,__libc_longjmp,__libc_siglongjmp
3) I don't think the output is opened with O_LARGEFILE, I found that
after the 4GB log file got truncated (I now pipe to bzip2)
4) Given (1) and (2) and a few other quirks, I hit the limit on the
length of the symbol list (about 200 chars); unfortunately
it just fails silently rather than telling you this.
5) For my purposes I modified the code that prints args to print the
address and the length of strings passed as arguments;
quite useful to see where the strings are coming from.
I've got a few other quirks I've not been able to get to the bottom of
yet (e.g. one program that I think is stuck in a loop when run
under latrace but I've not figured out why); but it's managed to get
me probably a few 100GB of logs - thanks!
I'd be intereste d to know if anyone has seen (1) or (2) on any other
platform, else we need to go digging on ARM and figure out why.
Dave