Note that the 'Number of instructions' reported by trace_reader is not
based on the trace file header -- this value is not actually stored
anywhere in the trace. Instead, it is computed based on the size of
the trace index file (generated with the -createindex option), which
contains an 8-byte offset for each instruction.
In your first case, it's most likely you didn't generate the index
file. In the second case, it's hard to know for sure what's going on
without actually looking at the files. It's possible that one or both
of your traces is corrupt, or your index files are stale (this could
happen, for instance, if you generated this file then subsequently
overwrote the original trace). Try (re-)running:
% trace_reader -trace <trace file> -createindex
on each of your trace files, and see if the output appears more
reasonable.
-- Noah