Project

General

Profile

Actions

Bug #7747

closed

affinity: warnings in the granular thread affinity settings code

Added by Lukas Sismis 9 days ago. Updated 4 days ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
Affected Versions:
Effort:
Difficulty:
Label:

Description

Reports:

290        tv->printable_name = printable_threadname;

CID 1648525: (#1 of 1): Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking live_dev suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
291        if (live_dev) {
292            tv->iface_name = SCStrdup(live_dev);
293            if (tv->iface_name == NULL) {
294                FatalError("Failed to allocate memory for iface name");
295            }
296        } else {
297            tv->iface_name = NULL;
298        }

2nd:

946static uint16\_t CPUSelectDefault(ThreadsAffinityType \*taf)

 947{

 948    uint16\_t cpu = taf\->lcpu\[0\];

 949    int attempts = 0;

1. Condition \_\_cpu / 8 < 128UL /\* sizeof (cpu\_set\_t) \*/, taking true branch.

2. Condition ((\_\_cpu\_mask const \*)taf->cpu\_set.\_\_bits\[\_\_cpu / (64UL /\* 8 \* sizeof (\_\_cpu\_mask) \*/)\] & (1UL /\* (\_\_cpu\_mask)1 \*/ << \_\_cpu % (64UL /\* 8 \* sizeof (\_\_cpu\_mask) \*/))) != 0, taking false branch.

3. Condition !({...; (\_\_cpu / 8 < 128UL /\* sizeof (cpu\_set\_t) \*/) ? ((\_\_cpu\_mask const \*)taf->cpu\_set.\_\_bits\[\_\_cpu / (64UL /\* 8 \* sizeof (\_\_cpu\_mask) \*/)\] & (1UL /\* (\_\_cpu\_mask)1 \*/ << \_\_cpu % (64UL /\* 8 \* sizeof (\_\_cpu\_mask) \*/))) != 0 : 0;}), taking true branch.

4. Condition attempts < 2, taking true branch.

 950    while (!CPU\_ISSET(cpu, &taf\->cpu\_set) && attempts < 2) {

5. zero\_return: Function call UtilCpuGetNumProcessorsOnline() returns 0.\[show details\]

CID 1648526: (#1 of 1): Division or modulo by zero (DIVIDE\_BY\_ZERO)

6. divide\_by\_zero: In expression (cpu + 1) % UtilCpuGetNumProcessorsOnline(), modulo by expression UtilCpuGetNumProcessorsOnline() which may be zero has undefined behavior.

 951        cpu = (cpu + 1) % UtilCpuGetNumProcessorsOnline();

 952        if (cpu == 0) {

 953            attempts++;

 954        }

 955    }

 956

 957    taf\->lcpu\[0\] = cpu + 1;

 958    return cpu;

 959}

Actions #1

Updated by Philippe Antoine 8 days ago

  • Status changed from In Progress to In Review
Actions #2

Updated by Philippe Antoine 8 days ago

  • Status changed from In Review to Resolved
Actions #3

Updated by Victor Julien 4 days ago

  • Status changed from Resolved to Closed
  • Priority changed from High to Normal
Actions

Also available in: Atom PDF