----- Original Message -----
On Thu, 2012-08-09 at 16:23 -0600, Bob Montgomery wrote:
> If you change the
> fprintf(pc->saved_fp, buf);
> lines to
> print_verbatim(pc->saved_fp, buf);
>
> Then I won't get:
>
> crash> sk_buff.head ffff88012014dc80
> Segmentation fault
>
> When I need to get:
>
> crash> sk_buff.head ffff88012014dc80
> head = 0xffff880121267000 "\"%s %s %s\", got type
\"%s\""
>
>
> Patch attached (6.0.8).
>
> I suspect performance will suffer a bit when I try to print
> 2 million of these...
Wonder if it would be quicker on average to string search for "%" and
conditionally call print_verbatim??? I had lots of successful
fprintf's and only a small number of seg viol cases.
Bob M.
Hi Bob,
Although in practice,
(1) parse_for_member() is rarely called "in quantity", and
(2) when it is called, it would only encounter this with "char *" members, and
(3) the string would also have to have a '%' in it.
On the other hand, if you test the two print-types with a million calls,
there's a significant performance hit. But if a strstr() is done first
on the string, there's virtually no hit at all if there's no '%' in it.
So yes, I agree with you that the string-search/conditional call should be done.
I'll add that to your patch, and queue it for crash-6.0.9.
Thanks,
Dave