# `libs/libcmt/handler.obj` exact-match ledger This atomic lane starts from campaign commit `b831acac`. Before editing it checked the project configuration, parked ledger, all Git refs, worktrees, existing logs, and active object ownership. The unit was genuinely `MISSING`, unparked, absent from all source/history searches, and unowned by another lane. ## Plain-English behavior This object owns the C++ allocation-failure callback used by the CRT. `_set_new_handler` takes the heap lock, replaces the callback, releases the lock, and returns the old callback. `_query_new_handler` returns the currently registered callback. `_callnewh` invokes it with the failed allocation size and returns one when allocation should be tried again, or zero when no handler is installed or the handler declines a retry. The four-byte `_pnhHeap` variable stores the callback. It starts as null in `.bss` and is deliberately shared by all three routines. ## Primary provenance and January inventory The member `obj\i386\handler.obj` was extracted directly from the campaign's XDK 3911 `libcmt.lib`. Its CodeView records identify ordinary Microsoft C++ source: ```text ..\handler.cpp d:\xbox-finalfre\private\sdktools\crt\crtw32\heap\handler.cpp ``` Before source reconstruction, every runtime function and the owned `.bss` symbol in that authentic archive member compared strict-equal to the January split target. Thus the archive is exact source-provenance evidence, not merely a related CRT version. | Symbol | Kind | Bytes | Relocs | Normalized SHA-256 | |---|---|---:|---:|---| | `?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z` | code | 36 | 4 | `1bd9620e21577b86098fe0522b9694109f77e8a70b373f5594178aef7a07adb3` | | `?_query_new_handler@@YAP6AHI@ZXZ` | code | 6 | 1 | `76811197299fd7215ff45276752d25eaa8889353ee70ada1fd839c8a55d34ffc` | | `__callnewh` | code | 27 | 1 | `27149b6cf20a5ba1c8cf7723061c1780ae4f9a6484dc284f7799740a6ab10e80` | | `?_pnhHeap@@3P6AHI@ZA` | `.bss` data | 4 | 0 | `df3f619804a92fdb4057192dc43dd748ea778adc52bc498ce80524c014b81119` | The setter's four relocations are `_lock` at `+0x04`, `_pnhHeap` at `+0x0E` and `+0x15`, and `_unlock` at `+0x1A`. The query and call helper each have one `_pnhHeap` relocation at `+0x01`. Addresses, types, destinations, and addends match independently. The unit owns no `.data` or `.rdata`. ## Experiment record | ID | Readable source shape | Measured result | |---|---|---| | E01 | Typed `_PNH` global, lock-protected setter, direct query, and a local callback followed by the ordinary null-or-false predicate | All three functions and the `.bss` owner matched on the first compile | No alternate spellings were tried because E01 already reproduced every target property. The callback local in `_callnewh` states the semantic requirement that one callback value is tested and then invoked; it is not a register hint. ## Strict verification The `.c` repository filename is compiled as C++ with the same explicit `/TP` object option already used by the adjacent `new.obj` and `delete.obj`. XDK 3911 CL `13.00.9254.1` uses the unchanged libcmt flags `/O1 /Gy /TP` and the normal XDK include path. The hardened comparator reports `section_infos_equal` for all three functions and the four-byte `.bss` owner. Independent COFF inspection confirms three external pick-no-duplicates `.text` COMDATs, the external C++-decorated BSS owner, correct storage classes, and no extra runtime ownership. Compiler `.drectve` and CodeView sections are discardable metadata, not linked runtime data. The final gate record below is filled only from commands run in this isolated lane; historical objects are not accepted as proof. - A forced rebuild of `handler.obj` remained exact, and both `halobetacache_build` and `libcmt_build` completed successfully as part of a clean 560-target build/report run. - Progress credits 356/833 objects overall and 89/212 libcmt objects. Libcmt reaches 136/476 exact functions, 9,212/55,015 exact code bytes, and 3,476/8,637 exact data bytes. - The semantic audit scanned 457 units and 3,573 functions, accepted 3,489 exact functions, and reported zero unit errors. - The admission audit reports no candidate or revocation. Its one contradicted `source/shell/shell_xbox` item is the known pre-existing shell issue and does not involve this unit. - The clean-commit regression snapshot/check and complete tooling-test result are recorded after the object commit, as required by the fail-closed gate. ## House/Berth and bug audit The implementation uses the public `_PNH` type from ``, named lock constant, explicit linkage at the C/C++ boundary, vertically formatted parameters, and explicit returns. It directly states the allocation-handler behavior in readable C++. There is no assembly, `volatile`, forced inlining, undefined behavior, byte forcing, raw structure offset, compiler pragma, alignment trick, opaque codegen cast, comparator exception, or compiler-flag change. Multiple returns in `_callnewh` reflect the target's two distinct success/failure epilogues and make the behavior clearer than a forced accumulator. No original January bug was found, so no bug-preservation comment is required.