File 0930-erts-Silence-faulty-CodeChecker-warnings.patch of Package erlang
From 2c6a538919b96a6bbca4f2ca6093e183286de2f8 Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Sat, 26 Apr 2025 01:02:15 +0200
Subject: [PATCH 2/2] [erts] Silence faulty CodeChecker warnings
---
erts/emulator/beam/bif.c | 4 ++++
erts/emulator/beam/erl_alloc.c | 1 +
erts/emulator/beam/erl_bif_info.c | 1 +
erts/emulator/beam/erl_db_hash.c | 3 +++
erts/emulator/beam/erl_proc_sig_queue.c | 3 +++
erts/emulator/beam/erl_process.c | 7 ++++++-
6 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index 8c50be31f3..5c1dec1385 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -159,6 +159,8 @@ BIF_RETTYPE link_1(BIF_ALIST_1)
if (!prt)
goto res_no_proc;
+ ERTS_UNDEF(ref, THE_NON_VALUE);
+
lnk = erts_link_internal_tree_lookup_create(&ERTS_P_LINKS(BIF_P),
&created,
ERTS_LNK_TYPE_PORT,
@@ -1100,6 +1102,8 @@ BIF_RETTYPE unlink_1(BIF_ALIST_1)
ErtsPortOpResult res = ERTS_PORT_OP_DROPPED;
Port *prt;
+ ERTS_UNDEF(ref, THE_NON_VALUE);
+
/* Send unlink signal */
prt = erts_port_lookup(BIF_ARG_1, ERTS_PORT_SFLGS_DEAD);
if (!prt) {
diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c
index a344b585ae..ffd2eeade3 100644
--- a/erts/emulator/beam/erl_alloc.c
+++ b/erts/emulator/beam/erl_alloc.c
@@ -2867,6 +2867,7 @@ erts_allocator_options(void *proc)
hpp = NULL;
szp = &sz;
sz = 0;
+ ERTS_UNDEF(hp, NULL);
bld_term:
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index f9d95a83ca..90ec90b9df 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -3870,6 +3870,7 @@ fun_info_2(BIF_ALIST_2)
case am_module:
/* Unloaded funs must report their module even though we can't find
* their full MFA. */
+ ASSERT(fe != NULL || mfa != NULL);
val = (mfa != NULL) ? mfa->module : fe->module;
hp = HAlloc(p, 3);
break;
diff --git a/erts/emulator/beam/erl_db_hash.c b/erts/emulator/beam/erl_db_hash.c
index fa2fa7e67e..f132827e93 100644
--- a/erts/emulator/beam/erl_db_hash.c
+++ b/erts/emulator/beam/erl_db_hash.c
@@ -1585,6 +1585,7 @@ int db_erase_hash(DbTable *tbl, Eterm key, Eterm *ret)
bp = &b->next;
b = b->next;
}
+ ERTS_UNDEF(nitems, -1);
if (nitems_diff) {
ADD_NITEMS(tb, lck_ctr, hval, nitems_diff);
nitems = NITEMS_ESTIMATE(tb, lck_ctr, hval);
@@ -1650,6 +1651,7 @@ static int db_erase_object_hash(DbTable *tbl, Eterm object, Eterm *ret)
bp = &b->next;
b = b->next;
}
+ ERTS_UNDEF(nitems, -1);
if (nitems_diff) {
ADD_NITEMS(tb, lck_ctr, hval, nitems_diff);
nitems = NITEMS_ESTIMATE(tb, lck_ctr, hval);
@@ -2915,6 +2917,7 @@ static int db_take_hash(Process *p, DbTable *tbl, Eterm key, Eterm *ret)
break;
}
}
+ ERTS_UNDEF(nitems, -1);
if (nitems_diff) {
ADD_NITEMS(tb, lck_ctr, hval, nitems_diff);
nitems = NITEMS_ESTIMATE(tb, lck_ctr, hval);
diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c
index 9c35cb77f7..e662a71ee2 100644
--- a/erts/emulator/beam/erl_proc_sig_queue.c
+++ b/erts/emulator/beam/erl_proc_sig_queue.c
@@ -4184,6 +4184,7 @@ handle_exit_signal(Process *c_p, ErtsSigRecvTracing *tracing,
Eterm reason;
Eterm from;
+ ERTS_UNDEF(reason, THE_NON_VALUE);
ASSERT(ERTS_PROC_SIG_TYPE(tag) == ERTS_SIG_Q_TYPE_GEN_EXIT);
xsigd = get_exit_signal_data(sig);
@@ -4670,6 +4671,8 @@ handle_persistent_mon_msg(Process *c_p, Uint16 type,
ErtsMessage *first = NULL, *prev, *last;
Uint hsz = size_object(msg);
Uint i;
+ ERTS_UNDEF(last,NULL);
+ ERTS_UNDEF(prev,NULL);
for (i = 0; i < n; i++) {
Eterm *hp;
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index b96463161b..9c51830781 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -10674,6 +10674,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds)
if (c_p->flags & F_DISABLE_GC) {
save_gc_task(c_p, st, st_prio);
st = NULL;
+ ERTS_UNDEF(st_res, am_undefined);
reds--;
}
else {
@@ -10687,6 +10688,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds)
if (c_p->flags & (F_DIRTY_MAJOR_GC|F_DIRTY_MINOR_GC)) {
save_dirty_task(c_p, st);
st = NULL;
+ ERTS_UNDEF(st_res, am_undefined);
break;
}
if (type == ERTS_PSTT_GC_MAJOR)
@@ -10729,6 +10731,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds)
* but instead unconditionally schedule this as dirty
* work...
*/
+ ERTS_UNDEF(st_res, am_undefined);
if (c_p->flags & F_DISABLE_GC) {
/* We might need to GC, but GC was disabled */
save_gc_task(c_p, st, st_prio);
@@ -12945,8 +12948,10 @@ erts_send_local_spawn_reply(Process *parent, ErtsProcLocks parent_locks,
type = child ? am_ok : am_error;
- if (have_seqtrace(token) && child)
+ if (have_seqtrace(token) && child) {
token_sz = size_object(token);
+ ERTS_UNDEF(token_copy, NIL);
+ }
else {
token_copy = token = NIL;
token_sz = 0;
--
2.43.0