You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
So the alloc is from the internal _calloc_impl() but the free is the
exported free(). In a sense, like many similar allocs we've seen before,
this is a mismatch and not very clean code in msvcr120.dll.
We do intercept _calloc_impl so this should go away w/ symbols, but we're
trying to avoid requiring libc symbols.
I don't see this precise thing in a prior issue though the general asymmetry of internal routines being called directly yet not being paired with corresponding internal has been a frequent thorn in our sides.
Xref #1532: free inlined but malloc not in static libc
Xref #643: operator collapse
Xref #1233: no-syms module calling into msvcr*.dll
The text was updated successfully, but these errors were encountered:
Solution: how about if we have no syms (either trust dbghelp query for pdb,
or if we don't find _calloc_impl we assume no syms) for libc then we turn
off API layer mismatch checking? Though that will match most users unless
our auto-symbol-fetch operates properly which it wasn't here -- why not?
Or, we notice that msvcr120 is calling RtlAllocateHeap and disable the
mismatch there? That would require a drwrap_get_retaddr() call and a
module lookup on every replace_RtlAllocateHeap entry which is not
insignificant.
Or, we add a suppression that works for no-syms and syms, which is probably
the route I will go as the other solutions have negatives.
At the very end of a run of 64-bit Chromium unit_tests.exe, at shutdown,
this is reported:
This only happens with long runs: M* did not trigger it.
So the alloc is using a libc routine but we're not intercepting until RtlAllocateHeap?
It's not calling the exported realloc():
With symbols:
So the alloc is from the internal _calloc_impl() but the free is the
exported free(). In a sense, like many similar allocs we've seen before,
this is a mismatch and not very clean code in msvcr120.dll.
We do intercept _calloc_impl so this should go away w/ symbols, but we're
trying to avoid requiring libc symbols.
I don't see this precise thing in a prior issue though the general asymmetry of internal routines being called directly yet not being paired with corresponding internal has been a frequent thorn in our sides.
Xref #1532: free inlined but malloc not in static libc
Xref #643: operator collapse
Xref #1233: no-syms module calling into msvcr*.dll
The text was updated successfully, but these errors were encountered: