bind9/lib/isc
Colin Vidal 4eb2cd364a copy __FILE__ when allocating memory
When allocating memory under -m trace|record, the __FILE__ pointer is
stored, so it can be printed out later in order to figure out in which
file an allocation leaked. (among others, like the line number).

However named crashes when called with -m record and using a plugin
leaking memory. The reason is that plugins are unloaded earlier than
when the leaked allocations are dumped (obviously, as it's done as late
as possible). In such circumstances, __FILE__ is dangling because the
dynamically loaded library (the plugin) is not in memory anymore.

Fix the crash by systematically copying the __FILE__ string
instead of copying the pointer. Of course, this make each allocation to
consume a bit more memory (and longer, as it needs to calculate the
length of __FILE__) but this occurs only under -m trace|record debugging
flags.

In term of unit test, because grepping in C is not fun, and because the
whole "syntax" of the dump output is tested in other tests, this simply
search for a substring in the whole buffer to make sure the expected
allocations are found.
2025-03-27 10:44:17 +01:00
..
include Add isc_sieve unit implementing SIEVE-LRU algorithm 2025-03-26 15:36:33 -07:00
netmgr DoH: Bump the active streams processing limit 2025-03-03 11:32:29 +02:00
.gitignore Add support for User Statically Defined Tracing (USDT) probes 2023-08-21 18:39:53 +02:00
ascii.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
assertions.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
async.c Remove unused isc_mutexblock and isc_condition units 2025-03-01 07:33:09 +01:00
async_p.h Change the isc_async API to use cds_wfcqueue internally 2023-05-12 14:16:25 +02:00
backtrace.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
base32.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
base64.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
commandline.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
counter.c Cleanup the isc_counter unit 2025-02-21 09:51:42 +00:00
crypto.c Add the call function tracking to isc_mem API 2025-03-05 11:17:17 +01:00
dir.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
entropy.c Switch the CSPRNG function from RAND_bytes() to uv_random() 2022-09-26 15:13:11 +02:00
errno.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
errno2result.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
errno2result.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
error.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
file.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
getaddresses.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
hash.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
hashmap.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
heap.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
helper.c Remove unused isc_mutexblock and isc_condition units 2025-03-01 07:33:09 +01:00
hex.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
histo.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
hmac.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
ht.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
httpd.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
interfaceiter.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
iterated_hash.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
jemalloc_shim.h Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
job.c Remove unused isc_mutexblock and isc_condition units 2025-03-01 07:33:09 +01:00
job_p.h Use proper padding instead of using alignas() 2024-02-08 10:54:35 +01:00
lex.c Remove convenience list macros from isc/util.h 2025-03-01 07:33:40 +01:00
lib.c Explicitly create and shutdown the call_rcu_thread 2025-02-22 16:19:01 +01:00
log.c Add option request-zoneversion 2025-03-24 22:16:09 +00:00
loop.c Remove unused isc_mutexblock and isc_condition units 2025-03-01 07:33:09 +01:00
loop_p.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
Makefile.am Add isc_sieve unit implementing SIEVE-LRU algorithm 2025-03-26 15:36:33 -07:00
managers.c Replace isc_mem_destroy() with isc_mem_detach() 2025-03-05 11:17:17 +01:00
md.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
mem.c copy __FILE__ when allocating memory 2025-03-27 10:44:17 +01:00
mem_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
meminfo.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
mutex.c Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
mutex_p.h Use library constructor to create default mutex attr once 2022-07-13 13:19:32 +02:00
net.c Remove unused definition of ISC_CMSG_IP_TOS 2024-11-27 15:03:27 +01:00
netaddr.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
netscope.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
nonce.c Switch the CSPRNG function from RAND_bytes() to uv_random() 2022-09-26 15:13:11 +02:00
openssl_shim.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
openssl_shim.h Remove unused <openssl/hmac.h> headers from OpenSSL shims 2024-10-16 04:19:16 +00:00
os.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
os_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
parseint.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
picohttpparser.c Update picohttpparser.{c,h} with upstream repository 2024-12-08 11:14:37 +00:00
picohttpparser.h Update picohttpparser.{c,h} with upstream repository 2024-12-08 11:14:37 +00:00
portset.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
probes.d Add tracing probes to the isc_job unit 2023-08-21 18:39:53 +02:00
proxy2.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
quota.c Fix isc_quota bug 2025-02-20 10:56:00 +00:00
radix.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
random.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
ratelimiter.c Remove convenience list macros from isc/util.h 2025-03-01 07:33:40 +01:00
regex.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
region.c Incrementally apply AXFR transfer 2024-11-22 15:00:55 +01:00
result.c deduplicate result codes 2025-01-23 15:54:57 -08:00
rwlock.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
safe.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
serial.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
signal.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
sockaddr.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stats.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stdio.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stdtime.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
string.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
symtab.c Switch symtab to use fxhash hashing 2025-03-20 11:26:09 +01:00
syslog.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
thread.c Explicitly create and shutdown the call_rcu_thread 2025-02-22 16:19:01 +01:00
thread_p.h Explicitly create and shutdown the call_rcu_thread 2025-02-22 16:19:01 +01:00
tid.c Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
time.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
timer.c Remove unused isc_mutexblock and isc_condition units 2025-03-01 07:33:09 +01:00
tls.c Remove unused isc_mutexblock and isc_condition units 2025-03-01 07:33:09 +01:00
tm.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
url.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
utf8.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
uv.c Replace isc_mem_destroy() with isc_mem_detach() 2025-03-05 11:17:17 +01:00
work.c Call isc__iterated_hash_initialize 2025-03-04 12:54:39 +00:00
xml.c Replace isc_mem_destroy() with isc_mem_detach() 2025-03-05 11:17:17 +01:00