Opened 2 years ago

Closed 2 years ago

#6393 closed defect (fixed)

Crash with Intel I9-12900k

Reported by: Basti Owned by:
Priority: Must Have Milestone: Alpha 26
Component: Core engine Keywords:
Cc: Patch:

Description

Reported by Basti on IRC today: http://irclogs.wildfiregames.com/%230ad/2021-11-30-QuakeNet-%230ad.log

11:56 < Basti> hallo, everyone.
11:57 < Basti> i habe problems with 0 ad on a i9 12900k / asus prime z690-p d4 / win 10 pro 64bit
11:58 < Basti> Much to our regret we must report the program has encountered an error.  Please let us know at http://trac.wildfiregames.com/ and attach the crashlog.txt and crashlog.dmp files. You may find paths to these files at https://trac.wildfiregames.com/wiki/GameDataPaths   Details: unhandled exception (std::out_of_range("invalid bitset<N> position"))  Location: unknown:0 (RtlGetAppContainerNamedObjectPath)  Call stack:  (error while dumping stack: No stack
11:58 < Basti> did anyone have an idea?
unhandled exception (std::out_of_range("invalid bitset<N> position"))

Change History (3)

comment:1 by Stan, 2 years ago

Relevant code:

static const size_t os_cpu_MaxProcessors = sizeof(uintptr_t)*CHAR_BIT;


if(AreApicIdsReliable())
    {
        struct NumUniqueValuesInField
        {
            size_t operator()(const ApicField& apicField) const
            {
                std::bitset<os_cpu_MaxProcessors> values;
                for(size_t processor = 0; processor < os_cpu_NumProcessors(); processor++)
                {
                    const ApicId apicId = ApicIdFromProcessor(processor);
                    const size_t value = apicField(apicId);
                    values.set(value);
                }
                return values.count();
            }
        };

        cpuTopology.logicalPerCore  = NumUniqueValuesInField()(cpuTopology.logical);
        cpuTopology.coresPerPackage = NumUniqueValuesInField()(cpuTopology.core);
        cpuTopology.numPackages     = NumUniqueValuesInField()(cpuTopology.package);
    }

Assumption: The I7-12900k has 24 Threads and 16 cores. os_cpu_MaxProcessors is 32.

 24 + 16 = 40 > 32

thus outside of the range.

Other similar reports:

 48 + 24 = 64 > 32
Last edited 2 years ago by Stan (previous) (diff)

comment:2 by Silier, 2 years ago

Priority: Should HaveMust Have

comment:3 by Stan, 2 years ago

Resolution: fixed
Status: newclosed

In r26157:

Remove topology.cpp. The data isn't useful to us, and it prevents some players from running the game. Fixes #6028, #6393 Differential Revision: ​https://code.wildfiregames.com/D4402

Note: See TracTickets for help on using tickets.