test: investigate PCH PDB failure with fixed resource-query controls - #173
Conversation
Exact-source and first Windows record gate inspectedHead The PowerShell record-contract job102345165748 in run34313621181 passed. Downloaded raw artifact10089258207 (408bytes), independently verified SHA256 Source-scope comparison against the exact base confirms byte-identical flags/prefix/compile/prepare/workload/root/save-invoke and underlying RM API function bodies. The new query wrapper and metadata calls are restricted to the explicit investigation mode. Existing default56/private42 collectors/workflows and production code are unchanged. This confirms controlled source scope, not zero timing perturbation. Real-file metadata checks, eight actual compiler fixtures, original ownership matrices, full native/selfhost/package and independent ABBA remain separate gates. No inference about C1041 or existing PR holds is made from this first synthetic success. |
Independent original ABBA completed; all adverse samples retainedExact base All76pairs/19scenarios follow AB/BA/AB/BA. 72/72 instrumented pairs preserve complete counters, breakdowns and compile/link/archive hit-miss. Four external timings-off counter sets are unavailable, not zero. Only the final row uses external elapsed; all other rows use mq b.timings instrumentation (the actual measurement_source value is
The predeclared external paired-median gate (worse by both1ms and10%) is not crossed. However all four external pairs are slower, and pair1 individually is +1.3756ms/+10.3118%. The gate is the median, not a retroactively chosen individual-pair gate; neither does passing it prove zero overhead. Target-scale-single-TU is also slower4/4, and discovery-cold has a +550.034ms adverse tail. Product source and the original benchmark are unchanged in this PR, but no timing root cause has been isolated. No speedup/zero-overhead claim, favorable-sample offset, presumed-noise deletion or same-head rerun. Historical #170 crossing and other cold-tail evidence remain unresolved. This closes only this PR's independent measurement gate. It does not show whether resource queries explain C1041, and does not authorize #170/#172 merge. The eight-case PDB investigation and original matrix/native gates remain separately reviewed. |
Fixed PDB investigation and unchanged ownership regressions auditedExact head
Eight cases in the predeclared alternating order, no repeats. All88original tool results and176stdout/stderr files are present, with pending A work unattempted and original A/B process overlap observed. 24 snapshots /96 native file metadata observations all returned open_error0/identity_error0; A/B PDB and PCH physical identities are distinct at every snapshot, with no identity change observed across the three snapshots of a case. This is a finite observation, not continuous identity or writer authority. 32 RM slots:16attempted queries returned error0 (15empty owner sets, one exact retained MSPDBSRV identity in A-at-request);16disabled slots retain attempted=false,error=null,owners=null. B resource ownership is unobserved in the four rm-on cases; rm-off is deliberately unmeasured and must not be interpreted as a successful empty query. The seven actual-file self-test checks passed, including hardlink equality, missing error2, metadata access with an exclusive data handle, actual data-read sharing error32, and unchanged bytes. The new inputs are not merely smaller successful replacements: exact A/work0 and B/work0+work1 sources in all eight cases are byte-identical to the archived #172 failed PCH Release case. Their argv matches after normalizing only the full case directory. /FS /Zi /O2 /MT /Yucommon.hpp remain, with /bigobj still A-only. The probe/build/host are new, however; this is not replay of the exact historical failing executable/environment. The eight request-to-A-result observations span8644.4153–9204.4327ms including capture/diagnostics, not bounded cancellation latency. Result: C1041 did not recur in this finite query-on/off study. This does NOT identify or exonerate RM as the historical cause, and it does NOT close #172's old failed gate. Both modes include shared metadata snapshots and can perturb schedules. No failed-file snapshots were generated because no study case failed; the post-cleanup failure-copy path is not real-failure-tested here. All historical_cause_resolved/safety-authority fields stayfalse. Exact input and raw archive provenanceStudy artifact 10089495737,4,186,073bytes/580entries,SHA256 Build input artifact 10089445490,1,177,058bytes,SHA256 Independently hashed executable bytes in both input/observer archives and matched source/configuration provenance: MQB1,814,016bytes, Selected tool directory is MSVC14.51.36231/Hostx64/x64; post-case file versions are cl/c1xx/c2 19.51.36256.0, and link/mspdbcore/mspdbsrv 14.51.36256.0. All six file hashes are retained. They are post-case tool-file inventory, not in-flight loaded-module attestation. File tests/observer ran on Windows10.0.26100, image20260824.214.3/PowerShell7.6.5. Separate original matrices at this headDefault #10/34313621117, artifact10089569435 (12,433,461bytes,SHA256 Private #12/34313621161, artifact10089498992 (4,913,785bytes,SHA256 Normal matrix modes were not given investigation snapshots/disabled-query records. Their post-recovery generated binary inventories (734default/529private) are not failure-time snapshots, and binary bytes are excluded from their diagnostic ZIPs. New study success does not retroactively change old-source failed results, and neither mode proves external-writer quiescence. #170/#172 remain held; final tooling merge decision still requires the complete release/self-host/package gate. |
Iviesever
left a comment
There was a problem hiding this comment.
Final review — accept the bounded investigation tool; keep #170 and #172 held
Implementation self-review plus independent read-only raw-artifact/statistics verification, not an independent human approval.
Base c8c8c0172850ff11351b63d5bd1507a7f57ac01e; head 8b93235b534a37a188ca673b7612d8bdd5d34dc1; tree 26c21df19800de6eac2d1597fbfe3998dc1f617f. Native test-merge 2aae2c2022dc2dfb22463bb7e9320554fef389bd has the identical tree and exactly those parents. The reconstructed normalized local tree and all three submitted blob identities match; complete scope is three test/CI files, 480 additions/9 deletions.
Reviewed source keeps product src/include, scheduler, manifest, original benchmark/ABBA and existing default/private collectors/workflows unchanged. Within the modified probe, flags/prefix/compile/prepare/workload/root/result capture and native RM query function bodies are byte-identical to base. New metadata and skipped-query records are confined to explicit investigation mode. New Win32 handles use RAII, metadata-only access, all three sharing flags and no create/truncate access. Each A/B identity pair is simultaneous while queried; handles close before the pair returns. File identity snapshots do not become ownership or quiescence authority.
Completed exact-head gates, first attempt
- Native C++ #713 /34313621122: actual Debug MQB and shared library build, all four paired-subshard jobs, ambient/include/runtime/parameter checks, transitive-library/include-resolution/__has_include freshness, side-output repair and final gate succeeded. Not classifier-skipped.
- Native Release #606 /34313621138: Stage0, all four Release shard jobs, full MQB self-host and validation of the actual runtime-only packaged artifact completed. publish-release skipped.
- Documentation #167 /34313621145, Cross-Stage #190 /34313621148 succeeded.
- PDB investigation #1 /34313621181: ten synthetic record outcomes match; seven actual-file identity/sharing checks succeeded; eight fixed compiler fixtures complete with original A and B success in both query modes. Exact archived binary bytes and provenance checked.
- **Default #10 /34313621117:**56/56complete, all14unmanaged and14direct-drain controls pass. **Private #12 /34313621161:**42/42complete, all14unmanaged controls pass. Original collectors were not weakened.
- Independent Performance #558 /34313621163: actual exact source checkouts, both Release builds, instrumentation check, original observer-OFF19x4ABBA and upload completed. All76pairs recomputed, all72instrumented counters/breakdown/hit-miss identities equal; four external timings-off counter sets remain unavailable.
First record/source inspection, complete19-scenario ABBA, fixed study, original matrices and raw hashes.
What the study does and does not establish
Fixed rm-on/rm-off4pairs used eight fresh PCH Release/A-started/direct-drain fixtures. 4/4original A+B controls pass with queries,4/4without queries; pending A not dispatched, real A/B compiler overlap and original service survival observed.96metadata observations succeeded; all A/B PDB/PCH identities are distinct, with no observed identity change at the three snapshot points. Six selected MSVC tool-file hashes/versions are post-case inventory, not loaded-module attestation. 24workload source/argv comparisons match the historical failed fixture after normalizing only case-directory identity.
16queries were executed (15empty,oneexactA-at-requestserviceidentity);16disabled slots are explicit null/unattempted, not successful empty queries. The native file test actually demonstrated metadata access while a control data handle is exclusive and ERROR_SHARING_VIOLATION32 for the separate control data read; it did not reproduce the compiler's C1041. All88original tool outcomes and176diagnostic files were checked. The failure-file-copy path was not exercised because no new study case failed.
No C1041 recurrence in this fixed budget does not establish its historical cause or exonerate RM. Both modes include new metadata/serialization activity that may perturb scheduling, and this is a new probe/host/build, not replay of the exact #172 failure. Historical missing lock/RPC/OS traces cannot be reconstructed. Do not subtract query/no-query timings or add samples until a favored answer appears. The 8.644–9.204second request-to-result span includes capture/diagnostics and is not a cancellation guarantee.
In separate original matrices, default happened to have no original B failures despite14A-startedservice deaths; private retains three original B failures(C1090/C1051), with14more service deaths. Both favorable and adverse outcomes remain; later recovery compiles do not overwrite originals. Accurate B resource identity is only5/56default and2/42private. Empty snapshots and parent completion are not writer-quiescence evidence.
Performance and retained failures
External timings-off no-op paired median +0.8505ms/+7.1121%, MAD0.35225ms,max+1.3756ms,4/4slower. The unchanged predeclared BOTH>1ms AND>10% median gate is not crossed. This does not prove no cost. Instrumented scale-single-TU is4/4slower,median+22.045ms/+16.82%; discovery-cold median+218.628ms/+12.76%,max+550.034ms. No speedup claim, AA subtraction, noise-based deletion or favorable offset. #170's original crossing and the prior cold-tail record remain open; a lower later number does not resolve them.
No post-PR source correction or same-head CI/benchmark rerun occurred. The pre-PR transcription placeholder was corrected before opening this PR and remains visible in commit history. Local GCC strict syntax checks used declaration-only Win32 shims and were not Windows runtime tests. The actual Windows checks above supply that evidence. The current delivery retains all eight original ZIPs, exact source trees and runnable read-only audit scripts; Actions retention is30days. The archived investigation inputs are not the performance workflow's executable pair. Generated ownership PDB/PCH/OBJ bytes are not archived as failure-time snapshots.
Decision and handoff
Accept ordinary merge with expected head 8b93235b534a37a188ca673b7612d8bdd5d34dc1, under existing protection. Keep VERSION5.5.0; no formal release. This accepts only controlled investigation/record tooling. It does not restore #172's old failed correctness gate, release #170's hold, approve CLI cancellation, complete M1b or permit writer-lease transfer.
Next use the narrowed uncertainty explicitly: a further fixed-budget investigation needs the actual compiler/service file-open or RPC failure status and process/file identity at that event, with trace completeness and a controlled positive failure calibration. Do not add another uninstrumented success-only rerun or treat RM-owner enumeration as that event trace. Any deliberate conflict control must remain separate from natural-drain correctness results. New OS tracing can perturb behavior and cannot manufacture historical missing events. Keep subsequent transaction/build-run/session/residency and VERSION/release stages separate.
Post-merge delivery verification note (no source or CI change)Merge The final offline packaging wrapper initially compared CRLF source-archive checkout bytes directly to LF Git blobs, then its first policy guard expected the equivalent No original source/archive/artifact/benchmark sample was changed, no GitHub CI or benchmark was rerun, and the earlier individual artifact audits remain valid. This is a disclosed local audit-implementation correction, not a product or experiment result correction. The bundle also includes a labeled excerpt of #172's original C1041 diagnostics and source/argv for comparison; it is not presented as a new run or a complete historical artifact. #170/#172 remain held. |
…ed PDB events Accept bounded investigation tooling after exact-tree Native Debug #721, full Release/self-host/package #612, Documentation #173, Cross-Stage #198, original PDB investigation, 40 invocation plus 36 trace contracts, eight fixed invocation traces and four reference traces with native refusal/calibration controls, original default56/private42 and independent ABBA #570. Preserve initial cross-volume correlation failure, ambiguous B child candidates, original outcomes and all adverse timing samples. Six sharing-violation events are coordinator-probe events, not proven compiler failures; historical C1041 and #170/#172 holds remain unresolved. No CLI cancellation, M1b completion, external writer quiescence or lease-transfer authority. VERSION5.5.0 and historical tags/assets/releases unchanged.
Final decision: accept investigation tooling; keep #170 and #172 on HOLD
Final exact-source/execution/evidence review and decision
c8c8c0172850ff11351b63d5bd1507a7f57ac01e(merged test: retain benchmark invocation evidence and fixed AA calibration #171).8b93235b534a37a188ca673b7612d8bdd5d34dc1.26c21df19800de6eac2d1597fbfe3998dc1f617f.2aae2c2022dc2dfb22463bb7e9320554fef389bdhas exactly those parents.Continue #164 with one bounded PCH/PDB-open investigation. #172's original C1041 and #170's historical performance crossing are not explained or waived by this PR. Accepting a controlled observation tool is distinct from approving a held change.
Delivered behavior
Explicit
--pdb-caseruns the unchanged PCH Release/A-started/direct-drain workload with its four Restart Manager queries enabled or disabled. Both modes take identical metadata-only A/B PDB/PCH snapshots before A, after A and after B.FILE_READ_ATTRIBUTES, read/write/delete sharing and OPEN_EXISTING obtain volume+128bit file IDs. A/B handles are simultaneous during a pair comparison, then closed. Native open/query errors and unknown identities remain explicit; disabled RM slots are attempted=false/error=null/owners=null, not successful empty queries. Compatibility observations use ERROR_NOT_SUPPORTED.The collector preserves exact source/binary provenance, complete original argv/stdout/stderr/results, physical identities, query ticks and post-case tool-file hashes. Evidence completeness is separate from original build success. Unproven cleanup or incomplete evidence stops further slots; original compiler failures are never replaced by B's recovery. Failed-case PDB/PCH copying is only after verified outer cleanup, and is not a failure-instant snapshot.
Normal default56/private42 modes keep their original queries and receive no new investigation snapshots. Original direct-drain, fixed24kA/6kB input and /FS /Zi /O2 /MT /Yu with large-A-only /bigobj stay unchanged. No compiler gets a terminating token, no global service kill, no held scheduler fixture or link-cache instrumentation is imported.
API semantics are based on Microsoft CreateFileW, FILE_ID_INFO and RmGetList documentation. They do not establish a C1041 cause. Metadata-only observation and RM queries can perturb timing; finite file identities/empty resource sets do not prove continuous identity, RPC completion or writer quiescence.
Completed evidence
Source/record gate
Fixed study, physical identities, original regressions and raw ZIP hashes
Complete19-scenario independent ABBA with every adverse sample retained
The fixed budget was declared before measurement: four query-on/off pairs/eight cases, on-first for odd pairs, off-first for even pairs. No repeated slot or adaptive budget. 4/4original A+B controls pass in each mode, original server survives, pending A suppressed, actual A/B compiler overlap observed. All88original tool results/176diagnostic files inspected.96metadata calls succeed, A/B PDB/PCH identities are distinct across24snapshots; no identity change observed at those finite points.16RM queries return error0 (15empty,oneA-at-requestserviceidentity);16disabled slots stay unknown/unattempted. Original A/B workload bytes and normalized argv match the historical failed fixture in all24comparisons.
C1041 was not observed in these eight new cases; its historical cause remains unresolved. This is not the historical #172 failing executable/host. Both modes contain new metadata observation. Native ticks express order within a process, not a documented portable duration unit. Tool hashes are post-case files, not loaded-module attestation. The post-cleanup failed-file-copy path was not exercised because no new study case failed.
Original regressions keep all28A-started managed-service deaths. Default happened to have all original B builds succeed despite14service deaths; private retains three original B failures(C1090/C1051) despite successful later recovery. Neither favorable results nor green collection authorizes service termination or lease transfer. Resource identity appears only5/56default and2/42private.
Performance and unchanged acceptance discipline
Independent original19x4ABBA measured exact PR base/head with observer OFF.72instrumented pairs retain complete counters/breakdown/hit-miss; four external timings-off counter sets are unavailable. External no-op paired median +0.8505ms/+7.1121%, MAD0.35225ms,max+1.3756ms,4/4slower. The predeclared median gate (worse by both1ms and10%) is not crossed. No zero-cost/speedup claim: scale-single-TU is4/4slower,median+22.045ms/+16.82%; discovery-cold tail+550.034ms. All rows and unfavorable/favorable samples retained, no AA subtraction/noise-based deletion. Four-pair P95 is the maximum, not a population-tail estimate. #170's crossing and historical cold-tail debt remain open.
Original predeclared gates are unchanged: full exact-source native/selfhost/package and applicable docs/Cross-Stage;10synthetic plus7actual-file checks; eight complete fixed investigation records with typed missing evidence/original outcomes; original default56/private42 positive controls; independent19x4ABBA and all72semantic identities with the same median threshold. All applicable tooling gates passed. Study success never automatically approves #172/#170.
No post-PR source correction or same-head CI/benchmark rerun occurred. A pre-PR transfer placeholder correction remains in history. Local strict GCC checks used declaration-only Win32 shims, not MSVC runtime. All eight raw ZIPs, exact source trees, original samples and read-only audit scripts are separately retained; Actions retention30days. Investigation inputs are not the performance workflow's executable pair. Title changed only after actual#558 completed; later skipped perf jobs do not replace that measurement.
Handoff
Accept ordinary expected-head merge under protection. Keep #170 and #172 held, M1b incomplete and safety fields false. Next focused work needs the actual file-open/RPC failure status with process/file identity at the event, trace-completeness checks and a separately labeled controlled positive failure—not another uninstrumented success-only rerun. Historical missing traces cannot be fabricated. Snapshot/event observers may themselves perturb behavior.
No CLI cancellation, project transaction, build/run/session/residency, owner-crash recovery, external writer authority or formal release is included. Final VERSION/release remains separate.