|
From: Paul F. <pj...@wa...> - 2023-04-29 16:22:27
|
On 29-04-23 08:20, Paul Floyd wrote:
>
>
> On 28-04-23 21:33, Carl Love wrote:
>
>> .
>> +->85.79% (72,704B) 0x........: ??? (m_trampoline.S:458)
>> +| ->85.79% (72,704B) 0x........: call_init (dl-init.c:70)
>
> The should be filtered by
>
> vgopts: --ignore-fn=call_init
>
> I need to do some debugging to see what is happening - I can reproduce
> the error on one of the gccfarm machines.
I see what is happening now. The stack in question is
==2756940== at 0x48A4C8C: malloc (vg_replace_malloc.c:431)
==2756940== by 0x58025633: ??? (m_trampoline.S:458)
==2756940== by 0x4007D17: call_init (dl-init.c:70)
==2756940== by 0x4007D17: _dl_init (dl-init.c:117)
==2756940== by 0x40311E7: _dl_start_user (in
/usr/lib/powerpc64-linux-gnu/ld64.so.1)
Note the identical addresses for call_init and _dl_init. I believe that
means that call_init is inlined.
This bit of code in ms_main.c skips over call_init
// top has no fnname => search for the first entry that has a fnname
for (i = *top; i < n_ips && !top_has_fnname; i++) {
top_has_fnname = VG_(get_fnname)(ep, ips[i], &fnname);
}
The workaround is to add _dl_init to the ignore functions.
Otherwise I think that the above loop needs to be modified to use
VG_(next_IIPC)(InlIPCursor *iipc)
I've created a bugzilla item for this
https://bugs.kde.org/show_bug.cgi?id=469146
A+
Paul
|