Replace snprintf calls in linker.
When enabling debug malloc, the snprintf calls in the linker fails to
update the buffer.
The problem is that snprintf makes a call to pthread_getspecific that
returns a valid pointer, but the data it points to is zero. This should
never happen and causes the snprintf to stop and do nothing.
Temporarily replace snprintf with a different implementation to work
around this issue.
Bug: 16874447
Bug: 17302493
Change-Id: I7a500f28adf153150cf2812fae745ff41f1c48d3
diff --git a/linker/debugger.cpp b/linker/debugger.cpp
index 079682c..c316151 100644
--- a/linker/debugger.cpp
+++ b/linker/debugger.cpp
@@ -170,9 +170,9 @@
if (info != NULL) {
// For a rethrown signal, this si_code will be right and the one debuggerd shows will
// always be SI_TKILL.
- snprintf(code_desc, sizeof(code_desc), ", code %d", info->si_code);
+ __libc_format_buffer(code_desc, sizeof(code_desc), ", code %d", info->si_code);
if (has_address) {
- snprintf(addr_desc, sizeof(addr_desc), ", fault addr %p", info->si_addr);
+ __libc_format_buffer(addr_desc, sizeof(addr_desc), ", fault addr %p", info->si_addr);
}
}
__libc_format_log(ANDROID_LOG_FATAL, "libc",