Description

It seems that the fixup_free_* functions are not getting called when used with:

static cmd_export_t cmds[] = {
    {"acc_log_request", (cmd_function)w_acc_log_request, 1,
        acc_fixup, free_acc_fixup,
        ANY_ROUTE},
       // ...
{0, 0, 0, 0, 0, 0}
};

static int free_acc_fixup(void **param, int param_no)
{
    LM_CRIT("acc free fixup = %d\n", param_no);
   
    if(*param) {
        pkg_free(*param);
        *param = 0;
    }
    return 0;
}

Nothing is getting logged from the function. Is this expected not to print in free_fixup due to the destruction of kamailio and the logging is not reliable?

I also used gdb and added some breakpoints in fixup and free_fixup functions in some other modules (file_out) and the breakpoint was only found in fixup but not in free_fixup.

When is the free_fixup supposed to be called, at kamailio destruction or after fixing it and before the main loop starts?

Troubleshooting

Reproduction

Use any module that has a custom (maybe also provided from core) free_fixup function, and monitor if free_fixup is called using debug mode.

Log Messages

Apr 15 15:52:03 app01 kamailio[812169]: INFO: <core> [core/mem/q_malloc.c:402]: qm_malloc(): qm_malloc(0x7fcdcab18010, 56) called from file_out: file_out.c: fo_fixup_str_index(287)
Apr 15 15:52:03 app01 kamailio[812169]: INFO: <core> [core/mem/q_malloc.c:449]: qm_malloc(): qm_malloc(0x7fcdcab18010, 64) returns address 0x7fcdcacc4280 frag. 0x7fcdcacc4240 (size=64) on 1 -th hit```

`0x7fcdcacc4240` fragment is not found anywhere in the logs reported that it was freed unlike other malloced resources.

Additional Information

version: kamailio 5.9.0-dev0 (x86_64/linux) 8bc64a
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 8bc64a 
compiled on 15:32:09 Apr 15 2024 with gcc 10.5.0
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

5.4.0-176-generic #196-Ubuntu SMP Fri Mar 22 16:46:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <kamailio/kamailio/issues/3814@github.com>