This Trac instance is not used for development anymore!

We migrated our development workflow to git and Gitea.
To test the future redirection, replace trac by ariadne in the page URL.

Opened 3 years ago

Closed 3 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, 3 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:

 24 + 48 = 64 > 32
 24 + 48 = 64 > 32
Version 0, edited 3 years ago by Stan (next)

comment:2 by Silier, 3 years ago

Priority: Should HaveMust Have

comment:3 by Stan, 3 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.